Stable Diffusion加速高达211.2%:Aitemplate、Tensorrt、Oneflow 、Xformers 加速实测

1,985 阅读7分钟
  1. 引言

Stable Diffusion是一种基于扩散模型的图像生成技术,它可以根据文本生成高质量的图像,适用于CG、插画和高分辨率壁纸等领域 。然而,由于其复杂的计算过程,Stable Diffusion出图速度常常成为一个瓶颈。Omniinfer为了解决这一问题,我们进行了一系列加速方案的对比测试,其中包括Xformers、Aitemplate、TensorRT和OneFlow。

本文将介绍这些加速方案的原理和性能测试结果,并提供在不同显卡上的性价比考量,给大家在部署时提供一些参考,同时也让大家明白为什么 Omniinfer的Stable Diffusion API 能运行10000个模型,2s生成高质量图片。

如果想要体验测试 Omniinfer的图片生成速度 ,有三种方式: API demo nogpu,也期待大家更多的反馈和建议。

测试结果显示,OneFlow在3090上相对于xformers能够达到211.2%的加速,而在4090上达到205.6%的加速。在部署 Stable Diffusion 时首选3090显卡。

image.png

  1. 加速方案原理及特点对比

首先我们梳理了可以用于stable diffusion加速的各种方案。

方案原理特点
xformers加速 Transformers 研究的工具箱,可以用于各种transformer架构的模型1独立/可定制的构建块,无需样板代码即可使用。xFormers 包含前沿组件xFormers 包含自己的 CUDA 内核,但会在相关时分派到其他库。
aitemplateAITemplate (AIT) 是一个 Python 框架,可将深度神经网络转换为 CUDA (NVIDIA GPU) / HIP (AMD GPU) C++ 代码,以加速推理统一、开放、灵活。适用于 NVIDIA GPU 或 AMD GPU 的无缝 fp16 深度神经网络模型。与两个 GPU 平台的现有解决方案相比,支持更全面的融合。
tensorrtNVIDIA TensorRT 是一个用于深度学习推理的 SDK 。 TensorRT 可以生成可部署在数据中心、汽车和嵌入式环境中的优化运行时引擎。将高速率、低延迟优化做到极致。使用nvidia显卡。
oneflow一种基于异步并行计算的深度学习框架,可以实现分布式训练和推理使用类似 PyTorch 的 API对模型进行编程;使用全局张量将模型扩展到 n 维并行执行

我们选择了Xformers、Aitemplate、TensorRT、OneFlow,其中NvFuser与Xformers原理相似,都是采用了FlashAttention的技术,DeepSpeed与colossalAI主要用于训练加速,OpenAI triton主要是一种模型部署引擎,适用于除了不同批大小的加速,不适用模型优化延迟的场景,因此这些不纳入比较的对象。

现在测试WebUI基础方案及四种加速方案Xformers、Aitemplate、Tensorrt、Oneflow在各显卡上的性能。

我们用VoltaML来测试Aitemplate的加速效果,Stable Diffusion WebUI测试Xformers的加速效果,Tensorrt的官方例子测Tensorrt的加速效果,Diffusions集成Oneflow来测试Oneflow的加速效果。

image.png

  1. 加速方案实测

接下来给大家展示相关的测试配置,基于配置,我们一起看看实测结果。

  •   测试设置

本次我们的测试指标为,每秒迭代次数:its/s

  1. 图片设置:512*512 setps100
  2. Prompt

A beautiful girl, best quality, ultra-detailed, extremely detailed CG unity 8k wallpaper,best illustration, an extremely delicate and beautiful,floating,high resolution

  1. Negative

lowres, bad anatomy, bad hands, text,error, missing fIngers,extra digt ,fewer digits,cropped, worst quality ,low quality,normal quality, jpeg artifacts,signature,watermark, username, blurry, bad feet,fused body

  1. 采样器 Euler a
  2. 模型

Stable diffusion 1.5(Omniiinfer其他还有10000个模型,可以任选一个进行测试)

  •    测试结果

经过一系列测试,我们得到了各种显卡上的性能测试结果,如下所示:

显卡WebUIXformersTensorRTAitemplateOneFlow
RTX 409026.07 it/s36.14 it/s74.07 it/s69.35 it/s74.31 it/s
RTX 309015.92 it/s19.90 it/s38.74 it/s37.75 it/s42.18 it/s
RTX 2080Ti11.55 it/s13.74 it/s显存不足21.67it/s23.3it/s
RTX 1660S2.61 it/s2.32 it/s显存不足无法运行无法运行
RTX 10802.07 it/s2.64 it/s显存不足无法运行无法运行
Tesla T44.5 it/s6.0 it/sN/AN/AN/A
RTX A500012.54 it/s17.19 it/sN/AN/AN/A
RTX A40009.44 it/s12.23 it/sN/AN/AN/A
Tesla M601.26 it/s1.27 it/sN/AN/AN/A
Nvidia A10G10.96 it/s15.11 it/sN/AN/AN/A
30709.066 it/sN/AN/AN/AN/A
30606.42it/sN/AN/AN/AN/A
308012.412it/s (94% GPU利用)N/AN/AN/AN/A
3070Ti10.828it/sN/AN/AN/AN/A
3080Ti13.066it/s(85% GPU利用)N/AN/AN/AN/A

**从上表中可以看出,加速效果对比为Oneflow > TensorRT > Aitemplate > Xformers。

Oneflow在3090相对xformers能达到211.2%加速,4090上达到205.6%的加速。 **

image.png

  1. 显卡性能及性价比对比

针对不同显卡,我们进行了性价比的考量。

结论一:从性价比角度来看,4090显卡的性价比最高。

结论二: 太低端的卡并反而会拉高成本,2080Ti也许是个平衡初期重资产和整体成本的选择。

结论三:最差显卡

本次测试,我们选用了显存大于6G的几个低端显卡,M60、1660s、1080。

1)1660s、1080不支持TensorRT、Aitemplate、Oneflow等加速方案,原因未显存不够或者显卡不兼容。

2)其中1660s(1080),2.61 it/s(2.64 it/s), 用来生成512*512图片,20 steps需要7.66s(7.57s),具有可用性。

3)M60, 1.27 it/s, 用来生成512*512图片,20 steps需要15.74s,可用性较差。

显卡性能/(it/s)二手显卡价格/¥8卡整机费/¥显卡功率整机功率/W整机性成本(¥/天)出图张数(张/天)总成本(¥/张)
309019.9589985592350 W404078.1662100515,351.430.0082498
409036.1411579131032450 W4840119.663926927,879.430.006375451
2080Ti13.74187953432250W324048.7963470310,599.430.008271799
1660s2.6168943912125W224040.102283112,013.430.033267772
10802.6485945272180w268041.344292242,036.570.036092175

image.png

  1. 选型建议

  •   4090的性价比最高, 部署首选3090。

以runpod为例,可以计算每美元迭代数,代表显卡的性价比。可以看到在同等利用率的情况下,4090的性价比是高于3090的。3090高于其他同级别显卡,例如A5000、A4000的。

WebUI(xformers)计费its/$
RTX 409036.14 it/s$0.69/hr188,556
RTX 309019.90 it/s$0.44/hr162,818
RTX A500017.19 it/s$0.44/hr140,645
RTX A400012.23 it/s$0.34/hr129,494

但针对stable diffusion的模型,是否选择4090要视乎实际情况而定

1、实际性价比=利用率(每小时使用时间/60min)*it/$。视乎服务模式,估算利用率。如果选用4090的利用率与选用2倍个数的3090的利用率是一样的,那么选用4090性价比是高的。当有可能选用两个3090的利用率高,因为这种情况下Stable Diffusion WebUI的实例数也是两倍,支持的并发也高,能够承接的请求数也会比较多,利用率会偏高。但如果在4090机器上部署两个实例,共享4090的算力,情况就不一样了。所以利用率需要结合具体场景分析。

2、its/$仅仅代表推理性能,显存越大可以缓存模型越多,缓存模型可以减少模型加载的耗时,极大加速生图过程。3090和4090的显存均为24GB,而3090比4090便宜,如果对Stable Diffusion WebUI结合显存做了优化,那么选用3090在显存方面更有优势。

3、如果注重推理速度,选用4090是最佳的,推理时间约为3090的1/2。

这与timdettmers.com/2023/01/30/… 的结论一致,更多显卡数据可以参照下图。

image.png

  •   GPU上耗时占全链路耗时占比小时,可以选性能略差的卡代替3090. 包括A5000、A10G、RTX3080、RTX3080Ti、RTX2080Ti等。

最后,如果您有任何疑问,或者想要一起探讨 Stable Diffusion 更多的加速方案,可以在我们的 discord 上联系我们 discord.gg/7gt3q5R77s ,最后,如果您想要使用 SDXL1.0 模型,也可以在 discord 获取相关信息

欢迎点击体验测试 Omniinfer的图片生成速度:  API   demo   nogpu