見出し画像

Pytorch 2.5.0+Cu12.4以上環境で、CuDNN手動更新を行う方法

以前作成した記事で、かなり好評を頂いている↓の記事ですが、

その文中、
「尚、現在CuDNNの最新版は9.1.1がリリースされていますが、CuDNN9.xは現在Pytorch側が対応していません。今後、Pytorchを構成するファイル内のCuDNNが9.xに対応するまでは、本稿における記載が有効という意味でもあります。」
と書きました。

そう言っている側から、Pythorchが現在Devブランチで先行公開しているVer2.5+Cu12.4で、内装しているCuDNNをVer9.x形式に対応してきたことが判明しました。

下図のように、PytorchのサイトからPreviewを選択することによって、Devブランチ版用のダウンロードコマンドを入手できますが、本稿では、Pytorch 2.5.0+Cu12.4環境において、前回記事と同様に最新CuDNNへの手動更新を行う方法を解説します。

2024年7月27日現在、PytorchはCuDNN9.xに対応した2.4.0+cu12.4が正式にリリースされ、A1111とComfyUIでも使用可能になったので、そちらに関しては以下の記事を参照してください。

本稿ではそのForgeを例にとって方法を解説していきます。

但し前回記事でも書きましたが、A1111でもComfyUIでも基本は同じなので、Pytorch2.5.0が正式に公開された後も、本稿の記述を参照すれば更新作業は出来るでしょう。

そして、Forgeのインストール環境ですがvenv仮想環境に各種ライブラリーがインストールされている前提で以下記述します。

まず下図のようにPowershellを開き、仮想環境をアクティベートし、「pip uninstall xformers」と実行して、xformersを削除します。
(※下図のようにxformersがインストールされていない場合もありますが、一応実行してみてください)

続けて、「pip uninstall torch」「pip uninstall torchvision」「pip uninstall torchaudio」と実行し、既存のPytorchライブラリーを全て削除します。

次に、「pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu124」と実行して、Pytorch 2.5.0のDevブランチをインストールします。

インストール完了後、pip listを実行して下図のようにライブラリーがインストールされていれば、Pytorchのインストールは完了です。

現状、Pytorch 2.5.0+Cu12.4に対応するxformersは開発されていないので、xformersは絶対にインストールしないでください。WebUIが起動しなくなります。間違ってインストールしてしまった場合は、xformersとPytorchを一度すべて削除し、Pytorchを再インストールすると直ります。

xformersを使用しないので、高速化オプションとしてはA1111と同様にopt-sdp-attentionを使うと良いでしょう。

ちなみにRTX4070 12GBを使用する私の場合、起動オプションは下のように記述してます。

set COMMANDLINE_ARGS=--opt-sdp-attention --pin-shared-memory --cuda-malloc --cuda-stream --opt-channelslast

WebUIを起動すると、下図のようにPytorch 2.5.0+Cu12.4が適用されていることがわかります。

ちなみに上図のように、Pythonのバージョンは3.11.9を使用していますが、A1111にしろForgeにしろ、「3.10.6でなければ動かない」等という事は全くありません。

現状3.12.xでは確かに動作しませんが、これはWebUIを構成するPythonライブラリーの内、まだ3.12用のコードが開発されていないライブラリーがあるからです。全てのライブラリーで3.12用のコードが開発されれば、3.12.xでも動くようになるはずです。

ComfyUIは既に正式版が3.11.xに対応しており、プログラム上必要とされるPythonライブラリーはComfyUIの方が圧倒的に多い為、ComyUIが先行してくれることによって、A1111とForgeで必要なPythonライブラリーは全て3.11用が開発されている為、動作する訳です。

また、A1111ではtransformersのバージョンが4.30.2に固定され、最新版に更新するとエラーメッセージが発生しますが、Forgeの場合、これまた下図のように最新版を使用することが出来ます。現時点では4.42.4ですね。但しpipコマンドだけでなく、requirements_versions.txtの書き換えも必要です。

さて本題に移りますが、venv環境にForgeをインストールする場合、CuDNN用dllファイルの場所は、下図のように「webui\venv\Lib\site-packages\torch\lib」になり、かつdllファイルは1個増えて8個あります。

これを前回記事と同様に、最新版のdllファイルに置き換える訳ですが、CuDNN側のパッケージ構成も、9.xから大きく変わっているので注意が必要です。

まず下のサイトから、最新のCuDNNインストーラーをダウンロードします。

ダウンロード後、インストーラーを起動してCuDNNをインストールしていきます。8.9.7はWindowsにインストールせずとも解凍するだけでdllファイルを抽出できましたが、9.xではWindowsへのインストールを行う必要があります。そして、これも繰り返しますが「WindowsにCuDNNをインストールしても仮想環境で動作するWebUIには何の関係もありません」

インストールが完了すると、下図のように「C:\Program Files\NVIDIA\CUDNN\v9.2\bin\12.x」にdllファイルが構成されます。この8個のファイルを、前述したvenvフォルダ内のdllファイル8個に置き換えてください。

ちなみに、現状最新のCuDNN 9.2.1用のdllファイルを適用しても、前回記事で紹介したように、大幅にVRAM消費量が削減される可能性は極めて低いです。まだ検証しきっていませんが、現時点では大して変わらないような気がしています。

それでも、「Pytorch内のCuDNNのバージョンはこうやって手動更新できるんだ」と知っておくことは、決して無駄にはならないと思います。

また、せっかくWindowsにCuDNNをインストールした訳ですから、下図のように環境変数も設定しておくべきでしょう。

この記事が気に入ったらサポートをしてみませんか?