繁体   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