LoginSignup
5
7

【WSL2】CUDA(pytorch)設定

Last updated at Posted at 2022-11-27

はじめに

Pythonの pytorch を WSL2 でCUDAありで使う設定を2回行いました。何とか、動いているのですが、どうして動いているのか、未だによく理解していない。^^;
が、それでも忘れないうちにメモしておきます。内容については、理解が間違っている可能性は多いにある のですが、それでもヒントにはなるかもなので。

内容

いろいろごちゃごちゃやったので、どれが正しいか分からないのですが、基本的に以下が必要条件のような気がしています。

互換性

  • Graphic board のdriver のversion と CUDA の version
  • CUDA と pytorch
  • pytorcht と python

pytorch のwheelファイルは下記にあります。所望のplatform(linux or win), python(cp38, cp39, etc..), CUDA(cu118, cu117, etc.)に対応したファイルを直接のリンクを取得できます。直接ダウンロードしもできます。

python3.9(2023/08/28)

python のversion について困ったことがありました。最初python3.8 を使い、3.8以上で動かすpoetry管理で設定していたのですが、numpy が入れられませんでした。そこで、python3.9 で使うことにしました。python 3.9にしたことで、pytorch の wheel ファイルも変わりました。

過去のCUDAの削除

所望のversion のCUDAをインストールするため、インストールしてあるCUDAを削除しました。やることは、atp-get で purge するだけでなく、/etc/ocal/以下にあるフォルダの削除、使用しているならnvidia/cuda repositoryのdocker image の削除、/etc/apt/以下の整理をしました。

下記の通りにしました。

作業メモ

NVIDIAのグラフィックボードの型番やドライバのversionを確認

購入時の仕様などが残っていればよいですが。調べるために、

PS> systeminfo

で表示されているものを見ても、いまいちわからず。

PS> dxdiag

で探したりしました。あと、NVIDIAのツールでデスクトップの設定みたいなので確認できました。(todo: 確認)

Windows 10 (ホストOS)にNVIDIA Driver をインストール

ドライバがすでに入っていれば問題なし。古ければ新しいのを入れた方が良いのかも?
このページで、NVIDIA RTX A5000 とか入れて、自分のボードに対応するドライバを落としてきて入れます。(入れました)

ここで入れるのはドライバです。CUDAではありません。自分側の理解では、Host OS側のCUDAは必要ない気がしています。CUDAはWSL2側に入れます。

インストールされていれば、下記でCUDAのversion とdriver のversion が確認できます。ただし、私の環境でこれを実行すると、ホストOS側のものが出力されてしまい、confusing でした。

$ nvidia-smi

WSL2をインストール

今どきは、管理者権限でpowershell でコマンドたたくだけでできます。私の場合、WSL のVersion 2 でないとCUDAが使えない感じでした。

PS> wsl --install -d ubuntu_20.04
PS> wsl -l -v

でインストールして running になっていることを確認した後、version 1 である場合は 2 にします。

PS> wsl --set-version ubuntu_20.04 2

WSL2 に CUDA を入れる

CUDA Version と Driver の version の関係がこちらにあります。新しいCUDAを入れるには 新しい Driver の version である必要があるようです。下記を見ると、CUDA Toolkit は CUDA11.x だとLinux_X86..だと 450.80....で Windows だと452.39.... とありますが、WSL2 で使うとき、どちらにあたるのか分かりません。(自分の知識不足で)

なので、とりあえず、最新のドライバでCUDA11.7 を入れることにしました。cuda download のページで、Linux, X86_64, WSL-Ubuntu で出てきたコマンドを、WSL2 でそのまま実行しました。

インストール後、cuda があることを確認します。

$ ls -d /usr/local/cuda*

CUDA11.8のインストール(追加2023/08/28)

最新のもの以外を入れたいとき、例えばCUDA11.8では下記のページを使えます。

image.png

Install type で deb(local), deb(network)がありますが、どちらも実行すると最新のCUDA20.xがインストールされてしまいました。結局、rufile(local)の下記でできました。上記のインストールできなかったのは、両方ともapt でインストールするものなので、apt の設定に何かあったのかもしれません。(一応/etc/apt/以下でcuda 関係のものを削除したのですが。)

$ wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
$ sudo sh cuda_11.8.0_520.61.05_linux.run

なお、driver とCUDAのversion の関係は以下のようになっていました。

image.png

WSL2に pytorch を入れる

pytorch の Get Started で Start Locally で条件を設定して、コマンドを表示させます。私は、Stable(1.13.0), Linux, Pip, Python, CUDA11.7 で入れました。コマンドもシンプルでした。

$ pip3 install torch torchvision torchaudio

確認します。

$ python3 -c "import torch; print(torch.cuda.is_available())"
True

まとめ

とりあえずメモ。

TODO:

  • docker で --gpus オプションも使えるようになったのだが、何をしたのかよく覚えていない。後でメモしたい。
    (2022/11/27)
  • CUDA11.8のインストールの追加 (2023/08/28)
5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7