デバイス配置ログをオンにしてcifar10_multi_gpu_train.py
スクリプトを実行していますが、すべての操作がCPUに配置されていることがわかります。 実行すると、次のように出力されます。
Filling queue with 20000 CIFAR images before starting to train. This will take a few minutes.
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 8
I tensorflow/core/common_runtime/direct_session.cc:45] Direct session inter op parallelism threads: 8
Device mapping: no known devices.
I tensorflow/core/common_runtime/direct_session.cc:111] Device mapping:
softmax_linear/biases/ExponentialMovingAverage: /job:localhost/replica:0/task:0/cpu:0
I tensorflow/core/common_runtime/simple_placer.cc:289] softmax_linear/biases/ExponentialMovingAverage: /job:localhost/replica:0/task:0/cpu:0
.....
.....
Device mapping: no known devices.
の行には、現在のセッションに関連付けられているデバイスがリストされていると思いますが、なぜデバイスがないのですか? スクリプトは
tf.device('/gpu:0')
。
私のGPUはNvidiaGeForce GTX970です。
これを解決しました。
「--config = cuda」フラグなしで誤ってpythonパッケージをビルドしたに違いありません。 このフラグを使用して再構築し、pipでアンインストールされたテンソルフローを再構築し、新しく構築されたパッケージで再インストールすると、完全に機能しました。
デバイス配置ログをオンにしてcifar10_multi_gpu_train.pyスクリプトを実行しているときにも、同じ問題が発生しました。 「「--config = cuda」フラグなしで誤ってPythonパッケージをビルドしたに違いない」とはどういう意味かわかりませんが、どのPythonパッケージを再構築したかわかりますか?
@ GuangmingZhu 、TensorFlowのダウンロードとセットアップページで、pipパッケージをビルドするコマンドは次のようになります。
bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
--config=cuda
を忘れてしまいました。
最も参考になるコメント
これを解決しました。
「--config = cuda」フラグなしで誤ってpythonパッケージをビルドしたに違いありません。 このフラグを使用して再構築し、pipでアンインストールされたテンソルフローを再構築し、新しく構築されたパッケージで再インストールすると、完全に機能しました。