Windows11 WSL2 Ubuntu 24.04 LTS Docker miniconda3
Docker コンテナ miniconda3
continuumio/miniconda3 イメージを利用して miniconda3 GPU コンテナを構築します。
win11 + wsl2 + Ubuntu 2404 + docker + GPUコンテナ + continuumio/miniconda3
参考サイト
win11+WSL+Docker Desktop(GPU container)+miniconda+intel MKLで環境構築
continuumio/miniconda3
【備忘録】WSL2とDockerでGPU + Miniconda環境を構築
Doker GPU 環境を整える
Doker で GPU を使用できる環境を整えます。
- wsl2 Ubuntu のインストール
Windows11 WSL2 Ubuntu 概要
Windows11 WSL2 Ubuntu 24.04 LTS 概要
を参考にして Windows11 WSL2 Ubuntu 24.04 LTS をインストールしてください。 - Doker CE のインストール
Docker CE インストール概要
を参考にして Windows11 WSL2 Ubuntu 24.04 LTS に Docker CE をインストールしてください。 - GPU ドライバのインストール
WSL2 Ubuntu の場合 GPU ドライバのインストールは Windows の中にインストールするのでした。
WSL2 Ubuntu Python GPU 環境
を参考にして GPU ドライバをインストールしてください。
インストールされているかは
yamada@yama:~$ nvidia-smi
で確認できます。
私の場合、しばらく放置していたら
536.40 → 581.29
にアップデートされていました。
かなり頻繁に変更されているようです。
対応をお薦めします。yamada@yama:~$ nvidia-smi [結果] Sat Sep 13 18:04:26 2025 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 580.82.10 Driver Version: 581.29 CUDA Version: 13.0 | |-----------------------------------------+----------------------+----------------------+ | 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 GTX 1650 On | 00000000:01:00.0 On | N/A | | 32% 52C P0 N/A / 75W | 508MiB / 4096MiB | 1% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | 0 N/A N/A 22 G /Xwayland N/A | +---------------------------------------------------------------------------------------+CUDA Version:13.0 でした。
これはメモしておきます。
確認の場面で使用します。 - CUDA Toolkit のインストール
CUDA Toolkit のインストール
を参考にして CUDA Toolkit をインストールします。
CUDA は最新版を入れてしまうと旧版でないと動かない Python パッケージに遭遇することがありますが そんなときは Docker の中に旧版の CUDA を入れて対処します。 - cuDNN のインストール
cuDNN 概要
を参考にして cuDNN のインストールをします。
cuDNN は最新版を入れてしまうと旧版でないと動かない Python パッケージに遭遇することがあります。
そんなときは Docker の中に旧版の cuDNN を入れて対処します。
今回 cuDNN のインストール後、cuDNN のバージョン確認が上手くできないことが判明しました。
UbuntuでCUDAのバージョンを確認する方法【簡単コマンド解説】
を参考にして cuDNN のバージョン確認をしました。
$ dpkg -l | grep "cudnn"
又は
$ dpkg -l | grep libcudnn
でできるはずです。
Ubuntu に NVIDIA Container Toolkit をインストール
GPU を持つ Ubuntu で Docker 経由で CUDA を使用する場合に必要となる
NVIDIA Container Toolkit をインストールします。
なお、nvidia-docker2 は 2024年1月 に NVIDIA Container Toolkit に置き換わりました。
【Ubuntu 24.04】NVIDIA Container Toolkit(nvidia-docker)のインストール方法
NVIDIA コンテナ ツールキットのインストール[英文]
WSL2+Ubuntu24.04+Docker+GPUでつくる機械学習環境
が参考になります。
[その他一言]
NVIDIA Container Toolkit を用いた場合、CUDA 環境が用意されている docker image を使用すれば、
ローカルの CUDA インストールは不要です。
よって、ローカル環境への CUDA や CuDNN のインストールを省略することも可能です。
しかし基本的には、ローカル環境にも CUDA や CuDNN をインストールしましょう。
- GPG キー(公開鍵)の取得
curl コマンドで GPG キーを取得します。
この時、-fsSL の curl オプションを指定します。
-f サーバエラーが発生したら黙って終了する
-s 進捗状況やエラーを表示しない
-sS 上記でエラーは表示する
-L 要求したページにリダイレクトが掛かっていた場合に追従する GPG キーは
https://nvidia.github.io/libnvidia-container/gpgkey
にあるので
$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey
とすると GPG キーを取得することができます。 - GPG キーをバイナリ形式にして保存
gpg --dearmor -o で GPG キーをバイナリ形式にして
/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
に保存します。
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg - curl -s -L https://nvidia.github.io/ ・・・
https://nvidia.github.io/libnvidia-container/stable/deb/
から nvidia-container-toolkit.list を取得します。
この時 sed コマンドにより修飾されます。 - sed 's#deb https://#deb ・・・・・ https://#g'
sed コマンドを使用して
nvidia-container-toolkit.list
を取得するのですが、ここがややこしい。
sed コマンドとは Stream EDitor の略で、入力されたテキストデータを1行ずつ読み込んで 指定した処理を適用して出力を行います。
主に文字列の置換や抽出に用いられます。
例1)
$ echo '一郎くんおはようございます。' | sed 's/一郎/二郎/'
一致する文字列を全て置換
一郎 を 二郎 に置換
正規表現の g オプションを用いて一致する文字列を全て置換できます。
[結果]
二郎くんおはようございます。
例2)
$ echo 'abcdefabc' | sed 's/abc/def/g'
[結果]
defdefdef
例--ここまで--)
となります。
https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list
を見ると
deb https://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) / ・・・ ①
#deb https://nvidia.github.io/libnvidia-container/experimental/deb/$(ARCH) / ・・・ ②
の二つの URL を見ることができます。
この時
sed サブコマンド「#」
を適用すると
「#」とその行の残りの部分は(コメントとして扱われて)無視されます。
よって、#deb から後に書かれた URL② は無視されます。
すなわち、deb の URL① から nvidia-container-toolkit.list を読み込んでねと指示しているようです。
[signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg]
で GPG キーは
/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/
sudo tee でコマンドの結果をファイルに出力します。
/etc/apt/sources.list.d/nvidia-container-toolkit.list
にインストールしたい NVIDIA Container Toolkit の APT リポジトリリストが出力されました。
ここまでで、NVIDIA Container Toolkit をインストールするための準備説明がやっと終わりました。
引き続き、インストール準備をまとめます。