WindowsにおけるGPUの環境構築
はじめに
Windows10 November 2021 Update(version 21H2)が配信されたため、
Windows Inseider Programを申し込まずともWSL2を利用できるようになりました。
本記事では、Windows HomeのユーザがWSL2を利用したDocker Desktopを用いて
GPUが利用できる環境を構築することを目指します。
本記事は以下を参考にしてます。
NVIDIAの@_ksasakiさんが書いているため、本記事よりもより詳しい説明が記載されています。
Windows10 Update
まず、Windows10をverion21H2に更新します。
配信から一ヶ月以上(記事作成時点)経っているので、おそらくこの作業については
終えている方も多いと思いますが、以下を行い、一応バージョンを確認してください。
-
[Win] + [R]
で"ファイル名を指定して実行"を起動させる。 -
winver
と入力し、"OK"を押す。 - "Windowsのバージョン確認"が表示されるのでバージョンを確認する。
自分の環境が"バージョン 21H2"であれば更新作業は不要です。
そうでない方はWindows10の更新を行ってください。
ここで躓いた方は、以下が参考になると思います。
WSL2の導入
以前では、
- 設定でWSLと仮想マシンプラットフォームを有効にする。
- WSL2用のLinuxカーネルのダウンロードとインストール
- WSL2をデフォルトに設定する。
等が必要でしたが、現在ではコマンド一つでWSL2を導入できます。
管理者権限で開いたPowerShellで以下を実行します。
> wsl --install
次に、WSL2が有効になっているかを確認します。
> wsl --status
ここで既定のバージョンが2でなければ、以下を実行します。
> wsl --set-default-version 2
WSLのコマンドについては以下を参照してください。
NVIDIA drivers for WSLのインストール
ホスト環境にNVIDIA Driverを入れましょう。
以下のページのGet CUDA Driver
ボタンを押し、GeForce DriverかQuadro Driverのいずれかを
ホスト環境に合わせてダウンロードしてください。
途中ログインを求められますが、アカウントがない方は作成して続けてください。
インストールはすべてデフォルトの設定で行っても問題ないと思います。
Docker Desktop for Windowsのインストール
次にDocker Desktopを入れます。
インストールの際に注意したいのが、Configurationで以下のように、
必ずWSL2 バックエンドのオプションにチェックを入れてインストールしてください。
- Install required Windows components for WSL 2
インストールが終了したらPowerShellで以下を確認してください。
> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
docker-desktop Running 2
docker-desktop-data Running 2
STATE
等は少し異なるかもしれませんが、docker-desktop
やdocker-desktop-data
が
VERSION 2
となっていれば問題ありません。
Dockerでコンテナ起動
WSL2のUbuntuからDockerを使用してGPUが利用できる環境を構築します。
一例として、次のコマンドを実行してコンテナを起動します。
$ docker run --shm-size=1g \
--ulimit memlock=-1 \
--ulimit stack=67108864 \
--gpus all \
-p 8888:8888 \
-it nvcr.io/nvidia/tensorflow:21.08-tf2-py3
コンテナが起動したらnvidia-smi
コマンドを実行してみてください。
以下のようにGPUが認識されていることが確認できると思います。
# nvidia-smi
Mon Dec 20 07:41:48 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.50 Driver Version: 471.21 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:09:00.0 On | N/A |
| 40% 34C P8 16W / 184W | 991MiB / 8192MiB | ERR! Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
まとめ
以上で、WSL2を用いたGPU環境の構築ができたかと思います。
GPUを利用すれば機械学習などの作業をより速く行うことができます。
また、あらかじめDockerfile
やdocker-compose.yml
を作成することで、どこでも同様の環境を構築できるため、ぜひドキュメント等を参照しながら自分好みの環境を構築してみてください。
参考資料
Discussion