以前に、Docker Desktop for Windows があれば、簡単にコンテナでGPU使ったCUDAが使えるようになった!という記事を書きました。つい最近、環境を再構築してみたら少々手間取ったので情報を更新したいと思います。
以前の記事は -> Docker DesktopでGPUを使う でした。
必要なもの
以下の環境で動作確認をしています。組み合わせには相性があるようなので注意してください。基本的に新しい環境で揃えておくのが無難とは思います。
- Windows11 23H2 (64bit) / WSLバージョン 2.2.4.0
- Docker Desktop for Windows / バージョン 4.32.0
- NVIDIA ドライババージョン 561.09 (DCH)
CUDAが使えるコンテナ
以前はNVIDIAが配布しているPyTorchなどが使えるコンテナを紹介していましたが、今は Docker Hubで公開しているもので CUDA が使えるものがあります。
基本的に nvidia/cuda:(バージョン)-(構成)-(OS種別) のような命名ルールで公開されているようです。devel はツールも含められている環境のようなので作業用には一番都合が良さそうです。いくつか抜粋して記載すると
- nvidia/cuda:
- 12.6.1-devel-ubuntu24.04
- 12.2.2-devel-ubuntu22.04
- 11.8.0-devel-ubuntu22.04
このようにCUDAのバージョンもそろっているので都合のよいものが見つけられるのではないでしょうか。
コンテナを起動するには、以下のようなコマンドで行います。コンテナ内でGPUを認識していることを確認するため、nvidia-smi コマンドを実行しています。
docker run -it --gpus=all --rm nvidia/cuda:12.6.1-devel-ubuntu24.04 nvidia-smi
実行すると以下のような情報が表示されます。GPUをコンテナの中から使えないと、このような表示を見ることはできません。
ドライバが古いと失敗する
ドライババージョンが 546.33 の場合では、今回紹介する失敗ケースに出遭いました。以下のようなエラーメッセージで、コンテナ内からGPUが認識できないような文言でした。
WSL environment detected but no adapters were found: unknown.
このような場合にはドライバやDocker Desktopのバージョンを確認してみて、同時期のバージョンに合わせるか、新しいものに更新するなどを検討してよさそうと考えます。
まとめ
今もDocker Desktop for Windowsがあれば、ホスト環境に CUDA Toolkit などの準備は不要で、コンテナ環境では CUDA が使えるという状況を確認できました。使用するコンテナも以前より選べるようになり、ますます便利になっていると感じました。
WSL2のUbuntuでCUDAを使うというのも可能で、そちらの場合では WSL2 Ubuntu環境にCUDA実行用のセットアップが必要となります。 Docker Desktop との組み合わせであれば、ホスト環境のセットアップを省略できる点は、とても楽だと私は感じます。
コメント