RuntimeError: Torch is not able to use GPU

エラー内容

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はフリーです。
とありますね。

「ファンが激しく動いている」という投稿がありましたが、自分もそうでした…

  • GPUがないかサポートされていない
  • GPUのドライバが正しくインストールされていない
  • 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は、cuDNNPyTorchで有効または無効にするための設定。

Trueに設定されている場合は、PyTorchはcuDNNを使用してGPUアクセラレーションを行い、cuDNNがインストールされている場合、PyTorchはcuDNNを活用して高速な深層学習の演算を実行する。

Falseに設定されている場合は、PyTorchcuDNNを使用せず、代わりに通常の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を使っていない?

インストールしてみますか…

cuDNNCUDAとバージョンを合わせないといけないので、注意しながらユーザー登録してダウンロードします。

てか、これ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搭載のパソコンを使っていれば同じかと思います。

NVIDIAの公式からしてしまうと、



このように英語の画面になる上、
「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日

Copyright© 2024-2025 ai-illust.art All Rights Reserbed.

当サイトに掲載している文章、画像などの無断転載を禁止いたします。