2015-12-23 11 views
6

CIFAR-10チュートリアルでは、変数がCPUメモリに配置されていることがわかりましたが、cifar10-train.pyには1つのGPUでトレーニングされています。CPUの変数、GPUのトレーニング/グラジエント

私はかなり混乱しています.. GPUに格納されているレイヤー/アクティベーションはありますか?あるいは、グラジエントはGPUに保存されていますか?それ以外の場合は、CPUに変数を格納するとGPUをまったく使用しないように見えます。すべてがCPUメモリに格納されているため、CPUのみが順方向/逆方向伝播に使用されます。

f/bの伝播にGPUを使用した場合、レイテンシのデータがシャフリングされているため、無駄になりませんCPU < - > GPU?

答えて

5

実際、cifar10-trainでは、アクティベーションとグラジエントはGPU上にあり、パラメータはCPU上にのみあります。あなたは、CPUとGPUの間でパラメータをコピーするコストのために、これがシングルGPUトレーニングに最適ではないことは間違いありません。マルチGPUの場合のように、シングルGPUとマルチGPUモデル用に単一のライブラリを用意することがこの方法で行われた理由は疑いがありますが、CPU上にパラメータを置く方が高速かもしれません。すべての変数をGPUに移動することで、どのスピードアップを簡単にテストできますか?cifar10.pyの "_variable_on_cpu"の "with tf.device( '/ cpu:0')"を削除してください。