0

GPU(Nvidia GeForce GTX Titan X)とTensorflow 0.6を備えたNvidia Digits Boxを使用してニューラルネットワークをトレーニングしていますが、すべてが機能しています。しかし、Volatile GPU Utilusingを確認するnvidia-smi -l 1と、わずか 6% であり、Tensorflow を実行するプロセスの CPU 使用率が約 90% であることから、ほとんどの計算は CPU で行われていると思います。その結果、トレーニング プロセスが非常に遅くなります。トレーニング プロセスを高速化するために、CPU の代わりに GPU を最大限に活用する方法はあるのでしょうか。ありがとう!

4

1 に答える 1

3

どこかにボトルネックがあると思われます (この github issueのように) -- GPU 実装を持たない操作があるため、CPU に配置され、データ転送のために GPU がアイドル状態になっています。たとえば、最近までreduce_meanGPU に実装されておらず、それ以前は GPU にRank実装されておらず、暗黙のうちに多くの op で使用されていました。

ある時点で、 CPU に配置された op があったため、 full_connected_preloaded.pyからのネットワークが遅くRankなり、各ステップで GPU から CPU へのデータセット全体の転送がトリガーされることがわかりました。

reduce_prodこれを解決するには、まず 0.8 にアップグレードすることをお勧めします。これは、GPU用 (整数入力reduce_meanなど)にいくつかの操作が実装されているためです。

次に、でセッションを作成し、log_device_placement=TrueCPU または GPU に、ステップごとに過剰な転送を引き起こす ops が配置されているかどうかを確認できます。

parse_exampleGPU 実装を持たない入力パイプライン ( など) には多くの場合、with tf.device("/cpu:0"):ブロックを使用して入力パイプライン全体を CPU に固定することが役立つ場合があります。

于 2016-04-30T04:16:26.353 に答える