結論から言うと、
②Pytorchがサポートしている最新版のCUDAをインストール
③そのCUDAに合わせたcuDNNをインストール&パスを通す
④Pytorchをインストール
⑤PytorchがGPUを認識しているか確認
の順番が最短だったと思われる。
以下、私の手順(2日間の激闘)の備忘録である。
1,Visual Studioのインストール
2,cmdを使ってpythonのインストール
→cmdでpython -Vと入力し、バージョンが出れば成功
3,cmdでpipでパッケージインストール
→cmdでpip freezeと入力し、リストにパッケージが出れば成功
4,Pytorchをインストールするため,対応するCUDAバージョンを調べる。
こちらにアクセスし、自分の環境情報を入力する。
選択肢の中で最新なのはCUDA11.7であるため、ver.11.7をインストールする。
(この手順はこちらを参考にしました:
PyTorchの簡単過ぎるインストール【Pythonで機械学習】 | ジコログ)
5,CUDAの別バージョンがインストールされている場合、削除する。
私はCUDA11.8をかつてインストールしていたので、削除した。
恐らくパスさえ気をつければ削除する必要はないと思うが、気になったので。
普通にWindowsの設定からアプリのアンインストール画面に進み、NVIDIAのアプリの末尾が11.8を手動で全削除した。
(こちらを参考にしました:
CUDA Toolkit のインストール(Ver 10.0 → 11.4) | そう備忘録)
その後、パスもシステムの環境設定から削除しようとしたが、全部消えていた。
6,CUDAの過去バージョンをここからインストールする。普通に検索すると最新版しか選択肢にないページに遷移するので注意。
7,Windowsの検索バーで「システム環境変数の編集」と検索し、CUDA11.7などのPathが通っていることを確認する。
→「システム環境変数」に「CUDA_PATH_V11_7」と「CUDNN_PATH」が正しい場所を参照しており、システム環境変数内の「Path」をダブルクリックして「~bin」と「~libnvvp」が存在すれば成功。存在しない場合、これらを作成する。
※「ユーザー環境変数」のほうが「システム環境変数」より優先されるらしいが、私はPythonの環境をWindowsの副アカウント(Administatorアカウントでは無いアカウント)で作成しているので、ユーザー環境変数の方はスルーした。やっぱAdminアカウントで環境作った方が良かったと反省。
8,PCを再起動し、Pathが通っていることをcmdで確認する。
→cmdでwhere nvccと入力し、エラーが出ずに.exeのアドレスが表示されれば成功
→cmdでnvcc -Vと入力し、エラーが出ずに.CUDAのバージョンが表示されれば成功
※PCを再起動しないとPathは通っているのにエラーを吐いたので、再起動推奨。
9,Pytorchをインストール。ここから自分のバージョン情報を入力すると、cmdで打ち込むべきコマンドを表示してくれる。これをcmdにコピペする。
10,これで成功!と思いきや、以下のエラーメッセージが出現...。
ERROR: Could not find a version that satisfies the requirement torch (from versions: none)
ERROR: No matching distribution found for torch
調べてみるとPythonのバージョンが対応していないとのこと。
しかも、PytorchならOKだが、私がインストールしたPython3.11はPyPIが未対応だったらしい(そんなん気づくかよ)。I
※このサイトの左部にある「Programming Language」を参照のこと。
(この手順はこちらを参考にしました:
PyTorchのインストール失敗時にチェックすべきこと | ジコログ)
11,旧バージョンPythonのインストール。インストール時に.pyのパスをこちらに通すのを忘れないように。(どうせなら仮想環境を整備しようかと考えたが、仮想環境のcdがめんどそう&VS codeのみでコントロールしたい&PowerShellわかんないなのでやめた)
12,必要なライブラリをpipで再びインストール。
13,今度こそPytorchをインストール。
→cmdでpython -c "import torch"と入力し、エラーが出なければ成功
14,cuDNNをダウンロード。
(この手順はこちらを参考にしました:
CUDA+cuDNNをインストールしPyTorchでGPUを認識させるまでの手順(Window11) - テク×てく ブログ)
15,PyorchでGPUが使用できているか確認。
→以下のコマンドを入力し,Trueと出れば成功。
(この手順はこちらを参考にしました:
PyTorchでGPU情報を確認(使用可能か、デバイス数など) | note.nkmk.me)
※作成コードを実行できない場合、Pythonにパスが通っていない。だいたいは「C:\Users\ASMO\AppData\Local\Programs\Python\Pythonxxx\python.exe」にあるので、それを環境変数のPathに登録してやる。
→VS code右下に、自分が設定したバージョンのPythonが記載されていれば成功。
駄目ならそこをクリックし、任意のバージョンを指定する。
16,Falseと出た場合(筆者)、Pytorchを削除して再インストールする。
cmdで「pip uninstall torch」と入力し、PytorchのHPから再DL(手順9再び)
(この手順はこちらを参考にしました:
【AI】[Windows10]torch.cuda.is_available()がFalse | 夕湖津のブログ)
※私は、「Torch not compiled with CUDA enabled」のエラーにイライラさせされ、藁にも縋る思いで再インストールしたら解決しました。cmdで「nvidia -smi」と入力するとProcessingに項目は出てくるからGPU自体は動いているし、以下のコードをVS codeで実行できるからPytorchもインストールされているのだろうと思っていました。
(この手順はこちらを参考にしました:
deviceの使い方(pytorch) 使用するGPU、CPUを指定する~制御工学の基礎あれこれ~)
これでやっと下準備が終わった...!!
~~以下参考~~
(1)cuDNNのバージョンは「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vxxx\include」の"cudnn_version.h"をいうファイルをVisual Studioで開けば確認できます。
これなら、ver. 8.6.0ということです。
(2)CUDAとcuDNNの違いは、
CUDA...自作プログラムの計算処理にGPUを使用できるようにするためのソフト
cuDNN...ライブラリ
という理解をしました。
(3)cuDNNはPathを手動でPathを通す必要があります。最初はZIPファイルを解凍し、Cドライブ直下にフォルダを作成してそこに全部入れていましたが、Pathが通っているCUDAのbinフォルダにcuDNNのbinフォルダに入っている中身全部を、CUDAのincludeファイルにcuDNNのincludeフォルダに入っている中身全部を...というように入れました。これは色々調べた中で「公式の方法以外だとエラーが出る」という文章を「自動で作成されたPath以外の場所にフォルダを作成してPathを通しても無意味って...コト!?」と私が勘違いしたためです。今後のことを考えると、普通に最初にやったように「解凍したフォルダをそのままどこかに置き、手動でPathを通す」の方が良かったと思います。