エラー内容
Stable Diffusion インストール時に、「RuntimeError: Torch is not able to use GPU」というエラーが出た場合の解決法です。正確には、
Traceback (most recent call last):
File "C:\sd.webui\webui\launch.py", line 38, in <module>
main()
File "C:\sd.webui\webui\launch.py", line 29, in main
prepare_environment()
File "C:\sd.webui\webui\modules\launch_utils.py", line 257, in prepare_environment
raise RuntimeError(
RuntimeError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check
と表示されました。
解決法
一旦解決?
C:\sd.webui\webui\webui-user.batを編集します。
set COMMANDLINE_ARGSの箇所に、
「--skip-torch-cuda-test」
を追記します。
なので、
set COMMANDLINE_ARGS=--skip-torch-cuda-test
となります。
他に何か記載してあれば、
set COMMANDLINE_ARGS=〇〇〇〇 --skip-torch-cuda-test
のように、半角スペースを空けて追記します。
これで解決しました。
これで、一旦Stable Diffusion Web UIは、動作でき、イラストも無事生成できました。
しかし、、、
後述しますが、これが解決にはなりませんでした…
Torchとは
さて、ここで出て来たTorch。…Torchとは何なのでしょうか。
ちょっと気になったので、調べてみました。
これは、Pythonというプログラミング言語の機械学習のためのオープンソース計算ライブラリのことのようです。
Stable Diffusionは主にPythonで出来ているので、そのライブラリの一つというところでしょうか。
けれど、
Torch is not able to use GPU
とエラーが出ており、なぜ
--skip-torch-cuda-test
でスキップさせるのか…
これではGPUが使われないのでは…
skip-torch-cuda-testを追記すると
調べてみると、githubのStable Diffusionのエラーコミュニティのページにこの問題が載っていました。github
「--skip-torch-cuda-test」
を追記すると、CPUでStable Diffusionを実行することになるようです。
これは、何か他の改善策を見つけないといけません…
cudaとは
そこで、cudaとは何かが気になってきました。調べてみると、
CUDA(Compute Unified Device Architecture:クーダ)とは、NVIDIAが開発・提供している、GPU向けの汎用並列コンピューティングプラットフォーム
とのことでした。
skip-torch-cuda-testを追記してはいけない
やはりこれをスキップすることで、GPUが使われないようになる可能性が出て来ました…githubのStable Diffusionのコミュニティも、
「--skip-torch-cuda-test」という引数を追加すると、webuiは機能しましたが、タスクマネージャーを確認すると、CPUがビジーであることがわかりましたが、GPUはフリーです。とありますね。
「ファンが激しく動いている」という投稿がありましたが、自分もそうでした…
などの可能性があります。
更に色々調べてみると、以下に解決例があるみたいですね。
github
Pythonは使える?
Pythonとだけ返る
Stable Diffusion Web UIはPythonというプログラミング言語で作られています。そこで、Pythonがまずきちんとインストールされているか確認します。
ターミナルを起動して
C:\>python --version
これは、Pythonのインストールされていればそのバージョンを返すコマンドです。
それを打ってみると「Python」とだけ返りました。
これは、Pythonはインストールされているのか?
Pythonがインストールされてない
C:\>where python
何も返りません。
ちなみにメニューから、コマンドプロンプトに切り替えて
C:\>where python
とすると、python.exeのパスが返ってきました。
\AppData\Local\Microsoft\WindowsApps\python.exe
ちなみに、コマンドプロンプトでもう一度、
C:\>python --version
と打っても、やはりPythonしか返りませんでした。
調べてみると、
こちらのサイト
で、Pythonと打ってPyhtonがインストールされてなければ、
\AppData\Local\Microsoft\WindowsApps\python.exe
のpython.exeが実行されて)Microsoft Storeアプリが開かれる、とありました。
試しに
C:\>python
とだけ打つと、Microsoft Storeアプリが開かれました。
なんだ、Pythonがインストールされてないのか!!
それならPythonのプログラムであるTorchも動くはずもなく、PythonからGPUが使えるはずもありません。
「すべてのアプリ」
にもPythonがなかったので、Microsoft Storeアプリより
をインストールしました。
インストールすると、すべてのアプリにも表示されました。
Stable Diffusionを再度起動
C:\sd.webui\webui\webui-user.batの編集を戻します。
set COMMANDLINE_ARGS=--skip-torch-cuda-test
のskip-torch-cuda-testを削除します。
Stable Diffusion Web UIを起動します。
エラーなく起動しました。
Torchは作動している?
気になるのがtorch。github
にもあるように、
python.exe -m torch.utils.collect_env
をコマンドしてみます。
やはりtorchがインストールされてないみたいです。
c:\>pip3 install torch
すると、インストールできました。
ちなみにpipは、Pythonの管理ツールコマンドです。
再度
python.exe -m torch.utils.collect_env
すると、返ってきました。
Python platform: Windows-10-10.0.22621-SP0
Is CUDA available: False
CUDA runtime version: Could not collect
CUDA_MODULE_LOADING set to: N/A
GPU models and configuration: GPU 0: NVIDIA GeForce RTX 3060
Nvidia driver version: 512.59
cuDNN version: Could not collect
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True
今度はCUDAが使えない状態っぽい。
でももう少しかも。
CUDAの確認
上記の「Is CUDA available: False」で、CUDAがインストールされてない可能性が出てきました。こちらのサイト様
を拝見しました。
c:¥>nvcc -V
とコマンド。
'nvcc' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と返ってきました。
インストールされてないのか・・・
ちなみにnvccは、「NVIDIA CUDA コンパイラ」の略です。
CUDAのインストール
では、CUDAのどのバージョンをインストールすればいいのか?こちらのサイト様
NVIDIA公式
を拝見しました。
CUDA Toolkit | Linux x86_64 | Windows x86_64 |
---|---|---|
CUDA 12.1.x | >=525.60.13 | >=527.41 |
CUDA 12.0.x | >=525.60.13 | >=527.41 |
CUDA 11.8.x | >=450.80.02 | >=452.39 |
CUDA 11.7.x | >=450.80.02 | >=452.39 |
CUDA 11.6.x | >=450.80.02 | >=452.39 |
CUDA 11.5.x | >=450.80.02 | >=452.39 |
CUDA 11.4.x | >=450.80.02 | >=452.39 |
CUDA 11.3.x | >=450.80.02 | >=452.39 |
CUDA 11.2.x | >=450.80.02 | >=452.39 |
CUDA 11.1 (11.1.0) | >=450.80.02 | >=452.39 |
CUDA 11.0 (11.0.3) | >=450.36.06** | >=451.22** |
CUDAをダウンロード
からCUDAをダウンロード・インストールします。
PC再起動。
再度
python.exe -m torch.utils.collect_env
Is CUDA available: False
CUDA runtime version: 12.1.105
CUDA_MODULE_LOADING set to: N/A
GPU models and configuration: GPU 0: NVIDIA GeForce RTX 3060
Nvidia driver version: 531.14
cuDNN version: Could not collect
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True
CUDAは認識しましたが、Is CUDA available: False になっています。
こちらのサイト
を拝見。
念のため、
c:\>python
>>>import torch
>>>torch.cuda.is_available()
False
やはりFalse。
>>>torch.backends.cudnn.enabled
はTrue。
c:\>nvidia-smi
も返る。
ちなみに
torch.backends.cudnn.enabledは、cuDNNをPyTorchで有効または無効にするための設定。
Trueに設定されている場合は、PyTorchはcuDNNを使用してGPUアクセラレーションを行い、cuDNNがインストールされている場合、PyTorchはcuDNNを活用して高速な深層学習の演算を実行する。
Falseに設定されている場合は、PyTorchはcuDNNを使用せず、代わりに通常のCPUベースの計算を行う。
cuDNNに依存しない独自のアルゴリズムを使用したい場合や、特定の動作環境での互換性の問題がある場合などに有用。
ただ、TrueでもcuDNNがインストールされてなかったら意味がないみたい。
CUDAとDriverの対応関係表
こちらのサイト様
もわかりやすいです。
それぞれのバージョンを調べる
前述したのも合わせて、もう一度Pythonとそれ周りのバージョンの調べ方をまとめる。Pythonのバージョン確認
c:¥>python --version
Python 3.11.4
torch(PyTorch)のバージョン確認
c:\>python
>>>import torch
>>>torch.__version__
'2.0.1+cpu'
NVIDIA ドライバーのバージョン確認
c:¥>nvidia-smi
NVIDIA-SMI 531.14 Driver Version: 531.14 CUDA Version: 12.1
CUDAのバージョン確認
c:¥>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Mon_Apr__3_17:36:15_Pacific_Daylight_Time_2023
Cuda compilation tools, release 12.1, V12.1.105
cudnnのバージョン確認
上記で行ったコマンドpython.exe -m torch.utils.collect_env
にて、
cuDNN version: Could not collect
とあったらインストールされていない可能性大。(パスが返ったらインストールされている)
念のため
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vバージョン\include\cudnn.h
を開く。
見つからない場合はインストールされてない可能性あり。
インストールされてなかった…
こちらのサイト様
を拝見。
cuDNN のダウンロード
ダウンロードするにはユーザー登録が必要です。
必ず CUDA と同じバージョンに対応した cuDNN をインストールしてください
ちょっと待って?
Stable Diffusionやるだけなのに、こんなことやる必要あるの?!
「cuDNN Stable Diffusion」
でネット検索してみる。
たくさん出てくる。
やっぱり必要みたいです。
cuDNNをインストールすると書いてあるサイト様
こちらのサイト様
cuDNNは特に記載のないサイト様
こちらのサイト様
よく分からないですが…
cuDNNをインストールしなかったらGPUを使っていない?
インストールしてみますか…
cuDNNはCUDAとバージョンを合わせないといけないので、注意しながらユーザー登録してダウンロードします。
てか、これStable Diffusionってエンジニアレベルの人しか難しいのでは?!
もっとサラッと出来るのかと思ったけど…
これからは萌えイラストはパソコンに詳しい人が強いのか…
なんか悲しい。けどやらなければ…
cuDNNは必要?
ChatGPTに聞いてみた。cuDNNがなくてもGPUは使用できます。cuDNNは、NVIDIAのGPU向けの高速な深層学習ライブラリですが、GPU自体はcuDNNなしでも一般的な計算タスクに使用することができます。
GPUは、並列処理能力に優れており、ディープラーニングなどの大規模な計算タスクに特に適しています。GPUは、通常の計算処理やグラフィックス処理の高速化にも使用されます。
ただし、cuDNNを使用することで、深層学習のトレーニングや推論のパフォーマンスを向上させることができます。cuDNNは、高度に最適化されたアルゴリズムを提供し、ディープラーニングの演算やメモリ管理を効率化します。したがって、cuDNNを使用することで、同じ計算をより高速に処理することができます。
また、多くの深層学習フレームワーク(例:TensorFlow、PyTorch)は、cuDNNを利用してGPUアクセラレーションを実現しています。したがって、これらのフレームワークを使用する場合は、通常はcuDNNを利用することになりますが、cuDNNがなくても基本的なGPUの利用は可能です。
なるほど、そゆことか。
と、まるまる信じるのもどうかと思いますが、とりあえずこうゆうことらしい。
よって、cuDNNを使わないユーザーも多いが、使った方がいいということ、と解釈。
NVIDIAユーザー登録するか…
NVIDIAユーザー登録
NVIDIAのユーザー登録は、マウスコンピューター公式
を参考に。
マウスコンピューターではなくても、GeForce搭載のパソコンを使っていれば同じかと思います。
「Organization / University Name」
といった個人事業者の登録が必須になるようで、戸惑います。
※NVIDIA自体の登録は「Organization / University Name」は聞かれませんが、cuDNNのダウンロードには開発者登録が必要で、やはり聞かれるみたいです。
対応バージョン
cuDNNのバージョンは、CUDAのバージョンと互換性があります。以下の表は、一般的なCUDAバージョンと対応するcuDNNバージョンの一覧です。
CUDA | cuDNN |
---|---|
CUDA 11.5 | cuDNN 8.4.x |
CUDA 11.4 | cuDNN 8.4.x |
CUDA 11.3 | cuDNN 8.4.x |
CUDA 11.2 | cuDNN 8.2.x |
CUDA 11.1 | cuDNN 8.0.x |
CUDA 11.0 | cuDNN 8.0.x |
CUDA 10.2 | cuDNN 8.0.x |
CUDA 10.1 | cuDNN 7.6.x |
CUDA 10.0 | cuDNN 7.6.x |
CUDA 9.2 | cuDNN 7.2.x |
CUDA 9.1 | cuDNN 7.1.x |
CUDA 9.0 | cuDNN 7.0.x |
CUDA 8.0 | cuDNN 6.0.x |
cuDNNのダウンロード
NVIDIA公式から、前途の開発者登録をしてダウンロードしていきます。
開発者登録
開発者登録の登録内容です。- First Name
-
- 名前を入力します。ローマ字が良いみたいです。
- Last Name
-
- 苗字を入力します。
- Job Role
-
- 職務を選択します。
- Organization / University Name
-
- 団体名 / 大学名を入力します。個人開発なら、適当にIndividual Developerとでもしておけば良いという情報もありました。
- Organization URL
-
- 団体名のURL。空欄で大丈夫です。
- Industry
-
- 働いている主な産業分野を選択します。
- Location
-
- 国名を選択します。
- Development Areas of Interest
-
- 興味があるものを選択します。
- 興味があるものを選択します。
cuDNNのインストール
圧縮ファイルをダウンロードしたら解凍します。解凍したら、
C:¥Program Files¥NVIDIA GPU Computing Toolkit¥CUDA¥バージョン
フォルダ内に
cudnn-windows-x86_64-〇〇
フォルダ内の
- inフォルダ
- include
- libフォルダ
この時、
C:¥Program Files¥NVIDIA GPU Computing Toolkit¥CUDA¥バージョン
フォルダには、既にその3つのフォルダが存在しますが、そのフォルダにそれぞれのファイルを追加するわけなので、気にせずにコピーします。
具体的にいうと、binフォルダには.dllがたくさん入っていますが、この中にcuDNNのdllファイルを加えていく、といった形です。
システム環境変数の設定
Windowsのスタートボタンを右クリックし
↓
システム
↓
システムの詳細設定
↓
環境変数
より、システム環境変数を追加します。
「新規」ボタンをクリックし、
変数名に「CUDNN_PATH」
と入力し、
変数値に「C:¥Program Files¥NVIDIA GPU Computing Toolkit¥CUDA¥バージョン」
を選択します。
パスが通ったか確認
C:¥Program Files¥NVIDIA GPU Computing Toolkit¥CUDA¥バージョン¥binフォルダに、
cudnn〇〇_〇.dll
というファイルがあります。
(〇は数字です)
そのファイル名を、コマンドプロンプトで
>where cudnn〇〇_〇.dll
をコマンドすると、
C:¥Program Files¥NVIDIA GPU Computing Toolkit¥CUDA¥バージョン¥bin¥cudnn〇〇_〇.dll
と、パスが返れば設定OKです。
Pythonから認識しているか確認
再度コマンドプロンプトから、python.exe -m torch.utils.collect_env
とコマンド。
cuDNN version: C:¥Program Files¥NVIDIA GPU Computing Toolkit¥CUDA¥バージョン¥bin¥cudnn〇〇_〇.dll
と返った。無事認識。良かった。
ちなみに、先程コピーしたので、
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vバージョン\include\cudnn.h
のファイルは有りと確認。
これでcuDNNの設定は完了です。
cuDNNを設定しての結果
ここまで苦労しましたが、劇的に変わるものではないようです。でも勉強にはなりました。
以上。
[カテゴリ]
2023年06月19日
関連記事
StableDiffusionインストール中に、以下のエラーが表示されました。Launchi...
2023年06月19日
batファイルとはbatファイルは、コマンドプロンプトなどでコマンドを実行するように...
2023年06月23日
今回は、StableDiffusionのローカル環境でSDXLを使用する方法についてまとめていきます。...
2024年06月05日
個人的にマウスコンピューター推しなので、今回はマウスコンピューターのパソコンについてま...
2023年05月14日
今回は、StableDiffusionWebUIをローカルのパソコンにインストールする方法を書き留めて行...
2023年05月26日