TensorRTの拡張機能で爆速ガチャ生成
TLで賑わっていた話題なので、私もやってみることにしました。
TensorRT での爆速生成自体は随分前に局所的に盛り上がった話題だったのですが、どうも最近 WebUI の拡張機能として、まさかの NVIDIA の公式サポートで実装されたようです。
使用までにちょっと特殊な手順が必要なのと、個人の環境によってはインストールに失敗したり、エラーがでたりするようなので、尻込みしてしまう人もいるかと思います。
私も素人ですので質問にお答えするようなことはできませんが、私なりにやってみた手順を残すことでその一助になれればと思います。
TensorRT の 拡張機能をインストール
今回は WebUI のインストール環境として、Stability Matrix を介してA1111版 の SD WebUI をインストールしている事を先にお断りしておきます。
こちらの記事の通りの環境です。
Extensions から URL を入れてインストール
WebUI を起動し、Extentions ➡ Install from URL を選択しましょう。
https://github.com/NVIDIA/Stable-Diffusion-WebUI-TensorRT.git
こちらのURLをコピペして、Install ボタンを押します。
他の拡張機能をインストールするよりも少しばかり時間がかかりました。
焦らずじっくり待ってください。
Install ボタン の下に完了した旨が出ましたら、次に進みます。
Extentions ➡ Installed で 「Stable-Diffusion-WebUI-TensorRT」 を確認し、Apply and quit を押して WebUI を再起動します。
Stability Matrix で WebUI をインストールしている場合、動作が止まってしまっていますので、もう一度 Launch ボタンを押して起動しなおします。
python.exe - エントリポイントが見つかりません。
あらら。 よく聞くエラーみたいです。
この後、Stability Matrix から古い WebUI をアンインストールし、PCを再起動した後に再インストールしたところ、一度はエラーは出なくなりました。
ただ残念なこと、その後ももう一度エラーが出てしまったので、再インストールだけでは完璧ではなさそうです。
その後も出たり出なかったりで面倒なので、しっかりと対応をしておこうと思います。
CUDNNをダウンロードする
こちらのページでダウンロードできます。
ダウンロードするには、NVIDIAのアカウントが必要です。アカウントを持っていない場合は、アカウントを作成し、ログインします
今回は Download cuDNN v8.9.5 (September 12th, 2023), for CUDA 11.x を選びました。
以前うちで解説した CUDA Toolkit との互換性を考えてのことです。
これに関しては個人の環境にもよるかと思いますので、ご注意ください。
コマンドプロンプトまたはターミナルを開き、以下のコマンドを実行すると現在インストールしているCUDAのバージョンを確認します。
nvcc --version
色をつけた行の内容によると、うちはCUDAのバージョン11.8がインストールされていることがわかります。
これに基づいてcuDNNのバージョンを選択すると、Download cuDNN v8.9.5 (September 12th, 2023), for CUDA 11.x のバージョンをダウンロードするのが適切なんだそうです。
ダウンロードしたZIPファイルを解凍し、中身を確認します。
次に、先ほどの 4つの エラーに書かれていたファイルを確認します。
4つとも同じフォルダに入っています。
私うちの環境だとCドライブの A1111_20230923 フォルダに Stability Matrix でインストールしているので、
C:\A1111_20230923\Packages\ 以下のアドレスです。
stable-diffusion-webui\venv\Lib\site-packages\nvidia\cudnn\bin
ダウンロードした CUDNN の binフォルダ の内容物で上書き移動し、更新します。
もしかしたらこの4つだけ更新でも良いのかもしれませんが、中途半端に変えてしまうと別の不具合が出る恐れがあるので、私は丸ごと上書きしました。
とりあえずこれでうちの環境ではエラーが出なくなりました。
TensorRT Extension タブを開く
TensorRT を開くと、このようなUIが開きました。
とりあえずアナウンスである右の文章を翻訳しておきます。
日本語になりましたが、私にはさっぱりです。
とりあえず、1つずつ進めていきましょう。
選択中のモデルから TensorRTエンジンを生成する
Preset 部分をクリックすると、いろいろ出てきました。
よくわからないのでChatGPTちゃんに聞いてみたところ、
私の普段のスタイルでは 「512x512 - 768x768 | Batch Size 1-4 (Dynamic) で良いんじゃねーの? 知らんけど」 と言われました。
後でわかることですが、これから作るのは現在読み込んでいるモデルを参照してつくるエンジンみたいです。
今入っているのは SD1.5 用の自作マージモデル です。
実はこれ、Default を選択した時と同じ設定らしいです。
Advanced Settings を開くと内容を自分で細かく設定できそうですが、初心者は Default で良いと思います。
なんか右上に Info が出ましたが、エラーではないようです。
「ONNXファイル見つかんねーから、こっちで勝手に作るわ」とか言ってますので、黙って見守りましょう。
しばらくすると画面下部に「完成したぜ」と出てました。
リサイクルマークを押すと、選択していたモデルと同じ名前がでています。
これで私のマージモデル専用のエンジンができました。
TensorRTイメージ生成のアクティブ化
Settings > User Interface を選択しましょう。
Quick Settings の欄をクリックして、 「sd_unet」を追加します。
設定を保存してUIをリロードすると、画面上部に SD Unit 選択欄が追加されました。
ここで対応したエンジンを選択して生成することで爆速化ができるようにうなるようですね。
生成してみる
ValueError: Input shape must be divisible by 64 in both dimensions.
いつものごとく、400x600pix で生成しようとしたところ、エラーが出ました。
このエラーメッセージは、入力画像の両方の寸法(高さと幅)が 64 で割り切れなければならないことを示しています。
たとえば、画像の寸法が 512x512 や 640x640 のように 64 で割り切れる場合は問題ありませんが、400x600 のように 64 で割り切れない寸法の場合、このエラーが発生するそうです。
サイズを調整することで、無事生成することに成功しました。
大体1画像を3~4秒で生成してくれています。
ガチャ引きとしてはかなりありがたい速度が出ますね。
素晴らしい拡張機能に出会えたと思います。
あとは LoRA も TensorRT 用にモデルを作り直さないといけないってことなんでしょう。
土台ガチャの際によく使うLoRAは作っておいて損はなさそうです。
ただ、現在は TensorRTモデル を1つしか使用できない模様。
う~ん、prompt のみで絵柄を調節している方なら問題ないのかもしれません。
私は自作の絵柄LoRAや、年齢感変更LoRAとか多用するので、ちょっと残念ですね。
以下、画像サイズ用の覚え書きと、カスタムエンジンの生成結果を残しておきます。
毎回計算するのめんどくさいですしね。
あと、デフォルトだとサイズ縛り的にスマホ壁紙のような極端に縦長の画像が出せないんですよね。
9:16 と 9:19.5 といったサイズに対応できるカスタム設定も残しておきます。
ここから先は
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?