当前位置: 首页 > news >正文

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。

环境配置要求

要使用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,以获得最佳性能。

在这里插入图片描述
查看GPU驱动版本:
在这里插入图片描述
查看内存与显卡型号:
在这里插入图片描述

我使用的环境是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.git在这里插入图片描述
点击安装:
在这里插入图片描述
等侍2到10分钟,安装完成:
在这里插入图片描述

然后重启Stable-Diffusion-WebUI,就可以看到:
在这里插入图片描述
在这里插入图片描述

2.设置

打开设置——>用户界面——>快捷设置列表——>输入"sd_unet",然后保存设置,重载UI:
在这里插入图片描述
重启之后就可以看到多了一个SD Unet的选框了:
在这里插入图片描述

3.模型转换

选择要使用的模型,然后打开TensorRT——>TensorRT导出——>选择预设尺寸——>导出引擎:
在这里插入图片描述
关于导出尺寸,这是要设置不用尺寸,但尺寸大小只能是2的幕,这里面导出的模型为onnx模型,如果接触过深度学习的都清楚这个尺寸的含义。

4. 测试推理速度

使用TensorRT推理时,选择的模型与SD Unet要对应,出图的宽度与高度,也要对应上一步导出的模型的尺寸:
在这里插入图片描述

测试出图速度,使用TensorRT出图时,第一张图会很慢,要计算时间可以从第二张开始算,下面出图尺寸是1024*1024:

使用TensorRT推理:
在这里插入图片描述
不使用TensorRT推理,可以看出慢了2点几秒,差不多3秒:
在这里插入图片描述

使用TensorRT推理(出图尺寸512*512):
在这里插入图片描述

不使用TensorRT推理(出图尺寸512*512),可以看出,不使用TensorRT差不多要慢上一倍左右:
在这里插入图片描述

相关文章:

  • localStorage、sessionStorage、cookie区别
  • Windows 安装和连接使用 PgSql数据库
  • 【Git】Windows下通过Docker安装GitLab
  • 【PyQt】08 - 编辑Tab顺序
  • springboot集成Sa-Token及Redis的redisson客户端
  • 计算机二级数据库之数据模型(三层相关的结构)
  • 【国产MCU】-CH32V307-触摸按键检测(TKEY)
  • 揭秘 2024 春晚刘谦魔术——代码还原
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • 使用Express 构建高效的Web应用程序
  • STM32控制JQ8400语音播报模块
  • NSSCTF Round18 Crypto年画复现
  • 【lesson53】线程控制
  • Android14之Android Rust模块编译语法(一百八十七)
  • 内网穿透 | 推荐两个免费的内网穿透工具
  • $translatePartialLoader加载失败及解决方式
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Android 控件背景颜色处理
  • JavaScript新鲜事·第5期
  • Less 日常用法
  • Rancher-k8s加速安装文档
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • STAR法则
  • VuePress 静态网站生成
  • Yii源码解读-服务定位器(Service Locator)
  • 电商搜索引擎的架构设计和性能优化
  • 欢迎参加第二届中国游戏开发者大会
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 区块链分支循环
  • 山寨一个 Promise
  • 由插件封装引出的一丢丢思考
  • 进程与线程(三)——进程/线程间通信
  • 组复制官方翻译九、Group Replication Technical Details
  • ​如何在iOS手机上查看应用日志
  • #vue3 实现前端下载excel文件模板功能
  • #数学建模# 线性规划问题的Matlab求解
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (09)Hive——CTE 公共表达式
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (function(){})()的分步解析
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (三)uboot源码分析
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • .NET开发者必备的11款免费工具
  • /etc/fstab 只读无法修改的解决办法
  • @Autowired和@Resource装配
  • @EventListener注解使用说明
  • @Transactional类内部访问失效原因详解
  • @vue/cli脚手架
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林