私はUbuntuとGPUを初めて使用し、最近、Ubuntu 16.04と4つのNVIDIA 1080ti GPUを備えた新しいPCをラボで使用しています。このマシンにはi7 16コアプロセッサも搭載されています。
基本的な質問がいくつかあります。
GPU用にTensorflowがインストールされています。では、GPUの使用が自動的に優先されると思いますか?もしそうなら、それは4つすべてを一緒に使用しますか、それとも1つを使用し、必要に応じて別のものを採用しますか?
モデルのトレーニング中にGPUの使用/アクティビティをリアルタイムで監視できますか?
これは基本的なハードウェアに関するものだと私は完全に理解していますが、これらの特定の質問に対する明確な決定的な回答が素晴らしいでしょう。
編集:
この出力に基づくと、これは実際に、GPUのそれぞれのほぼすべてのメモリが使用されていることを示していますか?
Tensorflowは自動的にすべてのGPUを利用するわけではなく、1つのGPUのみを使用します。具体的には最初のGPU /gpu:0
利用可能なすべてのgpusを利用するには、マルチgpusコードを記述する必要があります。 cifar mutli-gpuの例
0.1秒ごとに使用状況を確認する
watch -n0.1 nvidia-smi
tf.device
グラフ内のディレクティブ(詳細については ここ )。nvidia-smi
。ただし、top
または他の同様のプログラムとは異なり、現在の使用状況のみが表示され、終了します。コメントで提案されているように、watch -n1 nvidia-smi
プログラムを継続的に(この場合は1秒ごとに)再実行します。上記のすべてのコマンドはwatch
を使用します。builinルーパーnvidia-smi -l 1
を使用して、コンテキストを有効に保つ方がはるかに効率的です。
htop
とnvidia-smi
のようなものを同時に表示したい場合は、 glances (pip install glances
)を試してください。
GCPを使用している場合は、StackDriverでGPU使用率を監視できるこのスクリプトをご覧ください。また、nvidia-smi -l 5
コマンドを使用してnvidia-smiデータを収集し、それらの統計を追跡して追跡できるようにすることもできます。
https://github.com/GoogleCloudPlatform/ml-on-gcp/tree/master/dlvm/gcp-gpu-utilization-metrics