Python 使用tf.slim进行多GPU训练比使用单个GPU花费更多时间

Python 使用tf.slim进行多GPU训练比使用单个GPU花费更多时间,python,tensorflow,gpu,multi-gpu,tf-slim,Python,Tensorflow,Gpu,Multi Gpu,Tf Slim,我正在使用tf.slim的脚本对CIFAR10数据集上的ResNet50进行微调: 对于3k步骤,在单个GPU(特斯拉M40)上运行此步骤大约需要30mn,而在4个GPU上运行则需要50+mn。(两种情况下的准确率相似:~75%和~78%) 我知道在多GPU设置中延迟的一个可能原因是加载图像,但在tf.slim的情况下,它使用CPU进行加载。你知道会是什么问题吗?谢谢大家! 如果将num_克隆设置为使用多gpu,则不会加快速度。因为slim将训练批处理大小*num\u克隆在每个GPU中分割的数据

我正在使用tf.slim的脚本对CIFAR10数据集上的ResNet50进行微调:

对于3k步骤,在单个GPU(特斯拉M40)上运行此步骤大约需要30mn,而在4个GPU上运行则需要50+mn。(两种情况下的准确率相似:~75%和~78%)

我知道在多GPU设置中延迟的一个可能原因是加载图像,但在tf.slim的情况下,它使用CPU进行加载。你知道会是什么问题吗?谢谢大家!

  • 如果将num_克隆设置为使用多gpu,则不会加快速度。因为slim将训练批处理大小*num\u克隆在每个GPU中分割的数据。之后,按div num_克隆计算每个损失,并将总损失相加。()
  • 当CPU成为瓶颈时,输入管道无法为列车生成如此多的数据。当设置num_clones=4时,您将获得4倍的速度。()

  • 时间线将有助于确定性能瓶颈。时间线的使用:@YaoZhang我通过nvidia smi跟踪GPU的使用情况,在90%左右的速度下,所有4个GPU都在使用,然后是0%的瞬间,在整个培训过程中都是这样。如果你提出一个问题,说明在这种情况下可以做些什么来加快培训,这是最好的回答?谢谢。@Anas先找到瓶颈。看看我贴的第二个链接。我现在正在学习使用时间线来分析。你也可以试试。
    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