1、安装Build Tools for Visual Studio 2022 ,勾选 使用C++的桌面开发 其他保持默认即可
https://aka.ms/vs/17/release/vs_BuildTools.exe
2、下载并安装CUDA Tookit 11.8,保持默认设置即可
https://developer.nvidia.com/cuda-toolkit-archive
3、下载TensorRT 8.6压缩包,跟cuda版本保持对应关系就行
https://developer.nvidia.com/nvidia-tensorrt-8x-download
4、在stable diffusion webui中安装stable-diffusion-webui-tensorrt插件,插件安装完后直接关闭stable diffusion webui即可
插件地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui-tensorrt
5、将TensorRT-8.6.1.6文件夹解压至stable-diffusion-webui-tensorrt插件目录,
确保TensorRT-8.6.1.6文件夹下一级就是bin等文件夹
6、切换stable diffusion webui分支为dev,目前仅在dev分支支持该插件
在stable diffusion webui 根目录打开cmd ,输入命令:
git checkout dev
git pull
如果后面需要切换回稳定的 master 分支,输入
git checkout master
7、启动stable diffusion webui ,不要使用python webui.py 启动,这样不会自动安装依赖的文件 。启动后能看到TensorRT标签页说明安装成功了
如果看到出现pycuda 模块缺少 就使用python launch.py启动就行
如果看到是缺少sd_unet说明是没有使用dev分支,或者dev分支没有更新,执行6步的命令就行
使用教程
1、转换模型为ONNX格式
默认留空就是选择你当前选择的模型,点击Convert Unet to ONNX 就会开始转换了,大约1分钟
强烈建议打开任务管理器看着,因为整个流程没有进度条,看着任务管理器你才知道他确实没有卡死
转换完成后的文件会在 stable-diffusion-webui\models\Unet-onnx 文件夹内
2、转换ONNX模型为TensorRT格式
切换到Convert ONNX to TensorRT 标签页
Onnx model filename 输入刚才转换好的文件地址,例如:
D:\stable-diffusion-webui\models\Unet-onnx\cetusMix_v4.onnx
剩下的参数是转换后所支持的图片生成参数,比如 Maximum width 和 Maximum height 指定了图片最大尺寸,后面使用时如果你要生成512x768的长图就会报错
* Maximum prompt token count 这个参数目前似乎没有用,最大还是只支持75 tokens
* 目前分辨率最大仅支持768*768
Convert ONNX to TensorRT 点击就会开始进行转换,根据参数的不同时间不同,会很久
我的机器上 512x512 跑了6分钟,768x768 跑了18分钟
Show command for conversion 会在右边生成命令,可以在关闭stable diffusion webui后在命令行窗口执行,节省显存
转换完成后会在 stable-diffusion-webui\models\Unet-trt 文件夹下看见.trt格式的文件
3、启用TensorRT模型
前往 setting 选项卡 stable diffsuion -> SD-UNET 选择转换后的文件或者 Automatic (右上角模型选择和tensorRT模型文件名相同时就自动启用),记得点击Apply Settings 保存
之后生成的图片就是使用TensorRT加速的了
加速效果确实挺明显,大概1.4倍左右的速度提升
目前问题还很多,分辨率太小,不支持controlnel ,不支持长tokens,转换时间过长(观察任务管理器似乎是单线程?)