Stable Diffusionを2倍高速化できるTensorRTを紹介します

ライダージャケットを着た日本人女性のAI写真

はじめに

Stable Diffusion WebUIの拡張機能「TensorRT」のインストール方法、使い方を紹介します。

GeForceドライバーがTensorRTアクセラレーションに対応したことにより、2倍以上(実測)画像生成時間の高速化が可能です。

この記事で理解できること
  • TensorRTとは何なのか
  • TensorRTで使用するGeForce Driverのバージョンについて
  • TensorRTのインストール方法
  • TensorRTの使い方
  • TensorRTのベンチマーク結果

記事内の画像は日本語化環境です。
まだ日本語化が済んでいない方は↓の記事を参考に便利な日本語環境にしてみましょう。

あわせて読みたい
Stable Diffusion WebUIを日本語化する手順を紹介します はじめに 画像生成の分野で注目されているStable Diffusion webUIは、ブラウザ上で簡単に使えるツールです。 しかし、初期状態では英語表示なので、操作や設定が難しい...
目次

Stable Diffusionで使用するTensorRTとは

TensorRTとは、NVIDIA社が提供するディープラーニング推論を高速化するためのソフトウェア開発キット(SDK)です。
学習済みモデルを最適化することで、推論時間を大幅に短縮できます。

簡単にいってしまえば、TensorRTをStable Diffusionで使用すると画像生成時間がかなり高速化されます。

僕の環境(RTX4070ti)では2倍以上高速化できました!!

TensorRTのメリット、デメリットについて

  • 画像生成時間の高速化(2倍程度)
  • モデルごとにTensorRT用エンジンを作成する必要がある
  • ControlNetが使えない

従来の高速化方法であるxformersやSDPAと比較すると、手間はかかりますがそれを上回る程の高速化が可能です。

ただモデル単位でTensorRTエンジンを作成する必要があるので、たくさんのモデル、LoRAを使う方にはあまりおすすめできません。

TensorRTの動作最小スペック

GPUNVIDIA RTX 8GB以上のVRAMを搭載したGPU
RAM16GB
DriverNVIDIA GeForce Driver 537.58以降
NVIDIAサポートより

TensorRTでサポートされている機能

機能t2i,i2i
モデルSD1.5およびSD2.1、LoRA
NVIDIAサポートより

SDXLモデルはパッチでの対応が予定されているよ

Stable Diffusion TensorRTで使用するGeForce Driverについて

TensorRTを最大限活用するにはGeForce Driverの更新が必要です。

GeForce Game Ready Driver WHQL 545.84からTensorRTアクセラレーションが追加されて、さらに高速化されたんだ

GeForceドライバーがVer545.84よりも古い場合は下記記事を参考に更新してください。

あわせて読みたい
NVIDIA GeForceドライバの更新方法を紹介します はじめに NVIDIA GeForceドライバの更新方法を紹介します。 この記事で理解できること GeForceドライバの種類 GeForceドライバのバージョン確認方法 GeForceドライバの...

Stable Diffusion TensorRTのインストール方法

  • STEP1
    「Extensions」タブに移動する

    stable diffusion webUIを起動したら上部に表示されるタブ一覧から「Extensions」をクリックします。

    Extensionsのクリックを誘導している
  • STEP2
    「URLからインストール(Install from URL)」タブに移動する

    Extensionsタブ内の「URLからインストール(Install from URL)」をクリックします。

    urlからインストールクリックを促している
  • STEP3
    URLを入力する

    「拡張機能のリポジトリのURL(URL for extension’s git repository)」に下記URLをコピペしてください。

    https://github.com/NVIDIA/Stable-Diffusion-WebUI-TensorRT.git
    拡張機能のリポジトリのURLにコピペを促している
    URL for extension’s git repositoryの入力
  • STEP4
    インストールボタンをクリックする

    下段に表示されている「インストール」ボタンをクリックします。

    インストールボタンクリックを促している
  • STEP5
    「適用してUIを再起動(Apply and restart UI)」をクリックする

    stable diffusion webUIは設定を変更した場合はリロードする必要があります。

    インストール済タブに表示される「適用してUIを再起動(Apply and restart UI)」ボタンをクリックしましょう。

    適用してUIを再起動クリックを促している

Stable Diffusion TensorRTの使い方

インストール後もいくつか設定が必要になります。

設定も必要だからちょっと面倒だよねぇ

クイックセッティングリストの設定

Stable Diffusion WebUIの上部に、SD Unetのリストを表示させます。

  • STEP1
    設定(Setting)タブに移動する

    上部メニューから設定(Setting)をクリックして移動します。

    設定タブクリックを促している
  • STEP2
    クイック設定(Quicksettings list)を表示する

    左メニューからユーザーインターフェース(User interface)をクリックし、クイック設定(Quicksettings list)を表示します。

    ユーザーインターフェースクリックを促している
  • STEP3
    sd_unetを入力する

    クイック設定(Quicksettings list)内に「sd_」まで入力します。

    表示されたリストから「sd_unet」をクリックします。

    リストに表示されたsd_unetクリックを促している
    sd_unetの選択
    sd_unetの反映確認を促している
    sd_unet反映後
  • STEP4
    設定を適用し再起動する

    設定(Setting)タブ上段に表示されている「設定を適用(Apply settings)」をクリックします。

    その後は右にある「UIの再読み込み(Reload UI)」をクリックします。

    設定を適用、UIの再読み込みクリックを促している

TensorRT エンジンを作成する

TensorRTを使用するには、モデルからTensorRTエンジンを作成する必要があります。

TensorRTエンジンはモデル単位で作成する必要があります。

たくさんのモデルやLoRAを使う場合は凄く大変だよ・・・

  • STEP1
    モデルをロードする

    TensorRTエンジンを作成するベースモデルを選択します。

    txt2imgタブのチェックポイントや、上部メニューのStable Diffusion checkpointリストボックスからモデルを選択してください。

    チェックポイントモデルの選択を促している
    好みのモデルを選択
  • STEP2
    TensorRTタブに移動する

    上部メニューにTensorRTが表示されているのでクリックして移動します。

    TensorRTタブへの移動を促している
    TensorRTタブに移動
  • STEP3
    TensorRTエンジンを作成する

    デフォルト設定のまま、「Export Default Engine」をクリックします。

    エンジン作成完了まで数分を要するので気長にまちましょう。

    デフォルト設定のままExport Default Engineクリックを促している
    出力ウィンドウに進行状況が表示されている
    エンジン作成中
    Exported Successfullyが表示されたらエンジン作成完了
    エンジン作成完了

TensorRTで画像生成する

それでは実際にTensorRTを使用して画像生成してみましょう。

  • STEP1
    SD Unetを選択する

    上部に表示されている「SD Unet」リストから作成したTensorRTエンジンを選択します。

    生成したエンジンの選択を促している
    TensorRTエンジンの選択
  • STEP2
    画像生成する

    他は普段通りの設定で問題ありません。

    一点注意があります。
    解像度、バッチサイズについては、TensorRTエンジン作成時の設定に合わせる必要があります。

    デフォルト設定では解像度は512~768、バッチサイズは1~4にする必要があります。
    範囲から外れるとエラーで画像生成できません。

TensorRTカスタムエンジンの作成

デフォルト設定以外の解像度で画像生成したい場合は、カスタムエンジンを作成しましょう。

  • STEP1
    プリセットを選択する

    TensorRTタブに移動し、適当なプリセットを選択します。

    プリセットの選択を促している
    プリセットの選択
  • STEP2
    Advanced Settingsをクリック

    下に表示されるAdvanced Settingsをクリックしてリボンを開きます。

    Advanced Settingsクリックを促している
    Advanced Settingsの表示
  • STEP3
    好みの設定に変更する

    主に変更するのは以下6つです。

    Min height最低高さ
    Optimal height最適高さ(最大高さと同じ設定がベター)
    Max height最大高さ
    Min width最低幅
    Optimal width最適幅(最大幅と同じ設定がベター)
    Max width最大幅
    Advanced Settingsの設定項目
スライダーとチェックボックスで構成されている
    Advanced Settings設定項目

    「Use static shapes.」をチェックすると静的エンジンが作成できます。

    静的エンジンは解像度が固定されたエンジンで、VRAMの使用量が少ないです。
    (画像生成時、エンジン作成時の解像度から外れるとエラーになる)

    Use static shapes.チェックを促している

    「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.42xformers8.65it/s125%
537.42SDPA10.56it/s153%
545.84無し7.12it/s103%
545.84xformers8.93it/s129%
545.84SDPA10.7it/s155%

最新のドライバーに変更するだけで2~4%速度が速くなりました!

下記はTensorRTの結果です。

ドライバ高速化生成速度速度比較
545.84無し7.12it/s-(基準)
545.84TensorRT16.65it/s234%

公式では2倍速くなるといわれていましたが、なんと234%と2倍以上速くなりました!

また、TensorRTもxformers、SDPAと同様に同じ設定でも少し画像が変化するようです。

黒髪ロングヘアーの女性のAIイラスト
高速化無し
黒髪ロングヘアーの女性のAIイラスト
xformers適用
黒髪ロングヘアーの女性のAIイラスト
SDPA適用
黒髪ロングヘアーの女性のAIイラスト
TensorRTで生成

TensorRT・・・しゅ、しゅごい

現状、LoRAは実験段階のようで、チェックポイントに対してひとつだけ適用できます。

LoRAを使わない場合は良いんだけどねぇ・・・ひとつだけだとねぇ・・・

まとめ

今回は、Stable Diffusion WebUIの拡張機能 TensorRTの使い方を紹介しました。

使い方が限定されますが、これだけ生成時間が早くなりますから魅力的ですよね。

現状は、使い勝手が悪いのでSDPAの方が使用頻度が高いかな。
TensorRTの今後の展開が楽しみだ!

あわせて読みたい
Stable Diffusionを高速化するSDPAを紹介します はじめに Stable Diffusionの高速化では定番となるxFormersがありますが、さらなる高速化が可能となるSDPAの使い方を紹介します。 導入の仕方から、生成時間の比較結果...

この他、桁違いの高速化が可能なLCM、Turboモデルも公開されています。

あわせて読みたい
Stable Diffusion WebUIでLCM-LoRAを使用する方法を紹介します Stable Diffusion WebUI(AUTOMATIC1111、Forge)で使用できる、LCM-LoRAが公開されたので使い方を紹介します。 この記事で理解できること LCM-LoRAの入手方法 Stable Dif...
あわせて読みたい
高速に画像生成できるSDXL Turbo-LoRAの使い方を解説します Stable Diffusionで使用できる、SDXL Turbo-LoRAモデルが公開されたので使い方を紹介します。 この記事で理解できること SDXL Turbo-LoRAの入手方法 Stable Diffusion W...
あわせて読みたい
Stable Diffusion WebUIでSDXL Turboを使う方法を紹介します SDXL Turboモデルが公開されたので、Stable Diffusion WebUI(AUTOMATIC1111)で使用する方法を紹介します。 この記事で理解できること SDXL Turboの入手方法 Stable Diff...
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

IT技術者でありDTMer
EDMの作曲を始めたところ楽しさに気づき、ロック以上にハマっています。
楽器はギターを弾いており、バンドではギタリストとしても活動しています。

コメント

コメントする

目次