作者|梁德澎

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 进行推理的性能表现。

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

其他硬件数据:

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

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

2

生成图片展示

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

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

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

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

古代建筑, 白雪纷飞

螺蛳粉

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

3

无缝兼容 PyTorch 生态

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

之所以能这么轻松迁移模型,是因为 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/https://github.com/Oneflow-Inc/oneflow/

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

  1. NeurIPS 2022 | Stable Diffusion采样速度翻倍!清华提出扩散模型高效求解器

    ©作者 | 机器之心编辑部 来源 | 机器之心 清华大学计算机系朱军教授带领的 TSAIL 团队提出 DPM-Solver(NeurIPS 2022 Oral,约前 1.7%)和 DPM-Solver ...

  2. 在英特尔 CPU 上加速 Stable Diffusion 推理

    点击蓝字 关注我们,让开发变得更有趣 前一段时间,我们向大家介绍了最新一代的 英特尔至强 CPU (代号 Sapphire Rapids),包括其用于加速深度学习的新硬件特性,以及如何使用它们来加速自 ...

  3. 八十行代码实现开源的 Midjourney、Stable Diffusion “咒语”作图工具

    本篇文章聊聊如何通过 Docker 和八十行左右的 Python 代码,实现一款类似 Midjourney 官方图片解析功能 Describe 的 Prompt 工具. 让你在玩 Midjourney ...

  4. Linux下快速静态编译Qt以及Qt动态/静态版本共存

    Qt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-open ...

  5. python 零代码快速开发平台_企业如何选择开源的零代码开发平台

    原标题:企业如何选择开源的零代码开发平台 开源零代码开发平台是指开放源代码的零代码开发平台,因为其代码是开放的,所以企业如果有自己的技术人员可以直接进行功能及性能的修改.零代码开发平台经过多年的发展已 ...

  6. 中文Stable Diffusion模型太乙使用教程

    中文Stable Diffusion模型太乙使用教程 太乙模型介绍 在线体验地址: Stable Diffusion 太乙模型,首个开源的中文Stable Diffusion模型,基于0.2亿筛选过的 ...

  7. 记录下 QT Linux 静态编译遇到的坑

    记录下 QT Linux 静态编译遇到的坑 记录下 QT Linux 静态编译遇到的坑 - 貘吃馍的日志 - 网易博客 http://qbaok.blog.163.com/blog/static/10 ...

  8. 首个中文Stable Diffusion模型开源;TPU演进十年;18个PyTorch性能优化技巧 | AI系统前沿动态...

    1. TPU演进十年:Google的十大经验教训 希腊神话中,特洛伊战争的起因是两方争夺世界上最美的女人--海伦,后世诗人将海伦的美貌"令成千战舰为之起航".TPU就像海伦,它的出 ...

  9. GPT-4问世;LLM训练指南;纯浏览器跑Stable Diffusion

    1.多模态GPT-4正式发布:支持图像和文本输入,效果超越ChatGPT OpenAI的里程碑之作GPT-4终于发布,这是一个多模态大模型(接受图像和文本输入,生成文本).主要能力有: GPT-4可以 ...

最新文章

  1. 宏基因组分析实战教程1. 背景知识
  2. java中的枚举类_java中的枚举类型
  3. 【java】System.getProperty()参数大全
  4. php创建输入文本框,Asp:文本框与输入文本(PHP开发人员学习ASP)
  5. 一文掌握 Docker 技术体系
  6. IOS判断用邮箱登录验证是不是合法的方法
  7. ubuntu安装java虚拟机
  8. 应聘计算机程序员英文,计算机程序员英文简历模板
  9. SAP ABAP 查询接口参数数据结构的报表
  10. 长度游程编码的JAVA源代码_游程编码(Run Length Code)
  11. fiddler限速_基于fiddler来模拟限速
  12. 下载 | 954页《数据可视化》手册
  13. php implode(),php implode函数怎么用
  14. mysql表误删回复_MySQL数据库误删恢复
  15. 领英使用手册—领英linkedin发送消息和InMail使用的方法技巧
  16. app开发者帐号(个人开发帐号、团队帐号、企业帐号、教育帐号)
  17. 解决网页无法选中文字,无法复制的问题
  18. 阿里云创世纪之盘古传奇
  19. 《吴恩达深度学习》学习笔记002_神经网络的编程基础(Basics of Neural Network programming)
  20. Mac使用XQuartz调图形化总结

热门文章

  1. 动态改变UITableView中的Cell高度
  2. 转载: java 入门书籍(java7)
  3. python设定数值范围_Python 生成周期性波动的数据 可指定数值范围
  4. 产品项目分析之竞品分析
  5. Java多线程(上)
  6. Ubuntu自动更换壁纸
  7. 南京理工计算机专业复试科目,南京理工大学计算机考研复试全攻略
  8. 零售行业常见数据分析简介
  9. 科研实习 | 北京大学可视化与可视分析实验室招收暑期实习生和推免研究生
  10. 474-设计良好的网络服务器