Stable Diffusion在各种显卡上的加速方式测试,最高可以提速211.2%

Stable Diffusion是一种基于扩散模型的图像生成技术,能够从文本生成高质量的图像,适用于CG,插图和高分辨率壁纸等领域。

但是它计算过程复杂,使得它的生成速度较慢。所以研究人员就创造了各种提高其速度的方式,比如Xformers、Aitemplate、TensorRT和onflow。在本文中我们将对这些加速方法进行了一系列对比测试。

在本文中,我们将介绍这些加速方法的原理和性能测试结果,并提供对不同显卡的成本效益总结,我们的目标时在并在2秒内生成高质量的图像。

通过我们的试验与RTX 3090上的Xformers相比,OneFlow实现了211.2%的加速,在RTX 4090上实现了205.6%的加速。所以一个高配的GPU还是很必要的。

加速方案原理及特性

以下表格整理了目前能够看到的加速方案

本文使用Xformers, Aitemplate, TensorRT和onflow进行测试。因为NvFuser在原理上与Xformers相似,都使用了FlashAttention技术。DeepSpeed和colossalAI主要是为训练加速而设计的,而OpenAI Triton则是一个模型部署引擎,适用于批大小的加速,但不适用于优化延迟场景,所以这些都包含在本文中。

我们使用VoltaML来评估Aitemplate的加速效果,使用Stable Diffusion web来评估Xformers的加速,使用官方TensorRT示例来评估TensorRT的性能,并将OneFlow集成到Diffusion中来测试其加速度。

加速方案测试

接下来,我们将介绍相关的测试配置

1、测试设置

我们的性能度量是每秒迭代数(its/s)。图像设置为512*512,步骤100

提示词为:A beautiful girl, best quality, ultra-detailed, extremely detailed CG unity 8k wallpaper, best illustration, an extremely delicate and beautiful, floating, high resolution.

Negative提示: Low resolution, bad anatomy, bad hands, text error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, bad feet, fused body.

Sampler: Euler a

模型:Stable Diffusion 1.5

2、测试结果

在各种gpu上的性能测试结果,如下图所示(上图第一行为Xformers,第三行为Aitemplate ,第四行为OneFlow ):

加速度比较如下:OneFlow > TensorRT > Aitemplate > Xformers。

与RTX 3090上的Xformers相比,OneFlow实现了211.2%的相对加速,在RTX 4090上实现了205.6%的加速。

以下是一个结果:

GPU性价比

通过对不同的gpu进行了成本效益分析,得到以下结论:

从性价比角度来看,RTX4090 GPU性价比最高,目前RTX 2080Ti是最高性价比,极低端的gpu会增加整体成本。所以不建议用低端入门级GPU。

我们这里选择的几个低端gpu,包括M60、1660s和1080,问题如下:

1、GPU如1660和1080不支持加速方案,如TensorRT, Aitemplate,和OneFlow,可能是由于内存不足或GPU不兼容

2、其中1660s(1080)在生成512*512的20步图像,耗时7.66s (7.57s),达到2.61 it/s (2.64 it/s),虽然慢,但是可以用,如果你时间富裕或者只是玩一下可以考虑

3、M60达到1.27 it/s, 20步生成512*512图像需要15.74s,比1660s又慢了1倍

选择的建议

1、虽然RTX 4090有最高的速度,但RTX 3090也是可以考虑,RTX 3090的性能优于其他同级别的gpu,如A5000和A4000(下面价格基于云服务提供商的GPU价格计算,自购肯定RTX 4090,因为比3090差不了多少钱)。

2、更大的VRAM允许缓存更多的模型,减少模型加载时间,并显著加快图像生成过程。

RTX 3090和RTX 4090都有24GB的VRAM,但如果稳定扩散web是基于VRAM使用进行优化,RTX 3090可能在VRAM成本上有优势。如果优先考虑推理速度,RTX 4090是最佳选择,因为它的推理时间大约是RTX 3090的一半。

3、不同gpu的更多详细信息,请参阅下面的图表。

以上就是完整的测试,希望对你有所帮助。

https://avoid.overfit.cn/post/4d41ab2ecdce462786892e315dc49ecc

作者:Omniinfer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉(二)图像特征提取

文章目录 颜色特征量化颜色直方图适用颜色空间:RGB、HSV等颜色空间操作 几何特征边缘 Edge边缘定义边缘提取 基于关键点的特征描述子引入几何特征:关键点几何特征:Harris角点FAST角点检测几何特征:斑点局部特征:SIFT预…

JavaScript 事件监听

语法:元素对象.addEventListener("事件类型",要执行的函数) 事件监听三要素: 事件源:哪个dom元素被触发了,要获取dom元素事件类型:用什么方式触发,eg:鼠标单击click、鼠标经过mouseover登事件调…

基于WebSocket实现的后台服务

基于WebSocket实现的后台服务,用于接收客户端的心跳消息,并根据心跳消息来维护客户端连接。 具体实现中,服务启动后会创建一个HttpListener对象,用于监听客户端的WebSocket连接请求。当客户端连接成功后,服务会为每个…

Linux环境PostgreSQL安装

今日一语:鲲鹏扶摇而直上九万里,雄鹰展翅高飞,这是因为鲲鹏一出世就得历劫,老鹰刚长出翅膀就会被扔下悬崖 下载安装包,解压到服务器中,然后 make && make install # 登录使用 ./psql # 切换数据库…

maven 离线模式打包

遇到问题 由于客户对于安全性的要求比较高 又想要自己打包,但不允许使用外网,这样就出现了没办法在线打包,需要离线打包。其实也很简单,只需要三步。 第一步 将项目中用到的依赖,下载到本地仓库中,然后将…

idea中Easy Code模版配置

首先找到模版位置 找到使用的模版,我用的是MybatisPlus-H,这是我新建的一个模版 controller.java.vm模版 ##导入宏定义 $!{define.vm}##设置表后缀(宏定义) #setTableSuffix("Controller")##保存文件(宏定义&#xff…

qemu搭建arm环境以及文件共享

几乎完全参照该文章 使用QEMU搭建ARM64实验环境 - 简书 ubuntu 14.04,linux3.16, busybox-1.31.0 arm-linux-gnueabi-gcc -v linux3.16以及busybox下载安装可参考链接 Ubuntu14.04安装qemu,运行linux-3.16gdb调试_qemu 安装 ubuntu 14_这个我…

Kamailio常用命令

kamctl --help:显示kamctl命令的帮助信息。 kamctl ps:列出当前的Kamailio进程列表。 kamctl stats:显示Kamailio的统计信息。 kamctl uptime:显示Kamailio的运行时间。 kamctl moni:启动Kamailio的监控模式。 ka…

Django开发股票分析系统

下面是一个简单的示例代码,展示了如何使用Django来创建一个股票管理分析系统。 首先,在你的虚拟环境中安装Django: pip install Django 然后,创建一个新的Django项目: django-admin startproject stock_management 进入…

Centos MySql安装,手动安装保姆级教程

1.删除原有的mariadb,不然mysql装不进去 查询MAriaDB命令 rpm -qa|grep mariadb 删除 rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 (yum -y remove mysql 如需要清除服务器上以前安装过的MySQL可执行此命令,执行前一…

【数学建模】相关是一个距离指标吗?

一、说明 本文探讨最平凡的数学模型--距离模型。我们知道,任何数学模型如果是个距离模型,那么它是:放心的、自动的、不加任意条件的指标项目。然而另一些度量参数不是距离空间,因此,使用起来必须外加若干条件&#xff…

一款好用的思维导图软件drawio

最近需要画思维导图,结果发现既然被人用来收费了。所以记录一下,免得大家上当。 首先说明,这个东东在github上是免费开源的,收费的是一些不法分子搞得。下面是收费版本得界面。 开源地址: https://github.com/jgraph…

Java基础面试题04(网络编程)

什么是网络编程?它的作用是什么? 网络编程是一种用于在计算机网络中进行数据交换和通信的编程技术。它涉及到使用网络协议和相关工具来实现程序之间的通信。网络编程的目标是允许不同设备或应用程序之间进行数据传输、共享资源和进行远程控制。 网络编…

Java设计模式之 -- 桥接模式

什么是桥接模式 桥接模式是一种结构型设计模式,也被称为“Handle/Body”。这种设计模式主要用于将抽象部分与它的实现部分分离,使它们可以独立地变化。这种方式有助于减少系统中的耦合性,增加了扩展性。 主要解决什么问题 桥接模式主要解决…

MySQL主从复制环境部署

文章目录 MySQL主从复制什么是主从复制:为什么需要主从复制:配置文件修改-主:时间同步:重启服务-主:创建同步用户:查看主上的二进制文件名及位置:配置-从:测试:注: MySQL…

JUC并发编程之CompletableFuture详解

目录 1.Future接口 1.1 Future介绍 1.1.1 FutureTask 1.1.2 代码示例 2. CompletableFuture 2.1 基本概念 2.2 代码示例 2.2.1 创建CompletableFuture 2.2.2 函数式接口(补充) 2.2.3 异步任务组合 1.Future接口 1.1 Future介绍 JUC并发编程中的…

二叉树题目:从根到叶的二进制数之和

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:从根到叶的二进制数之和 出处:1022. 从根到叶的二进制数之和 难度 3 级 题目描述 要求 给你二叉树…

什么是Java的JVM内存模型?

JVM内存模型是Java虚拟机的一种内存管理方式,它可以让Java程序在运行时动态地分配和释放内存,从而提高程序的性能和稳定性。如果你是一个新手,那么你可能会对JVM内存模型感到有些困惑,不知道该如何理解它。别担心,下面…

Git标签管理(对版本打标签,起别名)

tag 理解标签创建标签git tag [name]git show [tagname] 操作标签删除标签git tag -d < tagname > 推送某个标签到远程git push origin < tagname > 理解标签 标签 tag &#xff0c;可以简单的理解为是对某次 commit 的⼀个标识&#xff0c;相当于起了⼀个别名。 …

Docker:开启应用程序开发新篇章的利器

Docker&#xff1a;开启应用程序开发新篇章的利器 引言&#xff1a;1. Docker 的基本概念2. Docker 的优势3. Docker 在应用程序开发中的实际应用如何创建docker镜像如何部署docker镜像结论&#xff1a; 引言&#xff1a; 在现代软件开发领域中&#xff0c;容器化技术正在迅猛…