Windows 10 + WSL2 + Ubuntu 20.04 + CUDA 11.3 + PyTorch 1.11 の組み合わせで動く環境を作る
Windows 10 の WSL2 上の Ubuntu 20.04 で PyTorch を実行する環境の構築手順。
面倒だったのはCUDAのバージョン。
現在のNVIDIAのHPに従うと、11.7になる。
https://docs.nvidia.com/cuda/wsl-user-guide/index.html
これで動いていたので気に留めなかったが、
Detectron2 で コンパイル エラー
が発生。
| RuntimeError:
The detected CUDA version (11.7) mismatches the version that was used to compile
PyTorch (11.3). Please make sure to use the same CUDA versions.
|
エラーメッセージから11.3 を入れないといけないのだがURLがわからない。
ので、頑張って調べた。
この辺は、PyTorchのバージョンアップ(1.12とか)に伴い直っていくのだろう。
なお、Detectron2 のインストール方法については以下を。
https://jitaku.work/it/category/ai/machine-learning/deep-learning/pytorch/detectron2/
環境構築手順
①WSL2 に Ubuntu 20.04 を入れる
さすがに割愛。
②venvで環境構築
直接やっても良いが、環境が汚染されるといやなのでvenvを使う。
| sudo apt -y update
sudo apt -y upgrade
sudo apt install -y python3.8-venv
python3 -m venv ~/envs/pytorch-cuda
echo 'source ~/envs/pytorch-cuda/bin/activate' >> ${HOME}/.bashrc
source ~/.bashrc
|
③pip を最新にする
pipを最新にしないとDetectron2のコンパイル時にエラーになって困ったので最新にしとく
CUDA と CUDA Toolkitを入れる。
本来であれば以下の、
https://docs.nvidia.com/cuda/wsl-user-guide/index.html
に従って入れればよいだけなのだけどこれだと最新の 11.7 になってしまう。
現在のPyTorchのStableな環境はCUDA 11.3で、11.7でもなんだかんだ言って動くのだけどDetectron2のコンパイル時にエラーになったので、ここは11.3を入れる。
CUDA 11.3 をインストール
| wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda-repo-wsl-ubuntu-11-3-local_11.3.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-3-local_11.3.1-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
|
CUDA Toolkit 11.3 をインストール
| wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda-repo-ubuntu2004-11-3-local_11.3.1-465.19.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-3-local_11.3.1-465.19.01-1_amd64.deb
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-11-3
|
注意!
忘れがちだけどパスを通すこと。
| export CUDA_PATH=/usr/local/cuda-11.3
echo 'export CUDA_PATH=/usr/local/cuda-11.3' >> ${HOME}/.bashrc
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:${LD_LIBRARY_PATH}
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:${LD_LIBRARY_PATH}' >> ${HOME}/.bashrc
export PATH=/usr/local/cuda-11.3/bin:${PATH}
echo 'export PATH=/usr/local/cuda-11.3/bin:${PATH}' >> ${HOME}/.bashrc
source ~/.bashrc
|
これでCUDA11.3のインストールは完了!
念のためnvccで確認する。
| $ nvcc --version
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
|
nvidia-smiでCUDAバージョンを確認しない!
nvidia-smiを起動すると右上のほうに CUDA Version: 11.6 とか出るのであれ?11.6なの?と誤解しがちだが、これは入っているドライバーがCUDA 11.6まで対応するよ、という意味で、今は言っているCUDAバージョンを指しているわけではない。
⑤Pytorchのインストール
やっとこさ、Pytorchのインストール。
https://pytorch.org/get-started/locally/
のページにしたがって以下を選択し、
・Stable (1.11.0)
・Windows
・Pip
・Python
・CUDA 11.3
生成された以下のコマンドを実行。
| pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
|
確認
| python -c "import torch; print(torch.__version__)"
1.11.0+cu113
|
OK!
⑥CUDAが有効かを確認
| python -c "import torch; print(torch.cuda.is_available())"
True
|
以上!
なんか変なエラーがでて動かなくなった
ごちゃごちゃ環境をいじってたら、
| UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 10010). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx
|
とか出るようになって、CUDAで学習を実行できなくなった。
以下のコマンドでFalseが返却される。
| python -c "import torch; print(torch.cuda.is_available())"
False
|
どうやっても戻せなかったので、Ubuntuの入れ直しからやり直した。
この状態に陥ってから入れ直しではなく直す方法が知りたい。