GCP
でテスラGPUを使用して仮想マシンを実行しています。そして、PyTorch
ベースのアプリをデプロイして、GPUで高速化してみてください。
DockerにこのGPUを使用させ、コンテナからアクセスできるようにしたいと考えています。
ホストマシンにすべてのドライバーをインストールできましたが、アプリは正常に実行されますが、Docker(nvidia/cudaコンテナーに基づく)で実行しようとすると、pytorchが失敗します。
File "/usr/local/lib/python3.6/dist-packages/torch/cuda/__init__.py", line 82,
in _check_driver http://www.nvidia.com/Download/index.aspx""")
AssertionError:
Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from
コンテナーに表示されるnvidiaドライバーに関する情報を取得するには、次のコマンドを実行します。
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
しかしそれは不平を言います:docker: Error response from daemon: Unknown runtime specified nvidia.
ホストマシンnvidia-smi
出力は次のようになります。
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01 Driver Version: 440.33.01 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla P100-PCIE... On | 00000000:00:04.0 Off | 0 |
| N/A 39C P0 35W / 250W | 873MiB / 16280MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
Dockerでランタイムを確認すると、runc
ランタイムのみが取得され、インターネット上の例のようにnvidia
は取得されません。
$ docker info|grep -i runtime
Runtimes: runc
Default Runtime: runc
このnvidia
ランタイム環境をドッカーに追加するにはどうすればよいですか?
これまでに見つけたほとんどの投稿と質問には、「Dockerデーモンを再起動するのを忘れた、うまくいった」などとありますが、それは私には役に立ちません。誰がやればいいの?
私はgithubで多くの問題を確認しました #1 、 #2 および # StackOverflowの質問-助けにはなりませんでした。
必要なnvidia
ランタイムはnvidia-container-runtime
。
こちらのインストール手順に従ってください:
https://github.com/NVIDIA/nvidia-container-runtime#installation
基本的に、パッケージマネージャーが存在しない場合は、最初にインストールします。
Sudo apt-get install nvidia-container-runtime
次に、それをdockerランタイムに追加します。
https://github.com/nvidia/nvidia-container-runtime#daemon-configuration-file
このオプションは私にとってうまくいきました:
$ Sudo tee /etc/docker/daemon.json <<EOF
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
EOF
Sudo pkill -SIGHUP dockerd
追加されたことを確認します。
$ docker info|grep -i runtime
Runtimes: nvidia runc
Default Runtime: runc