簡體   English   中英

使用tf.slim進行多GPU訓練比單GPU花費更多的時間

[英]Multi-GPU training using tf.slim takes more time than single GPU

我正在使用tf.slim的train_image_classifier.py腳本在CIFAR10數據集上微調ResNet50:

python train_image_classifier.py \                    
  --train_dir=${TRAIN_DIR}/all \                                                        
  --dataset_name=cifar10 \                                                              
  --dataset_split_name=train \                                                          
  --dataset_dir=${DATASET_DIR} \                                                        
  --checkpoint_path=${TRAIN_DIR} \                                                      
  --model_name=resnet_v1_50 \                                                           
  --max_number_of_steps=3000 \                                                          
  --batch_size=32 \                                                                     
  --num_clones=4 \                                                                      
  --learning_rate=0.0001 \                                                              
  --save_interval_secs=10 \                                                             
  --save_summaries_secs=10 \                                                            
  --log_every_n_steps=10 \                                                                 
  --optimizer=sgd  

對於3k步,在單個GPU(Tesla M40)上運行大約需要3,000萬,而在4個GPU上運行則需要50+ mn。 (兩種情況下的准確性相似:〜75%和〜78%)。

我知道在多GPU設置中出現延遲的一個可能原因是加載圖像,但是在tf.slim的情況下,它將使用CPU。 關於可能是什么問題的任何想法? 謝謝!

  1. 將num_clones設置為使用多GPU時,您將不會更快。 因為slim將訓練每個GPU中拆分的batch_size * num_clones數據。 之后,通過div num_clones計算每個損失並求和。 https://github.com/tensorflow/models/blob/master/research/slim/deployment/model_deploy.py
  2. 當CPU成為瓶頸時,輸入管道無法為火車提供大量數據。 然后當設置num_clones = 4時,您將獲得4倍的慢速。( https://www.tensorflow.org/performance/performance_guide

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM