前进之路 发表于 2024-8-16 05:24:55

Stable Diffusion——利用TensorRT GPU加快提升Stable Diffusion出图速率

概述

Diffusion 模子在生成图像时最大的瓶颈是速率过慢的问题。为了解决这个问题,Stable Diffusion 采用了多种方式来加快图像生成,使得及时图像生成成为可能。最焦点的加快是Stable Diffusion 利用了编码器将图像从原始的 3512512 大小转换为更小的 46464 大小,从而极大地低落了计算量。它还利用了潜在表示空间(latent space)上的 Diffusion 过程,进一步低落了计算复杂度,同时也能保证较好的图像生成结果。在 消费级GPU 上(8G显存),Stable Diffusion 要生成一张形貌复杂图像大概需要 4 秒时间。
然而,对于许多面向消费者的应用来说,每张图像生成需要 4 秒的耗时仍旧过长。这时候,TensorRT 就发挥了重要作用。TensorRT 是英伟达(NVIDIA)推出的高性能深度学习推理(inference)库,旨在优化和加快深度学习模子的推理过程。它能够将练习好的深度学习模子优化并摆设到 NVIDIA GPU 上,实实际时推理使命的高效执行。TensorRT 的设计目标是提高推理性能、淘汰延迟和资源斲丧,并支持在边缘设备上运行。
TensorRT 提供了许多优化技术,包括网络层融合(layer fusion)、内存优化、精度降级(precision calibration)、量化(quantization)和深度学习模子的裁剪(network pruning)。通过这些技术,TensorRT 可以最大限度地利用 GPU 的并行计算本领,实现深度学习模子的高效执行。
2023年10月18日 Nvidia终于推出了官方的TensorRT插件Stable-Diffusion-WebUI-TensorRT,该插件可以直接在 webui 的 extension 中安装即可,默认支持cuda11.x。
感兴趣可参加:566929147 企鹅群一起学习讨论
情况设置要求

要利用Stable-Diffusion-WebUI-TensorRT插件加快,有几个重要的前提条件,GPU必须是NVIDIA的(俗称N卡),GPU的显存必须在8G以上,包含8G,GPU驱动版本大于即是537.58,假如电脑没有别的深度学习模子要练习,发起驱动更新到最新的版本。物理内存大于即是16G。
支持Stable-Diffusion1.5,2.1,SDXL,SDXL Turbo 和 LCM。对于 SDXL 和 SDXL Turbo,官方保举利用具有12GB 或更多 VRAM 的 GPU,以得到最佳性能。
https://i-blog.csdnimg.cn/blog_migrate/8ac4b9c750e3eeca3a26bdcea69fe2d4.png
查看GPU驱动版本:
https://i-blog.csdnimg.cn/blog_migrate/27dea467fbfd8f7bf1242784c1a86860.png
查看内存与显卡型号:
https://i-blog.csdnimg.cn/blog_migrate/46980d67fb47b9f279273f3c3fadf5e7.png
我利用的情况是win10,GPU 3080 10G显存,32G内存,Stable Diffusion用的是秋叶大佬的4.5这个版本。
Stable-Diffusion-WebUI-TensorRT安装

1.安装

启动Stable-Diffusion-WebUI,找到扩展,然后从网址安装TensorRT插件:
插件网址:https://github.com/NVIDIA/Stable-Diffusion-WebUI-TensorRT.githttps://i-blog.csdnimg.cn/blog_migrate/5d820d2e4e744e8c0c2ddb57ed10aaf1.png
点击安装:
https://i-blog.csdnimg.cn/blog_migrate/6beb3e341da9bdec194fd71a0585d363.png
等侍2到10分钟,安装完成:
https://i-blog.csdnimg.cn/blog_migrate/52f939a526b2b63c3eb0821978c12e75.png
然后重启Stable-Diffusion-WebUI,就可以看到:
https://i-blog.csdnimg.cn/blog_migrate/45cd8ad2ba52df85babc1c8fcfb5e129.png
https://i-blog.csdnimg.cn/blog_migrate/7776bf3f93e3ec6c595c88a8a1605569.png
2.设置

打开设置——>用户界面——>快捷设置列表——>输入"sd_unet",然后保存设置,重载UI:
https://i-blog.csdnimg.cn/blog_migrate/2492252a39a226316cf1c975c01ce93d.png
重启之后就可以看到多了一个SD Unet的选框了:
https://i-blog.csdnimg.cn/blog_migrate/8e311a730407d73bc26623a872715c49.png
3.模子转换

选择要利用的模子,然后打开TensorRT——>TensorRT导出——>选择预设尺寸——>导出引擎:
https://i-blog.csdnimg.cn/blog_migrate/011a4f4641c9d3c103d4be3fbb6aa0b1.png
关于导出尺寸,这是要设置不用尺寸,但尺寸大小只能是2的幕,这里面导出的模子为onnx模子,假如接触过深度学习的都清楚这个尺寸的含义。
4. 测试推理速率

利用TensorRT推理时,选择的模子与SD Unet要对应,出图的宽度与高度,也要对应上一步导出的模子的尺寸:
https://i-blog.csdnimg.cn/blog_migrate/54da75c223bcbd70401681ca0667a878.png
测试出图速率,利用TensorRT出图时,第一张图会很慢,要计算时间可以从第二伸开始算,下面出图尺寸是1024*1024:
利用TensorRT推理:
https://i-blog.csdnimg.cn/blog_migrate/88f5667f33b0e4208e6700a0fb092f9d.png
不利用TensorRT推理,可以看出慢了2点几秒,差不多3秒:
https://i-blog.csdnimg.cn/blog_migrate/6b609f941558e62f4790a1f205273fb7.png
利用TensorRT推理(出图尺寸512*512):
https://i-blog.csdnimg.cn/blog_migrate/887bb624b4c7797f08c01af4cabdc1ed.png
不利用TensorRT推理(出图尺寸512*512),可以看出,不利用TensorRT差不多要慢上一倍左右:
https://i-blog.csdnimg.cn/blog_migrate/b8d1bc9aef55f0b7fcc9410a74440479.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Stable Diffusion——利用TensorRT GPU加快提升Stable Diffusion出图速率