秒速出图!体验 TensorRT 加速 Stable Diffusion 图像创作

这篇具有很好参考价值的文章主要介绍了秒速出图!体验 TensorRT 加速 Stable Diffusion 图像创作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TensorRT 如何加速 Stable Diffusion?

生成式 AI 图像内容生成技术近年来发展迅速,可以根据人类语言描述生成图片,在时尚、建筑、动漫、广告、游戏等领域有着广泛应用。

Stable Diffusion WebUI 是 Github 上最为热门的利用生成式 AI 进行图像生成的项目。它采用 ClipText 对文字进行编码,然后采用 UNet+Scheduler 在潜在表示空间(latent space)上进行 Diffusion,最后采用 Autoencoder Decoder 将第二步生成的扩散信息再转为图像。

秒速出图!体验 TensorRT 加速 Stable Diffusion 图像创作,云栖号技术分享,stable diffusion,阿里云,云计算,云原生

Stable Diffusion Pipeline

Diffusion 模型最大的痛点是生成图片的速度过慢。Stable Diffusion 采用了多种方式加速图片生成,令实时图像生成成为可能。Stable Diffusion 使用编码器将图片从 3*512*512 转为 4*64*64,极大地降低了计算量。它在潜在表示空间(latent space)上进行 Diffusion 过程,大大减少计算复杂度,同时也能保证不错的图片生成效果。在 GPU 上大约 4s 可以生成一张描述复杂的图片。

对于很多 ToC 应用来说,一张图片生成需要 4s 耗时仍然过长。TensorRT 是由 NVIDIA 提供的高性能深度学习推理框架,通过优化编译器和 runtime 来提升延迟敏感应用的并发度。TensorRT 可以优化几乎所有的深度神经网络,包括 CNN、RNN 和 Transformer。具体优化措施包括以下 6 点。

  • 减少混合精度,支持 FP32、TF32、FP16 和 INT8
  • 优化 GPU 内存带宽
  • 自动调整核函数,为目标 GPU 选择最佳的算法
  • 动态 Tensor 内存分配,提升内存使用效率
  • 可扩展设计以处理多个计算流
  • 时间融合:随着时间步长优化 RNN

TensorRT 的基本流程如下图所示,可以分为构建期和运行期。

秒速出图!体验 TensorRT 加速 Stable Diffusion 图像创作,云栖号技术分享,stable diffusion,阿里云,云计算,云原生

TensorRT Pipeline

基于阿里云容器服务 ACK 的实战体验

云原生 AI 套件

云原生 AI 套件是阿里云容器服务 ACK 提供的云原生 AI 技术和产品方案,帮助企业更快、更高效地落地云原生 AI 系统。

本文将介绍如何基于阿里云容器服务 ACK 云原生 AI 套件,利用 TensorRT 加速 Stable Diffusion 图像生成。

环境配置

1. 参考文档安装云原生 AI 套件[1]

2. 登陆容器服务管理控制台[2],在左侧导航栏选择集群 > 应用 > 云原生 AI 套件。等待开发控制台准备就绪后,单击开发控制台。

3. 在开发控制台左侧,选择 Notebook,在 Notebook 页面右上角,单击创建 Notebook 创建新的 Notebook 环境。Notebook 资源需要 CPU:16C,内存:32G,GPU 显存:16GB。

秒速出图!体验 TensorRT 加速 Stable Diffusion 图像创作,云栖号技术分享,stable diffusion,阿里云,云计算,云原生

准备 Stable Diffusion + TensorRT 环境

1. 在新建的 Notebook 中输入以下命令安装所需依赖。

! pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
! pip install --upgrade "torch <2.0.0"
! pip install --upgrade "tensorrt>=8.6"
! pip install --upgrade "accelerate" "diffusers==0.21.4" "transformers"
! pip install --extra-index-url https://pypi.ngc.nvidia.com --upgrade "onnx-graphsurgeon" "onnxruntime" "polygraphy"
! pip install  polygraphy==0.47.1 -i https://pypi.ngc.nvidia.com

2. 下载数据集

import diffusers
import torch
import tensorrt
from diffusers.pipelines.stable_diffusion import StableDiffusionPipeline
from diffusers import DDIMScheduler

# 默认从huggingface下载,如果机器无法访问huggingface,也可以使用本地模型。
# 如使用本地模型,替换runwayml/stable-diffusion-v1-5为本地模型地址即可
model_path = "runwayml/stable-diffusion-v1-5"
scheduler = DDIMScheduler.from_pretrained(model_path, subfolder="scheduler")

3. 使用 TensorRT 生成序列化网络 (计算图 TRT 的内部表示)

# 使用自定义的pipeline
pipe_trt = StableDiffusionPipeline.from_pretrained(
    model_path,
    custom_pipeline="stable_diffusion_tensorrt_txt2img",
    revision='fp16',
    torch_dtype=torch.float16,
    scheduler=scheduler,
)

# 设置缓存地址
# 会在缓存地址下生成engine文件夹,包含clip.plan、unet.plan、vae.plan文件。A10上首次生成plan文件需要约35分钟
pipe_trt.set_cached_folder(model_path, revision='fp16')
pipe_trt = pipe_trt.to("cuda")

4. 使用编译后的模型进行推理

# 生成图片
prompt = "A beautiful ship is floating in the clouds, unreal engine, cozy indoor lighting, artstation, detailed, digital painting, cinematic"
neg_prompt = "ugly"

import time
start_time = time.time()
image = pipe_trt(prompt, negative_prompt=neg_prompt).images[0]
end_time = time.time()
print("time: "+str(round(end_time-start_time, 2))+"s")
display(image)

生成单张图片耗时为 2.31s。

性能测试

性能测试基于 Github 上的 lambda-diffusers[3]项目,prompt 数量为 1,batch_size 为 50,重复 100 次。GPU 型号为 A10,对应的 ECS 规格为 ecs.gn7i-c8g1.2xlarge。

秒速出图!体验 TensorRT 加速 Stable Diffusion 图像创作,云栖号技术分享,stable diffusion,阿里云,云计算,云原生

秒速出图!体验 TensorRT 加速 Stable Diffusion 图像创作,云栖号技术分享,stable diffusion,阿里云,云计算,云原生

从实验结果看,开启 xformers 和 TensorRT 优化后,Stable Diffusion 图片生成时间平均减少 44.7%,显存减少 37.6%。

参考文献:

TensorRT

https://github.com/NVIDIA/TensorRT

Stable Diffusion WebUI

https://github.com/AUTOMATIC1111/stable-diffusion-webui

利用 GPU 加速生成式 AI 图像内容生成

https://www.nvidia.cn/webinars/sessions/?session_id=230919-29256

相关链接:

[1] 安装云原生 AI 套件

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/deploy-the-cloud-native-ai-suite?spm=a2c4g.11186623.0.0.7e223d92U1aVNf

[2] 容器服务管理控制台

https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fcs.console.aliyun.com%2F

[3] lambda-diffusers

https://github.com/LambdaLabsML/lambda-diffusers

作者:顾静

原文链接

本文为阿里云原创内容,未经允许不得转载。文章来源地址https://www.toymoban.com/news/detail-829463.html

到了这里,关于秒速出图!体验 TensorRT 加速 Stable Diffusion 图像创作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Gradio搭建Stable Diffusion模型生成图像:简单快捷的图像生成体验

    目录 0 开发环境 1 介绍 1.1 Gradio简介 1.2 Stable Diffusion模型简介 2 使用Gradio搭建基本界面 2.1 安装依赖库 2.2 加载预训练模型 2.3 解析返回的数据 2.4 构建图像字幕应用程序 3 实现Stable Diffusion图像生成 3.1 Stable Diffusion模型解析 3.2 将SD模型集成到Gradio应用中 3.2.1 本地加载 3.2.1.1 安

    2024年02月13日
    浏览(50)
  • 利用GPU加速自定义风格图像生成-利用GPU加速结合了ControlNet/ Lora的Stable Diffusion XL

    点击链接完成注册,参加本次在线研讨会 https://www.nvidia.cn/webinars/sessions/?session_id=240124-31319 随着AI技术的发展, 数字内容创建业务也变得越来越火热。生成式AI模型的发布, 让我们看到了人工智能在各行各业的潜力。您只需要用语言简单描述自己希望看到的画面, AI便可以自动生

    2024年01月24日
    浏览(43)
  • stable diffusion实践操作-批次出图

    stable diffusion实践操作 本章主要介绍SD批次出图。 想要一次产生多张图片的时候使用。 生成批次和每批数量至少一个为1, 产生了一张合图和4张单独图片。 例如:以上就是今天要讲的内容。

    2024年02月09日
    浏览(40)
  • 十六)Stable Diffusion教程:出图流程化

    今天说一个流程化出图的案例,适用很多方面。 1、得到线稿,自己画或者图生图加线稿lora出线稿;如果想sd出图调整参数不那么频繁细致,则线稿的素描关系、层次、景深要表现出来,表现清楚。 2、文生图,seed随机,线稿图作为controlnet上传模式图,控制sd出图,模型一般

    2024年02月07日
    浏览(46)
  • Stable Diffusion——stable diffusion基础原理详解与安装秋叶整合包进行出图测试

    在2022年,人工智能创作内容(AIGC)成为了AI领域的热门话题之一。在ChatGPT问世之前,AI绘画以其独特的创意和便捷的创作工具迅速走红,引起了广泛关注。随着一系列以Stable Diffusion、Midjourney、NovelAI等为代表的文本生成图像的跨模态应用相继涌现与Stable Diffusion的开源,Stab

    2024年02月21日
    浏览(45)
  • Stable Diffusion各大模型相同参数出图效果对比

    相同提示词,相同参数:(a cute girl) with brown hair, half body.A masterpiece, best quality,lora:blindbox_v_mic0.8; 采样方法:DPM++ 2M SED Karras 采样迭代步数:25 宽:768  高:512  生成批次:1  每批数量:2 CFG Scale: 6.5   随机种子:-1 注意:部分图像有变形,请谨慎观看!!! 1、3Guofeng3_v32Lig

    2024年02月13日
    浏览(246)
  • 使用ControlNet控制Stable-Diffusion出图人物的姿势

    在Stable-Diffusion(以下简称SD)出图中,我们往往需要对出图人物的姿势进行控制,这里我使用一个比较简单上手的方法,通过ControlNet可以很方便地对画面风格,人物姿势进行控制,从而生成更加符合自己期望的图片 跟SD配合的插件工具的项目地址是:https://github.com/Mikubill/s

    2024年02月09日
    浏览(55)
  • MidJourney v5.2 、Stable Diffusion XL 0.9 出图对比

    最近两个最流行的AI图像生成器,Midjourney和Stable Diffusion,都发布了重大更新。Midjourney v5.2引入了许多新功能,包括“缩小”功能、“/缩短”命令、改进的图像质量等。 Stable Diffusion XL (SDXL) 0.9则专注于改善图像质量和构图。新模型使用更大的数据集和更强大的算法,生成的图

    2024年02月11日
    浏览(40)
  • stable diffusion插件controlnet1.1全面升级,大幅提高出图质量

    哈喽,各位小伙伴们大家好,有一段时间没更新了,最近的AI绘画圈呀,可谓是一天一个黑科技。这不,最近controlnet插件更新了,我也是马上就下载下来用了一下。 好家伙,不用不知道啊,一用吓一跳。废话不多说,直接上才艺,这是我用最新的版本,也就是controlnet1.1版本

    2024年02月16日
    浏览(107)
  • 关于stable diffusion的出图与训练的一些问题和解决办法(gpu)

    这个软件想要玩起来全部功能,你至少需要一张8g的显卡,如果是台式机或者行内那肯定远超预期,这篇主要应对新人,或者想玩一玩,感受一下效果,那这个投入或者说门槛有一点点高,现在通用笔记本差不多6-8g显存居多,而且还有说炼丹炉报废的,那么降低一点风险,有

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包