🐳
WSL2上のDockerでGPUを使う
目的
以前に WindowsでもサクサクDocker (Docker on WSL2 without Docker Desktop) という記事を公開していますが、WSL上のDocker環境でGPUを使うための設定を追記します。
内容
WSL上のDocker環境でGPUを使えるようにします。
概要は下記になります。
- GPUドライバのインストール
- NVIDIA Container Toolkitのインストール
- コンテナランタイムの構成
- 動作確認
方法
GPUドライバのインストール
まずはWindows側で最新のGPUドライバをインストールしてください。
公式サイト から最新のドライバをダウンロードしてインストールしてください。
NVIDIA Container Toolkitのインストール
続いてWSL内でNVIDIA Container Toolkitをインストールします。
WSL上で以下のコマンドを実行してください。
NVIDIA Container Toolkitのインストール
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
【参考】
コンテナランタイムの構成
続いてWSL内でコンテナランタイムの構成を行います。
WSL上で以下のコマンドを実行して設定を行ったあと、Dockerを再起動します。
コンテナランタイムの構成
# コンテナランタイムの構成
sudo nvidia-ctk runtime configure --runtime=docker
# dockerの再起動
sudo systemctl restart docker
【参考】
動作確認
最後に動作確認を行います。
WSL上で以下のコマンドを実行します。
動作確認
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
上記のコマンドはNVIDIAの公式イメージをGPU付きで実行し、コンテナ上で nviia-smi
コマンドを実行しています。
以下のような出力が行われ、GPUを認識していれば成功です。
(Driver Version, CUDA VersionはWindowsで入れたドライバーのバージョンが表示されます)
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.76.01 Driver Version: 552.22 CUDA Version: 12.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 RTX 3080 On | 00000000:01:00.0 On | N/A |
| 30% 32C P8 15W / 320W | 1005MiB / 10240MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 52 G /Xwayland N/A |
+-----------------------------------------------------------------------------------------+
Discussion