【TensorRT】Stable Diffusion Web UIを倍速にできるNVIDIA製の神AIツール!使い方〜実践まで
Stable-Diffusion-WebUI-TensorRTは、Stable-Diffusion-WebUIでTensorRTを使用するための拡張機能で、RTXのGPUで生成速度を高速化できます。その速度は速いといわれていた従来の手法の2倍以上です!
今回は、Stable-Diffusion-WebUI-TensorRTの概要や使い方についてお伝えします。Stable-Diffusion-WebUIの生成スピードを速くしたい方は是非最後までご覧ください!
本記事は2024年4月の執筆時点での情報となります。2024年4月現在、Stable-Diffusion-WebUI-TensorRTの最終更新は2024年3月14日となっています。最新の環境だと動作しない可能性があるのでバージョン確認は必ず行ってください。
Stable-Diffusion-WebUI-TensorRTの概要
Stable-Diffusion-WebUI-TensorRTとは、Stable-Diffusion-WebUIでTensorRTを使用するための拡張機能です。対応GPUはNVIDIAのRTX GPUであり、Stable-Diffusion-WebUIの生成速度を高速化できます。現在は、Stable Diffusion 1.5および2.1をサポートしており、Native SDXLのサポートは今後のリリースで追加される予定です。
まずは、TensorRTがそもそもどのようなものなのか簡単に説明します。TensorRTとは、ディープラーニングモデルを最適化して、NVIDIA GPU上での推論を高速化するためのツールです。
具体的には、TensorFlow、PyTorchなどのディープラーニングフレームワークで訓練されたモデルを取り込んで最適化すると、効率的に推論できます。つまり、モデルを自分の環境に合わせて生成速度を高速化できるのです。具体的な速度は、以下のグラフをご覧ください。
このグラフはNVIDIAが発表している従来手法とTensorRTの生成速度の比較ですが、これまで速いといわれていたxformersより約2倍ほど速く生成できるのが分かります。実際にどのくらい違うのかは後ほど検証するのでぜひチェックしてください。
次に、TensorRTを動かすのに必要な要件ですが、以下の表に最小要件をまとめます。
GPU | NVIDIA RTX GPUs with 8GB of VRAM |
---|---|
RAM | 16GB RAM |
Connection | Internet connectivity during installation |
Driver | NVIDIA Studio Driver 537.58, Game Ready Driver 537.58, NVIDIA RTX Enterprise Driver 537.58, and above |
最小要件でもある程度の性能が求められるので、快適に動作するにはVRAMは12GB以上、RAMは32GB以上の環境が必要です。ドライバーは使用する時点で最新のものをインストールしてください。
生成速度を大幅に向上できるTensorRTですが、まだ開発段階なのでその他の拡張機能が使えなくなったり、解像度が64の倍数の画像しか生成できなかったりなどの制約が存在します。そのため、次にStable-Diffusion-WebUI-TensorRTの使い方を紹介しますが、、新しくStable-Diffusion-WebUIをインストールしてそTensorRTを導入していきましょう。
なお、Stable-Diffusion-WebUIであるAUTOMATIC1111のインストール方法について詳しく知りたい方は、下記の記事を合わせてご確認ください。
Stable-Diffusion-WebUI-TensorRTの使い方
次に、Stable-Diffusion-WebUI-TensorRTのインストール方法を紹介します。まず、Stable-Diffusion-WebUIのインストールから行いましょう。
今回は、以下のNVIDIAにあるTensorRT Extension for Stable Diffusion Web UIのサポートページを参考に導入していきます。最初に、githubでStable-Diffusion-WebUIのzipファイルをダウンロードしてください。
次に、ダウンロードしたzipファイルを任意の場所に置き、解凍しましょう。解凍したら、WebUIを最新バージョンに更新するupdate.batファイルを起動します。
更新が完了したらコマンドプロンプトを閉じてください。続いて、stable diffusion web ui\sd.webui\webuiにあるwebui-user.batファイルを編集し、起動設定を行います。
今回は、set COMMANDLINE_ARGS=–autolaunch –update-check –xformers と設定しました。
ここまで完了したら、Run.batをクリックしてWebUIを起動しましょう。各種インストールが開始され、完了したらWebUIが起動し、以下のような画面になります。
これでWebUIのインストールは完了です。続いて、TensorRTのインストールを行います。
Extensions→Install from URLをクリックし、「https://github.com/NVIDIA/Stable-Diffusion-WebUI-TensorRT.git」を貼り付け、Installをクリックしましょう。
インストールが完了したら、Installedに移動し、Stable-Diffusion-WebUI-TensorRTにチェックがついているのを確認して、Apply and restart UIをクリックしてください。
再起動後に、TensorRTのタブが追加されていたら成功です。
上の画像の画面まで来たら、そのままExport Default Engineをクリックすると、ONNX変換された形式のファイルとTensorRT 形式のファイルができます。実行の様子はターミナルで確認しましょう。
Export Successfullyと表示されれば成功です。
そして、Available TensorRT Engine Profilesの左の更新ボタンをクリックしてください。以下の画像のように、変換後のモデルが対応している生成の条件などが表示されていたら、いよいよ最後の工程です。
次に、SettingタブのUser interfaceに移動します。
Quicksetting listにsd_unetを追加してください。
画面上部のApply settingをクリックした後に、Reload UIをクリックしましょう。
すると、SD Unetの切り替えができるようになり、Noneを選択すると簡単にTensorRTをoffにできます。また、TensorRT LoRAを使用する場合は、使いたいLoRAを指定して変換してください。
少し手順は多かったですが、これで導入は完了なので早速使っていきましょう!
Stable-Diffusion-WebUI-TensorRTを実際に使ってみた
今回検証で使用する環境は以下の通りです。
- GPU:RTX2060super 8GB
- RAM:16GB
- Driver:GeForce Game Ready Driver 545.84
まずは、適当なプロンプトを入力します。プロンプトには、下記の値を入力しました。
(masterpiece, best quality), 1girl, cute,smile
一方で、ネガティブプロンプトに入力した値は下記の内容です。
low quality,worst quality,out of focus,ugly,error,JPEG artifacts,low resolution,blurry,bokeh
結果は、3秒ほどで以下の画像を生成してくれました。
私の環境ではもっと時間がかかっていいはずなので、十分高速になっています!実際に高速生成できるのが分かったので、ここからは通常のモデルとの比較や、プロンプトをもっと複雑にした場合の生成時間の変化を見ていきます。。
なお、Stable Diffusionの40倍の速さで画像を出力できるAIについて知りたい方はこちらをご覧ください。
Stable-Diffusion-WebUI-TensorRTの推しポイントである高速生成は本当なのか?
ここでは、「通常モデルとの生成時間の比較」と「プロンプトを複雑にした場合の生成時間の変化」を検証します。
通常モデルとの生成時間の比較
まずは通常モデルでの生成時間です。入力するプロンプトは、以下の簡単なプロンプトで、ネガティブプロンプトは前述のものと変えずに生成します。
(masterpiece, best quality), cat
結果は、4.2秒で以下の画像を生成しました。
あれ?通常モデルでも十分速いですね。続いて、TensorRTに変換したモデルです。
プロンプトは、通常モデルと同様です。結果は、2.8秒で以下の画像を生成しました。
生成時間は通常モデルに比べて1.5倍ほど速くなっていますが、公表値の約3倍には届いていません。生成時間にはVRAMの容量が大きく関わってくるので、最低要件の8GBである私の環境ではそこまで効果が発揮されない可能性もあります。。
ただ、確実に速くなっているので、導入するメリットはありそうです!
プロンプトを複雑にした場合の生成時間の変化
次は、プロンプトをより複雑にした場合、生成時間に影響はあるのか検証します。入力するプロンプトは、以下のプロンプトで、ネガティブプロンプトは前述のものと変えずに生成します。
(masterpiece, best quality), 1girl, collarbone, wavy hair, looking at viewer, blurry foreground, upper body, necklace, contemporary, plain pants, ((intricate, print, pattern)), ponytail, freckles, red hair, dappled sunlight, smile, happy
結果は、2.8秒で以下の画像を生成しました。
生成時間は2.8秒と、シンプルなプロンプトと変化はありませんでした。プロンプトを複雑にしても、生成時間に影響はないようです。通常のモデルに比べて生成時間は速いですが、実行する環境の性能に大きく左右されるので、公表されているような性能を出すにはかなり高性能な環境が必要と考えられます。。
性能面の制約がある点や他機能と併用できない・出力画像の解像度が制限されるなどはありますが、今後のリリースでその辺りは改善されていくようなので、今後のアップデートに期待しましょう!
なお、Stable Diffusionよりも高解像度の画像を生成したい方は、下記の記事を合わせてご確認ください。
Stable-Diffusion-WebUI-TensorRTで画像生成を効率化しよう!
Stable-Diffusion-WebUI-TensorRTは、NVIDIAが開発したStable-Diffusion-WebUIでTensorRTを使用するための拡張機能で、RTXGPU上で画像生成の時間を短縮できます。
通常のモデルより約3倍、高速なxformersを使った手法より約2倍ほど速いです。
実際に使ってみた感想は、通常モデルに比べ1.5倍ほど速くなりましたが、公表値の3倍には届かず、生成時間は実行する環境の性能に大きく左右されるのが分かりました。
今後のリリースで、性能要件の引き下げや解像度や他の機能との連携などができない制約が解除されるのが予想され、ますます画像生成の効率化が期待できるので、気になった方は是非試してみてください!
生成系AIの業務活用なら!
・生成系AIを活用したPoC開発
・生成系AIのコンサルティング
・システム間API連携
最後に
いかがだったでしょうか?
弊社では
・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
・ハルシネーション対策AIツールの開発
・自社専用のAIチャットボットの開発
などの開発実績がございます。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。
「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、サービス紹介資料もご用意しておりますので、併せてご確認ください。