“零”代码改动,静态编译让太乙Stable Diffusion推理速度翻倍

news2024/11/15 18:21:31

ba60c78bec6ead72f28d7bb593a8b4d2.jpeg

作者|梁德澎
 

AI 作图领域的工具一直不尽人意,直到去年 8 月 Stable Diffusion 开源,成为AI 图像生成领域无可争辩的划时代模型。

为了提升其推理效率,OneFlow 首度将 Stable Diffusion 模型加速至“一秒出图”时代,极大提升了文生图的速度,在AIGC领域引发巨大反响,并得到了 Stability.ai 官方的支持。至今,OneFlow 还在不断刷新 SOTA 纪录。

不过,由于目前大部分团队主要是基于翻译 API + 英文 Stable Diffusion 模型进行开发,所以在使用中文独特的叙事和表达时,英文版模型就很难给出正确匹配的图片内容,这对部分国内用户来说不太方便。


为了解决这一问题,国内的IDEA 研究院认知计算与自然语言研究中心(IDEA CCNL)也开源了第一个中文版本的“太乙 Stable Diffusion”,基于0.2亿筛选过的中文图文对训练。上个月,太乙 Stable Diffusion 在 HuggingFace 上有近 15 万下载量,是下载量最大的中文 Stable Diffusion。

近期,OneFlow 团队为太乙 Stable Diffusion 适配了 OneFlow 后端,大大提升了推理性能,也可以做到一秒出图。不少开发者好奇OneFlow使用了哪些优化“秘笈”,后文将进行简要解读。

欢迎Star、运行 OneFlow 版太乙 Stable Diffusion:
 

https://github.com/Oneflow-Inc/diffusers/wiki/How-to-Run-OneFlow-Stable-Diffusion#without-docker

1
对比 PyTorch,OneFlow 将“太乙 Stable Diffusion”推理速度提升1倍以上
 

下面的图表分别展示了在 A100 (PCIe 40GB / SXM 80GB),V100 ( SXM2 32GB ), RTX 2080,RTX 3080 Ti,RTX 3090, 和 T4 不同类型的 GPU 硬件上分别使用 PyTorch, 和 OneFlow对 太乙 Stable Diffusion 进行推理的性能表现。

b6bbced83e725c4f6a5897cef9b759f6.png

6c7ebe4c0a38a841e73e898dfef0c794.png

可以看到,对于 A100 显卡,无论是 PCIe 40GB 的配置还是 SXM 80GB 的配置,OneFlow 的性能相比 PyTorch 能提升 1 倍以上,推理速度达到了 50it/s 以上,生成一张图片所需要的时间在 1 秒以内。

其他硬件数据:

dfe5878aaf634dd4c582d640f2e90e6f.png

注:3090上的AIT数据由 IDEA 研究院提供

dbd9e7012f08f175280747ba99b6f123.png

7e348b38daf39e490ecf6af32f24826a.png

4b6cfdb3843d5bb2cd0654a40f5cf1b0.png

898c6617fe1f7b68552e9cfde62d67a3.png

综上,在各种硬件的对比中,对比 PyTorch, OneFlow 能将太乙 Stable Diffusion 的推理性能提升 1 倍多。

2

生成图片展示

滔滔江水, 连绵不绝, 唯美, 插画

870f173c57f3a2504455fe15c1483962.png

长城, 清晨, 朦胧, 唯美, 插画

57648864a4a0ebf4891aca2247563a8e.png

梦回江南,中国古代小镇,唯美,插画

79f2ea43173b6baf5065a7601e0f7f8c.png

中国的未来城市, 科幻插画

f6f92477a4d4606591dfe311e3e6a6f9.png

古代建筑, 白雪纷飞

3d6d1ea88877e1094ebbebb97fb03d7e.png

螺蛳粉

0b5e0b273e7431458bebadefb0886127.png

注:上述图片均基于 OneFlow 版太乙 Stable Diffusion 生成
 

3

无缝兼容 PyTorch 生态

想体验 OneFlow 版的太乙 Stable Diffusion?只需要修改两行代码:

fc93a1a650ff324695c67af8e1bc0d8a.png

之所以能这么轻松迁移模型,是因为 OneFlow Stable Diffusion 有两个出色的特性:

  1. OneFlowStableDiffusionPipeline.from_pretrained 能够直接使用 PyTorch 权重。

  2. OneFlow 本身的 API 和 PyTorch 对齐,因此 import oneflow as torch 之后,torch.autocast、torch.float16 等表达式完全不需要修改。

上述特性使得 OneFlow 兼容了 PyTorch 的生态,这不仅在 OneFlow 对 太乙 Stable Diffusion 的迁移中发挥了作用,也大大加速了 OneFlow 用户迁移其它许多模型,比如在和 torchvision 对标的 flowvision 中,许多模型只需通过在 torchvision 模型文件中加入 import oneflow as torch 即可得到。

此外,OneFlow 还提供全局 “mock torch” 功能,在命令行运行 eval $(oneflow-mock-torch) 就可以让接下来运行的所有 Python 脚本里的 import torch 都自动指向 oneflow。
 

4

动静一体的编程体验

深度学习算法原型开发阶段需要快速修改和调试,动态图执行(Eager mode, define by run)最优。但在部署阶段,模型已经固定下来,计算效率变得更重要,静态图执行(Lazy mode,define and run)可以借助编译器做静态优化来获得更好的性能。因此,推理阶段主要使用静态图模式。

最近,PyTorch 升级到2.0引入了compile()这个API,可以把一个模型或一个Module从动态图执行变成静态图执行。OneFlow里也有一个类似的机制,不过接口名是nn.Graph(),它可以把传入Module转成静态图执行模式。

不仅如此,OneFlow的nn.Graph模式基于MLIR实现了一系列计算图的图层优化,譬如内存布局、算子融合等。
 

这不仅使得计算图表示的深度学习模型可以在各种硬件上达到最高性能,更重要的是,使得深度学习框架导入的计算图更方便地在不同硬件之间实现迁移,有助于克服国产硬件软件生态薄弱的问题。未来,我们将发布更多内容来揭示OneFlow深度学习编译器的设计和实现。

欢迎Star、运行 OneFlow 版太乙 Stable Diffusion:
 

https://github.com/Oneflow-Inc/diffusers/wiki/How-to-Run-OneFlow-Stable-Diffusion#without-docker
 

OneFlow 地址:https://github.com/Oneflow-Inc/oneflow/
 

其他人都在看

  • 35张图,直观理解Stable Diffusion

  • ChatGPT的一小步,NLP范式转变的一大步

  • 2023年AI十大展望:GPT-4领衔大模型变革

  • 李白:你的模型权重很不错,可惜被我没收了

  • OpenAI掌门Sam Altman:AI下一个发展阶段

  • 比快更快,开源Stable Diffusion刷新作图速度

  • OneEmbedding:单卡训练TB级推荐模型不是梦

欢迎Star、试用OneFlow最新版本:https://github.com/Oneflow-Inc/oneflow/icon-default.png?t=MBR7https://github.com/Oneflow-Inc/oneflow/

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

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

相关文章

2023牛客寒假算法基础集训营2(11/12)

Tokitsukaze and abn (easy)Tokitsukaze and abn (medium)要使abn&#xff0c;那么转换一下就是bn-a&#xff0c;所以只需要计算[n-L,n-R]和[L,R]相交的部分即可AC代码&#xff1a;#include <bits/stdc.h> using namespace std; using LL long long; int main() {ios::s…

6. 基本数据类型

1. Python 中的变量不需要声明 每个变量在使用前都必须赋值&#xff0c;变量赋值以后该变量才会被创建。在 Python 中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们所说的"类型"是变量所指的内存中对象的类型。 counter 100 # 整型 mile…

关于Win11打开文档总是提示“选择一个程序打开”的问题

这边异常情况&#xff1a; 使用的360浏览器下载回来的文档、微信下载回来的文档都会出现标题所说的问题。 问题产生的原因&#xff1a; 初期在重装电脑后&#xff0c;将自带的一些安装系统后的第三方软件卸载掉了&#xff0c;也包括QQ浏览器。 可是在win11默认应用中看到了…

第五章SpringFramework之AOP

文章目录AOP概念及相关术语概述为什要用 AOP相关术语横切关注点Advice通知Join Point连接点Point CUT 切入点切面目标代理基于注解的SpringAOP准备工作切入点表达式语法重用切入点表达式对应的切面前置通知返回通知异常通知后置通知环绕通知切面的优先级总结Spring AOP 的实现步…

27.Isaac教程--局部建图

26.Isaac教程-局部建图 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 局部地图是机器人周围直接环境的基于网格的简化表示。 这些简化的世界表示对于安全地规划机器人附近的静态和动态障碍物至关重要。 局部建图管道将来自连接到机器人的不同传…

信息服务上线渗透检测网络安全检查报告和解决方案2(安装文件信息泄漏、管理路径泄漏、XSS漏洞、弱口令、逻辑漏洞、终极上传漏洞升级)

系列文章目录 信息服务上线渗透检测网络安全检查报告和解决方案 文章目录系列文章目录前言一、XSS漏洞漏洞危害解决方案1.参数过滤2.Cookie设置HttpOnly二、安装文件目录信息泄漏漏洞证明解决方案三、后台管理路径泄漏、暴力破解、明文传输漏洞证明解决方案四、逻辑漏洞漏洞验证…

LINUX学习之文件处理常用命令(三)

ls 命令描述 ls命令是linux系统中用来列出文件和目录的常用命令&#xff0c;它可以显示文件和目录的名称、权限、大小、修改时间等信息 以下是ls命令的常用参数: -a &#xff1a;列出全部的文件&#xff0c;连同隐藏文件-d &#xff1a;仅列出文件目录&#xff0c;而不是列…

【K哥爬虫普法】辛苦钱被中间商抽走八成,还因此锒铛入狱

我国目前并未出台专门针对网络爬虫技术的法律规范&#xff0c;但在司法实践中&#xff0c;相关判决已屡见不鲜&#xff0c;K 哥特设了“K哥爬虫普法”专栏&#xff0c;本栏目通过对真实案例的分析&#xff0c;旨在提高广大爬虫工程师的法律意识&#xff0c;知晓如何合法合规利用…

【Python百日进阶-数据分析】Day229 - plotly的动画

文章目录一、动画1.1 基本动画1.2 使用 Plotly Express 制作动画条形图1.3 当前动画限制和注意事项二、为动画添加控制按钮2.1 简单的播放按钮2.2 曲线上的移动点2.3 沿平面曲线移动 Frenet 框架2.4 使用滑块和按钮三、MRI 体积切片的可视化一、动画 使用 Plotly Express 制作…

23种设计模式(九)——抽象工厂模式【对象创建】

文章目录 意图什么时候使用抽象工厂真实世界类比解决方案抽象工厂模式的实现抽象工厂模式的优缺点亦称: Abstract Factory 意图 抽象工厂是创建型设计模式,它强调了一系列相关产品对象(属于同一个产品族)的创建过程,它和工厂方法模式的侧重点不同,工厂方法模式更加侧重于…

JUC面试(四)——ABA问题

ABA问题 从AtomicInteger引出下面的问题 CAS -> Unsafe -> CAS底层思想 -> ABA -> 原子引用更新 -> 如何规避ABA问题 假设现在有两个线程&#xff0c;分别是T1 和 T2&#xff0c;然后T1执行某个操作的时间为10秒&#xff0c;T2执行某个时间的操作是2秒&#…

Python---人生重开模拟器(简版)

专栏&#xff1a;python 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本专栏主要更新一些python的基础知识&#xff0c;也会实现一些小游戏和通讯录&#xff0c;学时管理系统之类的&#xff0c;有兴趣的朋友可以关注一下。 人生重开模拟器思维导图前言一、设置初始属性1.…

〖百宝书-思维锻炼③〗——三心理论——成功的来源

大家好&#xff0c;我是涵子&#xff0c;今天我们来聊聊三心理论。 &#x1f4ac; 人生格言&#xff1a;Stay foolish, stay kind.&#x1f4ac; &#x1f4eb; 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &a…

Ae 效果详解:CC Snowfall

效果/模拟/CC SnowfallEffects/Simulation/CC Snowfall示例CC Snowfall &#xff08;下雪效果&#xff09;&#xff0c;可用来模拟带景深、光效和运动模糊的下雪效果。Flakes 雪花片数用于设置雪花片的数量。默认值 10000。Size 大小用于设置雪花片的大小。默认值 3.00。Variat…

连续系统PID的Simulink仿真-3

利用简化S函数&#xff0c;实现连续系统PID的Simulink仿真-2中S函数同样的功能。利用S函数简化形式实现被控对象的表达、控制器的设计及仿真结果的输出。在简化S函数中&#xff0c;flag-0时为S函数初始化&#xff0c;其中 sys包括6个参数:第1个参数表示连续系统的阶数;第2个参数…

DBCO-PEG-4ARM,四臂聚乙二醇二苯基环辛炔,4Arm PEG-DBCO

●中文名&#xff1a;四臂-聚乙二醇-二苯基环辛炔 ●英文名&#xff1a;4Arm PEG-DBCO&#xff0c;DBCO PEG 4ARM ●外观以及性质&#xff1a; ​4Arm PEG-DBCO产物呈固体或粘性液体&#xff0c;取决于PEG分子量&#xff0c;高分子DBCO功能化PEG&#xff0c;“点击化学"…

【JavaScript】事件相关知识详解

&#x1f4bb; 【JavaScript】事件相关知识详解&#x1f3e0;专栏&#xff1a;JavaScript &#x1f440;个人主页&#xff1a;繁星学编程&#x1f341; &#x1f9d1;个人简介&#xff1a;一个不断提高自我的平凡人&#x1f680; &#x1f50a;分享方向&#xff1a;目前主攻前端…

CES 2023:高通从移动互联深入布局未来智驾

作为全球规模最大、影响最为广泛的国际消费电子展&#xff0c;CES曾经因为三年疫情而无奈中断&#xff0c;如今终于在2023年1月重返美国拉斯维加斯。而不管是CES 2023的3200多家参展企业&#xff0c;还是数量超过10万的现场观众&#xff0c;当他们走出位于拉斯维加斯会议中心西…

02Docker镜像

Docker基础2&#xff08;镜像&#xff09; 一、Docker镜像介绍 1.1 简介 镜像是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配…

《Buildozer打包实战指南》第六节 buildozer.spec配置文件中的其他参数

目录 android.permissions android.features android.api android.minapi android.sdk android.ndk android.ndk_api android.private_storage android.ndk_path android.sdk_path android.ant_path android.skip_update android.accept_sdk_license android.a…