2017-06-27 24 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バージョンのコードを作成した場合、データの並列化によってより多くのバッチに対応できると思いました。私は64のバッチサイズでそれぞれ4つのGPUSを使用することを望んでいたが、私はメモリの問題を直面している。私は64とのみ4​​ GPUのバッチサイズを使用した場合のいずれかのケースのためのより多くのGPUを使用した上で32のバッチサイズを使用しているとき、私は次のエラーを取得するデータ並列化のための2のGPUを使用することができる午前:

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

グーグルでは、GPUのメモリが不足しているときにこのエラーが発生することがわかりました。なぜこれが起こっているのか分かりません。私は自分のマシンにそれぞれ12ギガのメモリを搭載した8つのnvidia titanカードを持っています。なぜ私は64のバッチサイズを1つのGPUに収めることができるのか理解していないので、2つ以上のGPUSに同じバッチサイズの64を収めることができません。なぜメモリが飽和しているのですか?使用されているGPUSの数が増えると増加するオーバーヘッドはありますか?

答えて

1

は、可変範囲が欠落することがチュートリアルで指定されるように、私はname_scopeを使用していループ

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

     for i in xrange(FLAGS.num_gpus): 

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

の前に定義することができます。私はあなたがvariable_scopeでname_scopeを置き換えなければならないと言っていない限り、範囲を見落としていませんか? –

関連する問題