Windows 11 の WSL2 + AlmaLinux-9 環境上で NVIDIA CUDA 環境のインストールと PyTorch の動作確認をしたときのメモ。
なぜ AlmaLinux なのかというと自分の普段の仕事では RHEL 系で開発していて使い慣れているから、というそれだけの理由です。特に拘りがなければ Ubuntu のほうが楽で情報も多いと思います。
概要
おおまかな作業の流れは以下の通り。
- (1) Windows 上で NVIDIA ドライバをインストールする
- (2) WSL2 (AlmaLinux-9) をインストールする(以降の手順は WSL2上で実施)
- (3) CUDA Toolkit 12.8(最新版)を Rocky 9 の手順に沿ってインストールする
- ここではドライバはインストールしない
- (4) Python バージョン切替・仮想環境用に pyenv インストールする
- (5) PyTorch 2.6.0(最新版) をインストールして動作確認する
- (6) 古いバージョンの CUDA Toolkit, PyTorch を共存させてインストールしてみる
詳細は以下の NVIDIA の公式ドキュメントを参照してインストールする。
NVIDIA ドライバのインストール
以下の公式ドキュメントに手順に従ってインストールする
NVIDIA ドライバは以下から自分の環境に合わせてダウンロード・インストールする。
WSL2のインストール
- AlmaLinux-9 ディストリビューションをインストール
PS> wsl --install AlmaLinux-9
- WSLカーネルの最新化
PS> wsl --update
- WSL2 環境の起動
PS> wsl
$
- WSL2環境からドライバが見えていることを確認
$ ls -l /usr/lib/wsl/lib/libcuda.so
-r-xr-xr-x 4 root root 166872 Mar 15 08:58 /usr/lib/wsl/lib/libcuda.so
$
CUDA Toolkit 12.8 (最新版)のインストール
CUDA Toolkit 12.8(現時点での最新版)をインストールする。
以下の公式ドキュメントの「Option 2:」の手順に従ってインストールする。
- 3. CUDA Support for WSL 2
- Option 2: Installation of Linux x86 CUDA Toolkit using Meta Package
具体的な手順・インストールパッケージは以下の Rocky 9 の手順を参考にする。
wget https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda-repo-rhel9-12-8-local-12.8.1_570.124.06-1.x86_64.rpm
sudo rpm -i cuda-repo-rhel9-12-8-local-12.8.1_570.124.06-1.x86_64.rpm
sudo dnf clean all
sudo dnf -y install cuda-toolkit-12-8
インストールするのは cuda-toolkit-12-8
のみ。ここでドライバはインストールしないこと。
- インストール完了後の確認
$ /usr/local/cuda/bin/nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Fri_Feb_21_20:23:50_PST_2025
Cuda compilation tools, release 12.8, V12.8.93
Build cuda_12.8.r12.8/compiler.35583870_0
$
これで動作しているっぽい。
Python 環境設定
pyenv と venv を使ったPython仮想環境を準備する。
pyenv はPython バージョン切替のためにインストールする。
他にも alternatives
を利用する方法もあるが、他環境(MacOS/Homebrew)との手順共通化やディストリビューションに含まれないバージョン利用時のために今回は pyenv を利用した。
- 参考: AlmaLinux-9 標準の Python バージョン
$ python -V
Python 3.9.21
pyenv のインストール
pyenvのドキュメント に従ってインストール
- 開発用ツールと依存パッケージのインストール
$ sudo dnf group install "Development Tools"
$ sudo dnf install git
$ sudo dnf install bzip2-devel readline-devel openssl-devel sqlite-devel libffi-devel tk-devel
- pyenv をダウンロード
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
- pyenv 高速化(省略可)
cd ~/.pyenv && src/configure && make -C src
-
~/.bashrc
への設定追加
### pyenv
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
-
~/.bashrc
設定の有効化(もしくはWSL2シェルをいったん終了し再起動)
$ . ~/.bashrc
- pyenv インストール完了後の確認
$ pyenv versions
* system (set by /home/XXX/.pyenv/version)
$
- pyenv 用 Python 3.9.12 インストール
- AlmaLinux-9 の同梱版も Python-3.9.12 であるが、今後 pyenv でバージョン切り替えできるようにするためにインストール
$ pyenv install 3.9.12
(略)
$ pyenv versions
* system (set by /home/XXX/.pyenv/version)
3.9.12
PyTorch 動作確認
Python 仮想環境作成
作業ディレクトリ配下で以下を実行する
- Python バージョン指定
$ pyenv local 3.9.12
- Python 仮想環境作成
$ python -m venv ./venv-cuda128
- Python 仮想環境の有効化
$ . ./venv-cuda128/bin/activate
- pip 最新化
$ pip install --upgrade pip
PyTorch インストール
- インストール時点での PyTorch 最新バージョン
- PyTorch: 2.6.0 (Stable)
- 対応CUDA: 12.6
これを試している時点では CUDA-12.8 は Nightly 開発版しか対応してなかったので、CUDA-12.6 用のリポジトリを使用。
- PyTorch インストール
$ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
PyTorch 動作確認
- 状態表示スクリプト例
#!/usr/bin/env python3
import torch
print("torch.__version__ = ", torch.__version__)
print("torch.cuda.is_available() = ", torch.cuda.is_available())
print("torch.version.cuda = ", torch.version.cuda)
print("torch.cuda.device_count() = ", torch.cuda.device_count())
print("torch.cuda.get_device_name() = ", torch.cuda.get_device_name())
print("torch.cuda.get_device_capability() = ", torch.cuda.get_device_capability())
print("torch.backends.cudnn.is_available() = ", torch.backends.cudnn.is_available())
print("torch.backends.cudnn.version() = ", torch.backends.cudnn.version())
- 実行結果
$ ./torch-info.py
torch.__version__ = 2.6.0+cu126
torch.cuda.is_available() = True
torch.version.cuda = 12.6
torch.cuda.device_count() = 1
torch.cuda.get_device_name() = NVIDIA GeForce RTX 4070 Laptop GPU
torch.cuda.get_device_capability() = (8, 9)
torch.backends.cudnn.is_available() = True
torch.backends.cudnn.version() = 90501
$
ちゃんと動作しているっぽい。最新版のインストールはここまでで完了。
以前のバージョンの CUDA ToolKit / PyTorch との共存
自分の使いたいアプリケーションで古いバージョンの PyTorch に依存しているものがあるので、古いバージョンと共存してインストールしたい。
今回は以下のバージョンの組み合わせをインストールする。
- Python: 3.9
- PyTorch: 1.10.0
- CUDA Toolkit: 11.3
CUDA Toolkit 11.3 のインストールパッケージ
CUDA Toolkit の以前のバージョンは CUDA Toolkit Archive から参照できる。
しかし、CUDA-11.3 は RHEL7 / RHEL8用RPMしか提供されていない。
今回は RHEL8 用RPMパッケージを利用して AlmaLinux-9 にインストールする方法を試してみた。自分が試してみた範囲では問題なく動作している。
自分以外でも CUDA 11.4 rhel8用パッケージを Rocky 9 で動作させた人がいるらしい。
AlmaLinux-9 でのインストール手順
- RHEL8 用パッケージをダウンロードしリポジトリをインストールする
- ここまでは公式の手順と同じ
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda-repo-rhel8-11-3-local-11.3.1_465.19.01-1.x86_64.rpm
sudo rpm -i cuda-repo-rhel8-11-3-local-11.3.1_465.19.01-1.x86_64.rpm
sudo dnf clean all
-
cuda-toolkit-11.3
をインストールする- ここは公式の手順と異なるので注意
-
nvidia-driver
やcuda
はインストールしてはいけない(はず。おそらく誤ったドライバが上書きされてしまう)
$ sudo dnf install cuda-toolkit-11.3
-
alternatives
コマンドで CUDA Toolkit のバージョンを 11.3 へ切り替える
$ sudo alternatives --config cuda
There are 2 programs which provide 'cuda'.
Selection Command
-----------------------------------------------
*+ 1 /usr/local/cuda-12.8
2 /usr/local/cuda-11.3
Enter to keep the current selection[+], or type selection number: 2
-
nvcc
で動作確認
$ /usr/local/cuda/bin/nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_May__3_19:15:13_PDT_2021
Cuda compilation tools, release 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0
$
おそらくこれで動作してるっぽい。
Python 仮想環境の準備
- 作業用ディレクトリを作成し Python 仮想環境を準備する
$ mkdir pytorch1.10-test
$ cd pytorch1.10-test/
$ pyenv local 3.9.12
$ python -m venv ./venv-cuda113
$ . ./venv-cuda113/bin/activate
$ pip install --upgrade pip
PyTorch (過去のバージョン)の動作確認
-
PyTorchの過去のバージョンの情報は以下のページを参照
-
torch 1.10.0+cu113
をインストールする- PyTorch の公式ページには cu111 までしか記載がないが、過去のアプリケーションの実績として cu113 を利用していたため今回も cu113 を指定
- numpy も過去の動作実績のあるバージョンを指定。指定しないと互換性のない numpy-2.* がインストールされてしまいインストールが失敗する
$ pip install numpy==1.20.3 torch==1.10.0+cu113 torchvision==0.11.0+cu113
-f https://download.pytorch.org/whl/torch_stable.html
- PyTorch の動作確認
$ ./torch-info.py
torch.__version__ = 1.10.0+cu113
torch.cuda.is_available() = True
torch.version.cuda = 11.3
torch.cuda.device_count() = 1
torch.cuda.get_device_name() = NVIDIA GeForce RTX 4070 Laptop GPU
torch.cuda.get_device_capability() = (8, 9)
torch.backends.cudnn.is_available() = True
torch.backends.cudnn.version() = 8200
$
ちゃんと動作してるっぽい。
この後、このバージョンを利用するアプリケーションが正常に動作することも確認済み。
以上