本記事は the sense アドベントカレンダー2021の7日分です!
本記事を書くにあたった経緯
2月に Winsows Insider Preview Dev Channel で Docker に GPU を認識させました。
それ以降、 Windows の更新に伴って定期的に実行環境が動かなくなり、その都度 Windows のクリーンインストールを繰り返していました。 2021/12/02 に例によって Docker エンジンが立ち上がらなくなり、クリーンインストールをかけました。その際、ついに Windows 安定版でも Docker コンテナに GPU が認識されたので手順、環境を記事にしておきます。
実行環境
ハードウェア
GPU 、マザーボードあたりは動作が依存していると思います。
項目 | 型番 |
---|---|
CPU | Ryzen 7 5800X |
メモリ | CMK64GX4M2E3200C16 |
GPU | GeForce RTX 3070 VENTUS 2X OC |
マザーボード | B450 GAMING PLUS MAX |
ソフトウェア
項目 | バージョン |
---|---|
BIOS | 7B86vHA |
Windows | 21H2(22000.348) |
NVIDIA グラフィックスドライバー | 510.06 |
Windows Subsystems for Linux Update | 5.10.60.1 |
Windows Subsystems for Linux WSLg Preview | 1.0.26 |
Docker Desktop | 4.2.0 |
手順
WSL2のインストールと設定
Microsoft Store で Ubuntu 20.04 LTS をインストールします。
インストール後、 Ubuntu 20.04 LTS を起動してユーザ名、パスワードの設定まで行います。
Windows の Powershell などで次を実行して「仮想マシンプラットフォーム」を有効にします。「Windows の機能の有効化または無効化」からでも有効化できます。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
実行後再起動します。「Windows の機能の有効化または無効化」からの場合は再起動するか聞かれます。
NVIDIA Driver のインストール
developer.nvidia.com のページから NVIDIA Driver のインストーラをダウンロードします。
インストーラで「高度な設定」を選んで必要なドライバ以外(一番上のチェックを外せないもの以外全部)のチェックを外さないと余計な NVIDIA のソフトウェア(サウンドドライバなど)がインストールされるので注意してください。
Docker Desktopのインストールと設定
Docker Desktop for Windowsのインストーラをダウンロードしてきてインストールします。 winget にもあるのでそちらでも大丈夫です。
Docker Desktopを起動して 右上のアイコンの設定 > Resources > WSL Integration と進みます。
Enable integration with my default WSL distro のチェックボックスは初期状態でONになっています。
Enable integration with additional distros: の下にあるトグルスイッチをONにしてWSL Integratioを有効化します。この記事の手順だと Ubuntu-20.04 だけがあるはずです。
動作確認
ベンチマークテストです。問題なく動けば環境構築は完了です。
docker run --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 --gpus all --rm -it nvcr.io/nvidia/tensorflow:21.08-tf2-py3
まとめ
- Windows 安定版で Docker が GPU を認識してくれるようになっている
- 必要な手順は基本的にこれまでと変わらない
参考記事