見出し画像

How to install Stable Diffusion WebUI A1111 with TensorRT

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

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

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

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

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

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

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

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

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

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

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

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

2024年7月25日現在、Pyorchは2.4.0、対応するCUDAは12.4が最新のものとなりますが、同日現在、TensorRT側のライブラリーがPytorch 2.4.0に対応していない為、最新のPytorchをインストールするとTensorRTが動作しません。

従って当面は、「pip3 install torch==2.3.1 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121」とバージョンを指定して下図のコマンドを実行してください。

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

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

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

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

但し、この時インストール時の最新の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.2.1.18 --no-cache-dir」と入力して実行してください。

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

TensorRT用のライブラリーは2024年7月7日現在10.2.0が最新のバージョンとなります。

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

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

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

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

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

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

次に下図のように、そのコマンドを張り付けて実行します。

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

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

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

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

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

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

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

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

...

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

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

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

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

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

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

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

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

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

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

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

...

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

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

いいなと思ったら応援しよう!