2017-06-27 82 views
1

我創建了以下在本系列教程tensorflow 1.2.0多GPU的培訓體系: https://github.com/tensorflow/tensorflow/blob/r0.10/tensorflow/models/image/cifar10/cifar10_multi_gpu_train.pytensorflow多GPU訓練

創建多GPU版本之前,我能夠在單一GPU貼合的64批次大小。我想如果我在上面的教程之後創建了一個多GPU版本的代碼,我可以通過數據並行化來適應更多的批處理。我希望使用4個GPUS,批量大小爲64,但是我面臨內存不足的問題。我只能使用32批次大小在使用的64批次大小隻有4個GPU時使用2個GPU的並行數據使用多個GPU的兩種情況,我得到以下錯誤:

tensorflow.python.framework.errors_impl.InternalError: Dst tensor is not initialized. 

在一些Google上,我發現這個錯誤發生在GPU內存不足時。我不明白爲什麼會發生這種情況。我的機器上有8個nvidia泰坦卡,每個卡都有12個內存。我不明白爲什麼當我可以在一個GPU上適合64位的批處理大小時,我不能在兩個以上的GPUS上適應64位的同一批處理大小。爲什麼記憶變得飽和?在增加正在使用的GPUS數量時是否會增加一些開銷?

回答

1

可以是它缺少變量範圍在環路

with tf.variable_scope(tf.get_variable_scope()): 

     for i in xrange(FLAGS.num_gpus): 

      with tf.device('/gpu:%d' % i): 
+0

我使用的name_scope如在教程中指定的前定義。我不會錯過範圍,除非你說我應該用variable_scope替換name_scope? –