はじめに
Stable Diffusion WebUIの拡張機能「TensorRT」のインストール方法、使い方を紹介します。
GeForceドライバーがTensorRTアクセラレーションに対応したことにより、2倍以上(実測)画像生成時間の高速化が可能です。
- TensorRTとは何なのか
- TensorRTで使用するGeForce Driverのバージョンについて
- TensorRTのインストール方法
- TensorRTの使い方
- TensorRTのベンチマーク結果
記事内の画像は日本語化環境です。
まだ日本語化が済んでいない方は↓の記事を参考に便利な日本語環境にしてみましょう。
Stable Diffusionで使用するTensorRTとは
TensorRTとは、NVIDIA社が提供するディープラーニング推論を高速化するためのソフトウェア開発キット(SDK)です。
学習済みモデルを最適化することで、推論時間を大幅に短縮できます。
簡単にいってしまえば、TensorRTをStable Diffusionで使用すると画像生成時間がかなり高速化されます。
僕の環境(RTX4070ti)では2倍以上高速化できました!!
TensorRTのメリット、デメリットについて
従来の高速化方法であるxformersやSDPAと比較すると、手間はかかりますがそれを上回る程の高速化が可能です。
ただモデル単位でTensorRTエンジンを作成する必要があるので、たくさんのモデル、LoRAを使う方にはあまりおすすめできません。
TensorRTの動作最小スペック
GPU | NVIDIA RTX 8GB以上のVRAMを搭載したGPU |
RAM | 16GB |
Driver | NVIDIA GeForce Driver 537.58以降 |
TensorRTでサポートされている機能
機能 | t2i,i2i |
モデル | SD1.5およびSD2.1、LoRA |
SDXLモデルはパッチでの対応が予定されているよ
Stable Diffusion TensorRTで使用するGeForce Driverについて
TensorRTを最大限活用するにはGeForce Driverの更新が必要です。
GeForce Game Ready Driver WHQL 545.84からTensorRTアクセラレーションが追加されて、さらに高速化されたんだ
GeForceドライバーがVer545.84よりも古い場合は下記記事を参考に更新してください。
Stable Diffusion TensorRTのインストール方法
- STEP1「Extensions」タブに移動する
stable diffusion webUIを起動したら上部に表示されるタブ一覧から「Extensions」をクリックします。
- STEP2「URLからインストール(Install from URL)」タブに移動する
Extensionsタブ内の「URLからインストール(Install from URL)」をクリックします。
- STEP3URLを入力する
「拡張機能のリポジトリのURL(URL for extension’s git repository)」に下記URLをコピペしてください。
https://github.com/NVIDIA/Stable-Diffusion-WebUI-TensorRT.git
URL for extension’s git repositoryの入力 - STEP4インストールボタンをクリックする
下段に表示されている「インストール」ボタンをクリックします。
- STEP5「適用してUIを再起動(Apply and restart UI)」をクリックする
stable diffusion webUIは設定を変更した場合はリロードする必要があります。
インストール済タブに表示される「適用してUIを再起動(Apply and restart UI)」ボタンをクリックしましょう。
Stable Diffusion TensorRTの使い方
インストール後もいくつか設定が必要になります。
設定も必要だからちょっと面倒だよねぇ
クイックセッティングリストの設定
Stable Diffusion WebUIの上部に、SD Unetのリストを表示させます。
- STEP1設定(Setting)タブに移動する
上部メニューから設定(Setting)をクリックして移動します。
- STEP2クイック設定(Quicksettings list)を表示する
左メニューからユーザーインターフェース(User interface)をクリックし、クイック設定(Quicksettings list)を表示します。
- STEP3sd_unetを入力する
クイック設定(Quicksettings list)内に「sd_」まで入力します。
表示されたリストから「sd_unet」をクリックします。
sd_unetの選択 sd_unet反映後 - STEP4設定を適用し再起動する
設定(Setting)タブ上段に表示されている「設定を適用(Apply settings)」をクリックします。
その後は右にある「UIの再読み込み(Reload UI)」をクリックします。
TensorRT エンジンを作成する
TensorRTを使用するには、モデルからTensorRTエンジンを作成する必要があります。
TensorRTエンジンはモデル単位で作成する必要があります。
たくさんのモデルやLoRAを使う場合は凄く大変だよ・・・
- STEP1モデルをロードする
TensorRTエンジンを作成するベースモデルを選択します。
txt2imgタブのチェックポイントや、上部メニューのStable Diffusion checkpointリストボックスからモデルを選択してください。
好みのモデルを選択 - STEP2TensorRTタブに移動する
上部メニューにTensorRTが表示されているのでクリックして移動します。
TensorRTタブに移動 - STEP3TensorRTエンジンを作成する
デフォルト設定のまま、「Export Default Engine」をクリックします。
エンジン作成完了まで数分を要するので気長にまちましょう。
エンジン作成中 エンジン作成完了
TensorRTで画像生成する
それでは実際にTensorRTを使用して画像生成してみましょう。
- STEP1SD Unetを選択する
上部に表示されている「SD Unet」リストから作成したTensorRTエンジンを選択します。
TensorRTエンジンの選択 - STEP2画像生成する
他は普段通りの設定で問題ありません。
一点注意があります。
解像度、バッチサイズについては、TensorRTエンジン作成時の設定に合わせる必要があります。デフォルト設定では解像度は512~768、バッチサイズは1~4にする必要があります。
範囲から外れるとエラーで画像生成できません。
TensorRTカスタムエンジンの作成
デフォルト設定以外の解像度で画像生成したい場合は、カスタムエンジンを作成しましょう。
- STEP1プリセットを選択する
TensorRTタブに移動し、適当なプリセットを選択します。
プリセットの選択 - STEP2Advanced Settingsをクリック
下に表示されるAdvanced Settingsをクリックしてリボンを開きます。
Advanced Settingsの表示 - STEP3好みの設定に変更する
主に変更するのは以下6つです。
Min height 最低高さ Optimal height 最適高さ(最大高さと同じ設定がベター) Max height 最大高さ Min width 最低幅 Optimal width 最適幅(最大幅と同じ設定がベター) Max width 最大幅 Advanced Settings設定項目 「Use static shapes.」をチェックすると静的エンジンが作成できます。
静的エンジンは解像度が固定されたエンジンで、VRAMの使用量が少ないです。
(画像生成時、エンジン作成時の解像度から外れるとエラーになる)「Use static shapes.」のチェックを外した状態では動的エンジンが作成できます。
動的エンジンは、最低、最大解像度内の画像が生成可能です。
基本的には動的エンジンがおすすめだよ
Hires. fixを使用する場合には、最終出力解像度に注意してください。
例えば512×512の画像をHires. fixで2倍にアップスケールする場合は、
TensorRTエンジン解像度の最低解像度を512以下、最大解像度を1024以上に設定してください。最大解像度768のエンジンでは1024解像度の画像が生成できません。
Stable Diffusion TensorRTでどの程度高速化されるのか
TensorRTの実力を測定しました。
まずは新旧Geforceドライバで高速化無し、xformers、SDPAで差があるのか確認しました。
モデルはmeina mixで200stepの生成を実施しています。
結果は以下の通りです。
ドライバ | 高速化 | 生成速度 | 速度比較 |
537.42 | 無し | 6.9it/s | -(基準) |
537.42 | xformers | 8.65it/s | 125% |
537.42 | SDPA | 10.56it/s | 153% |
545.84 | 無し | 7.12it/s | 103% |
545.84 | xformers | 8.93it/s | 129% |
545.84 | SDPA | 10.7it/s | 155% |
最新のドライバーに変更するだけで2~4%速度が速くなりました!
下記はTensorRTの結果です。
ドライバ | 高速化 | 生成速度 | 速度比較 |
545.84 | 無し | 7.12it/s | -(基準) |
545.84 | TensorRT | 16.65it/s | 234% |
公式では2倍速くなるといわれていましたが、なんと234%と2倍以上速くなりました!
また、TensorRTもxformers、SDPAと同様に同じ設定でも少し画像が変化するようです。
TensorRT・・・しゅ、しゅごい
現状、LoRAは実験段階のようで、チェックポイントに対してひとつだけ適用できます。
LoRAを使わない場合は良いんだけどねぇ・・・ひとつだけだとねぇ・・・
まとめ
今回は、Stable Diffusion WebUIの拡張機能 TensorRTの使い方を紹介しました。
使い方が限定されますが、これだけ生成時間が早くなりますから魅力的ですよね。
現状は、使い勝手が悪いのでSDPAの方が使用頻度が高いかな。
TensorRTの今後の展開が楽しみだ!
この他、桁違いの高速化が可能なLCM、Turboモデルも公開されています。
コメント