LoginSignup
1
2

How to install Stable Diffusion WebUI A1111 with TensorRT

Last updated at Posted at 2024-05-21

自分自身への備忘録を兼ねて、Windows環境にStable Diffusion WebUI A1111をインストールし、尚且つTensorRTをもインストールする手順書を作成しました。

TensorRTを使用するので、基本的に12GB以上のVRAMを持つnVidia製VGAを搭載しているパソコンへのインストールを前提にした記述です。

また、GeForce用のドライバーは最新のものに更新しておいてください。

Python 3.10.6以降の3.10.xバージョンとgitはインストールしている前提で以下、記述します。

まず、任意のインストール用フォルダを作成し、下図のようにそのフォルダにパスを通した状態でpowershellを起動してください。管理者権限である必要はありません。
タイトルなし.png

次に下図のように、「git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
」と入力して実行してください。これにより、インストール用のファイルが任意のフォルダにダウンロードされます。
タイトルなし.png

ダウンロードが完了したら、下図のように「cd stable-diffusion-webui」と入力して実行し。、カレントフォルダをダウンロードしたフォルダ内に移動させます。
タイトルなし.png

ここから先は、最新のPytorch環境やxformers、TensorRT用のPythonライブラリーをインストールする為に、私が工夫した独自の手順になります。

まず、下図のように「python -m venv venv」と入力して実行し、Python用の仮想環境を構築します。
タイトルなし.png

次に下図のように、「venv/scripts/activate」と入力して実行し、仮想環境をアクティベートします。
タイトルなし.png

次に、Pytorchの公式サイト(https://pytorch.org/get-started/locally/
)から、CUDA用torchをインストールする為のコマンドをコピーします。
タイトルなし.png

対応するCUDAのバージョンは随時更新されていきますが、Pytorch公式サイトからコマンドをコピーしてくることにより、その時の最新のバージョンが使用できます。

2024年5月21日現在、Pyorchは2.3.0、対応するCUDAは12.1が最新のものとなります、

次に下図のように、コピーしてきたコマンドを張り付けて実行します。
タイトルなし.png

この時、インストールされるライブラリーは、torch、torchvision、torchaudioの3つですが、torchaudioは後でアンインストールしても支障はありません。

また、この時「pipのバージョンを更新してください」というメッセージが表示されるので、下図のように「python.exe -m pip install --upgrade pip」と入力して実行します。
タイトルなし.png

次に下図のように、「pip install xformers」と入力して実行し、xformersをインストールします。
タイトルなし.png

但し、この時インストール時の最新のxformersが最新のPytorchに対応していない場合、xformersの前にインストールしておいたtorch+cuライブラリーが強制的にアンインストールされ、CUDAに対応していないCPU用のtorchがインストールされてしまう場合があります。
(ちなみに、この問題はComfyUIでも発生し、その時はComfyUI自体が起動しなくなります。)

その場合は、一度「pip uninstall torch」を実行してCPU用のtorchを削除し、前述のCUDA対応Pytorch用のインストールコマンドを再度実行してください。

xformersとPytorchのインストールが完了したら、次にTensorRT用のPythonライブラリーをインストールしていきます。

まず、下図のように「python -m pip install nvidia-cudnn-cu12==9.1.1.17 --no-cache-dir」と入力して実行してください。
タイトルなし.png

次に下図のように、「python.exe -m pip install --extra-index-url https://pypi.nvidia.com/ tensorrt tensorrt-bindings tensorrt-libs --no-cache-dir」と入力して実行してください。
タイトルなし.png

TensorRT用のライブラリーは現在10.0.1が最新のバージョンとなります。

次に、onnxruntime関係のライブラリーをインストールしていきます。

以前は、これらのライブラリーは手動でインストールしなくても、SDからTensorRT拡張機能をインストールした時に自動的にインストールされていた筈なのですが、どこかの時点で、インストールされなくなったようです。

ここで手動インストールしておけば確実なので、ここでインストールしておきます。

まず、下図のように「python.exe -m pip install importlib_metadata onnx polygraphy」と入力して実行してください。
タイトルなし.png

次に、onnxruntimeの公式サイト(https://onnxruntime.ai/docs/install/
)から、最新のCUDAに対応したライブラリーのインストール用コマンドをコピーします。
タイトルなし.png

2024年5月21日現在、CUDA12.xに対応したライブラリーが最新のものとなります。

次に下図のように、そのコマンドを張り付けて実行します。
タイトルなし.png

※2024年5月26日現在、CUDA対応onnxruntime-gpuの最新バージョン、1.18以降をインストールすると、TensorRTには問題は生じませんが、Controlnetの一部機能に障害が発生します。

Controlnetがその問題に対応するまで、onnxruntime-gpuのインストールに関しては、下記のように、バージョンを1.17.1に固定してインストールしてください。

pip install onnxruntime-gpu==1.17.1 --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

これで、事前に用意すべきPythonライブラリーのインストールは完了です。ここで一度powershellは閉じてください。

次に、下図のようにstable-diffusion-webuiフォルダ内にあるwebui-uer.batファイルを実行してください。
タイトルなし.png

すると、下図のようにA1111のインストールが開始されます。しばし時間がかかります。
タイトルなし.png

インストールが完了すると、下図のようにWebUIが起動します。
タイトルなし.png

次に、TensoRTの拡張機能をインストールしていきます。

下図のようにExtentionsタブ内のInstall from URLタブを開き、アドレスは「https://github.com/NVIDIA/Stable-Diffusion-WebUI-TensorRT
」と入力して、Installをクリックしてください。
タイトルなし.png

インストールが完了したら、下図のようにInstalledタブからApply and restart UIをクリックして、A1111を再起動してください。
タイトルなし.png

A1111再起動後、下図のようにTensorRTタブが追加されていれば、TensorRTのインストールも成功です。
タイトルなし.png

...

それでは次に、TensorRT用のモデルを作成していきます。

下図のように、TensorRT上で使用したいモデルを選択した状態でTensorRTタブを開き、PresetはDefaultのまま、Export Default Engineをクリックします。
タイトルなし.png

処理速度はパソコンのスペックに依存しますが、しばらく時間がかかります。
タイトルなし.png

下図のように、Exported Successfullyと表示されたら、初期モデルの作成完了です。
タイトルなし.png

但し、これだけではTensorRTを使用することは出来ません。実際にTensorRTを使用する為には、実際に使用する環境に合わせて2つ目のモデルを再度作成する必要があります。初期モデル作成後、一度A1111を再起動してください。

再起動後、下図のように再度TensorRTタブを開き、今度はDefault設定ではなく、自分が使用したい環境に近い選択肢を選びます。また必ずUnetタブに作成したモデルを適用してください。

ここでは768x768 - 1024x1024 | Batch Size 1-4を選択しています。そして更にAdvanced Settingsを開きます。
タイトルなし.png

下図のように各種のパラメーターを設定しますが、TensorRTではここで設定した範囲内でしか画像生成が出来ません。この場合は縦横共に、最小832最大1024に設定しています。
タイトルなし.png

また、Tokenサイズはプロンプトを長く設定できるようにする為に、最適値と最大値はMax750にしておくことを推奨します。

2つめの実用の為のモデル作成が完成したら、下図のようにTensorRTによる画像生成が可能になります。
タイトルなし.png

この場合、縦横の設定は最小832、最大1024ですから、解像度指定はその範囲でしかできません。

...

手順としては以上となります。

TensorRT自体がまだ発展途上の技術であり、更にnVidiaは最新のTensorRTライブラリー10.xに正式対応したVer3を開発中のとことで、何かしら追記すべき事項があり次第、後日追記するかもしれません。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2