🚀

TensorRTを使ってStableDiffusionを爆速にする(Windows編)

2023/02/06に公開

こんにちは、Fくんです。
受験シーズンです...

https://zenn.dev/ddpn08/articles/tensorrt-stable-diffusion

これのwindows版ですね
どのくらい速くなるとかLinuxとかColabでの実行方法は前の記事を見ていただいて...

Lsmith

https://github.com/ddPn08/Lsmith

TensorRTをGUIで扱いやすくするものがだだっこぱんださんから出てます。
すぐwindows対応出ると思います
ここから先はtensorrt repoのdemo-diffusion.pyを動かしたい人向けです

Windowsで実行

CUDAをインストール

まずはCUDAをインストールしてください。
僕の場合はCUDA 11.6を使います。

https://developer.nvidia.com/cuda-11-6-0-download-archive
↑ のリンクから、windows > 10 or 11 > exe(local) or exe(network) を選択してください。

cuDNNのインストール

cuDNN 8.6をダウンロードします。

https://developer.nvidia.com/rdp/cudnn-archive
↑ のリンクから、Download cuDNN v8.6.0 (October 3rd, 2022), for CUDA 11.x > Local Installer for Windows (Zip) を選択してください。

ダウンロードしたあと、展開して出てきた bin, lib, inclide の中身を、
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6
の中の対応するフォルダーにいれてください。

tensorRTのインストール

tensorRT 8.5をダウンロードします。

https://developer.nvidia.com/nvidia-tensorrt-8x-download
↑ のリンクで、I Agree To the Terms of the NVIDIA TensorRT License Agreementを選択すると、下にダウンロード可能なもののリストが出てくるので、そこから TensorRT 8.5 GA Update 2 > TensorRT 8.5 GA Update 2 for Windows 10 and CUDA 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7 and 11.8 ZIP Package をダウンロードします。

ダウンロードしたあと、展開した TensorRT-8.5.3.1 フォルダーを、C:\Program Files\NVIDIA GPU Computing Toolkit に移動し、C:\Program Files\NVIDIA GPU Computing Toolkit\TensorRT-8.5.3.1\lib を、環境変数「Path」に追加します。

nvinferのプラグインをビルド(オプション)

visual studio c++ とか、cmakeとかmakeとか入ってること確認してください。
以下はpowershellでの例になります。cmdの場合は適宜読み替えてください。

git clone https://github.com/fkunn1326/TensorRT
cd TensorRT
git submodule update --init --recursive
mkdir -p build; cd build
cmake .. -DTRT_LIB='path/to/tensorrt/lib' -DTRT_INCLUDE='path/to/tensorrt/include' -DCUDA_INC_DIR="path/to/cuda/include" -DBUILD_PARSERS=OFF -DBUILD_SAMPLES=OFF -Wno-dev
msbuild ALL_BUILD.vcxproj /p:Configuration=Release /p:DebugSymbols=false /p:DebugType=None

僕の環境では30分かかったので、気長に待ちましょう...
警告が大量に出ると思いますが、動くのでよしです!

nvinferのプラグインを置き換え

上でビルドした場合は、TensorRT\build\plugin\out の中に入っているもの、していない場合は、ここ からRelease.zipをダウンロードして、

  • nvinfer_plugin.dll
  • nvinfer_plugin.exp
  • nvinfer_plugin.lib
  • nvinfer_plugin_static.lib

を、C:\Program Files\NVIDIA GPU Computing Toolkit\TensorRT-8.5.3.1\lib に配置してください。上書きしてもらって構わないです。

実行する

事前にminicondaかanacondaをインストールしておいてください。
TensorRT/demo/diffusion に移動します。

次に、venvを作ってからモジュールをインストールします。

この時に、C:\Program Files\NVIDIA GPU Computing Toolkit\TensorRT-8.5.3.1\python の中にある、whlファイルをpythonのバージョンに合わせてインストールするようにしてください。
以下はcondaのpython3.10を使用するときの例です。

conda install -c conda-forge nvtx
pip install --upgrade
pip install "C:\Program Files\NVIDIA GPU Computing Toolkit\TensorRT-8.5.3.1\python\tensorrt-8.5.3.1-cp310-none-win_amd64.whl"
pip install -r requirements.txt
pip install pywin32

ここまでできたらとりあえずそのまま実行します。
あらかじめHuggingFaceのトークンを取得しておいてください。

mkdir -p onnx
mkdir -p engine
mkdir -p output
$env:HF_TOKEN=<HuggingFaceのトークン>
python3 demo-diffusion.py "a beautiful photograph of Mt. Fuji during cherry blossom" --hf-token=$HF_TOKEN -v

以上!多分動きます!

ちなみに僕はこれに5日間かけましたが、結局OOMで動きませんでしたとさ

AIものづくり研究会

Discussion