エラー内容
$ sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
~ 省略 ~
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"process_linux.go:432: running prestart hook 0 caused \\\"error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: requirement error: unsatisfied condition: cuda>=11.0, please update your driver to a newer version, or use an earlier cuda container\\\\n\\\"\"": unknown.
はじめに
エラー文を全部読まず脳死でコピペしてしまった自分に対する戒めです.
こんな簡単なエラーを脳死でググっているようでは一行に成長しませんね.反省しかありません.
(ご丁寧にどうすればいいのかすら書いてくれているので優しいエラー文...)
ホスト環境
- Ubuntu18.04
- Docker 19.03
結論
現在インストールされているNVIDIAドライバーのバージョンが低いためCUDA11.0以上に対応していないことが原因です.
nvidia-smi
を叩いてCUDA Versionの欄が11.0以上でないといけません.
また,
vidia-container-cli: requirement error: unsatisfied condition: cuda>=11.0, please update your driver to a newer version, or use an earlier cuda container
と出力してくれていて,エラー文を全部読まずにGoogleに投げてしまう癖を直さないといけないなと再確認しました.
上記から,NVIDIAのドライバーを最新にしましょう.
普段,ホストマシーンはCUDAのバージョンが10.0だったためこのようなドライバーとCUDAの整合性でエラーがでることがなかったので,良い機会ですのでドライバーの再インストールの手順も一応残しておきます.
また,私は直接runファイルを手動で実行してインストールしているため,aptを使って入れている方はaptの手順に従ってアップグレードしたら大丈夫だと思います.
再インストール手順
今回は,最新のドライバーがCUDA 11.0以下に対応しているためnvidia-smi
を叩いてCUDA Versionが11.0にすることを目指します.
-
sudo nvidia-uninstall
でドライバーのアンインストールをする. - 再起動する
- 最新のドライバーを公式サイトから取得する.(ここではNVIDIA-Linux-x86_64-450.80.02.runがダウンロードされたとします.)
-
sudo bash NVIDIA-Linux-x86_64-450.80.02.run
でドライバーをインストールする. - 再起動する
まとめ
プログラムを書いているときも,初めて見るエラー文は少し読んでとりあえず先人の知恵を使おう精神ですぐ検索してしまうことが多いので,これからはしっかりエラー文を読むように心がけたいと思います.
また,最近になって,遅ればせながらDockerを使ってコンテナ上でGPUを使えるようにしたんですが,もっと早くしておけばよかったです.