TensorRTを使ってStableDiffusionを爆速にする(Windows編)
こんにちは、Fくんです。
受験シーズンです...
これのwindows版ですね
どのくらい速くなるとかLinuxとかColabでの実行方法は前の記事を見ていただいて...
Lsmith
TensorRTをGUIで扱いやすくするものがだだっこぱんださんから出てます。
すぐwindows対応出ると思います
ここから先はtensorrt repoのdemo-diffusion.pyを動かしたい人向けです
Windowsで実行
CUDAをインストール
まずはCUDAをインストールしてください。
僕の場合はCUDA 11.6を使います。
↑ のリンクから、windows > 10 or 11 > exe(local) or exe(network) を選択してください。
cuDNNのインストール
cuDNN 8.6をダウンロードします。
↑ のリンクから、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をダウンロードします。
↑ のリンクで、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で動きませんでしたとさ
Discussion