“一键”模型迁移,性能翻倍,多语言AltDiffusion推理速度超快
责任编辑:想吃八角     时间:2023-02-02     来源:转载于:CSDN
责任编辑:想吃八角
时间:2023-02-02  来源:转载于:CSDN
分类: 技术分享
浏览量: 367

59577bf7f4b7a2e9c0bb1930f4868461.jpeg

为了推进 AIGC 行业的降本增效,同时也回应用户的热情要求,OneFlow 正在将业内备受欢迎的相关 Diffusion 模型的加速“一网打尽”。

此前,OneFlow 首度将 Stable Diffusion 模型加速至“一秒出图”时代,极大提升了文生图的速度,在 AIGC 领域引发巨大反响,并得到了 Stability.ai 官方的支持。

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

为此,国内的 IDEA 研究院出品了中文版太乙Stable Diffusion,春节前,OneFlow 对此进行了支持,使其推理速度翻倍。

另外,智源研究院出品了首个支持 9 种语言的 AltDiffusion。近期,OneFlow 团队为其适配了 OneFlow 后端,大大提升了推理性能,也可以做到一秒出图。

通过搭建多语言文图表征模型 AltCLIP,智源研究院的研究者先推出了中英双语图像生成模型 AltDiffusion,支持精细长中文 Prompts 高级创作,为中文世界带来专业级 AI 文图创作的强劲动力。

在此基础上,研究者很快又推出了多语言升级版AltDiffusion-m9,其成为首个支持 9 种语言(英文、中文、日语、法语、韩语、西班牙语、俄语、意大利语、阿拉伯语)的文图生成模型。该研究的主要贡献是搭建了一个多语言文图生成模型的基石,使得更多使用不同语言的创作者可以通过 AltDiffusion 模型进行创作。

AltDiffusion 在多语言对齐方面表现非常出色,是目前市面上开源的最强多语言版本,保留了原版 Stable Diffusion的大部分能力,并且在某些例子上的表现比原版模型更出色。


比如当用户给定不同语言的提示语(prompt),模型即可展现语言背后所反映的不同文化图像面貌,如直接生成不同人种的人物形象或不同的地域风物特征。


9c6d16036285bfe3bb3077b473f6b149 (1).png


后文将展示 OneFlow 版 AltDiffusion 的性能表现以及生成图片,不少开发者好奇 OneFlow 使用了哪些优化“秘笈”,也将进行简要解读。

1

对比 PyTorch,OneFlow 将“AltDiffusion”推理速度提升 1 倍以上

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

b4dce2d793ba8118ef87d0027149a14f.png

d2b2dce00197389995a133686ec7a1a7.png

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

其他硬件性能数据:

1a3e4d28129defe84bcc729a3e7cf1f3.png

7d8784709b0e3cf0b7fff40a4d6c8313.png

23413c5787a307cdfaa164febb3c4c4c.png

ef54d65a18002ff39d80f3b5f6c9ff09.png

f427888e0339be8d700fb271b3509ac2.png

综上,在各种硬件的对比中,对比 PyTorch, OneFlow 平均能将 AltDiffusion 的推理性能提升 1 倍左右。


2

无缝兼容 PyTorch 生态

想体验 OneFlow 版的 AltDiffusion?只需要修改两行代码:

c0c7d5a65b9bc80041df11c725b14c30.png

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

1. OneFlowAltDiffusionPipeline.from_pretrained 能够直接使用 PyTorch 权重;

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

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

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

3

动静一体的编程体验

深度学习算法原型开发阶段需要快速修改和调试,动态图执行(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深度学习编译器的设计和实现。
————————————————
版权声明:本文为CSDN博主「OneFlow深度学习框架」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/OneFlow_Official/article/details/128810973


来源:转载于:CSDN

回复:

Copyright © 2021 .长沙麦涛网络科技有限公司 All rights reserved. 湘ICP备20015126号-2
联系我们