作者梁德澎 AI作图领域的工具一直不尽如人意,直到去年8月StableDiffusion开源,成为AI图像生成领域无可争辩的划时代模型。 为了提升其推理效率,OneFlow首度将StableDiffusion模型加速至一秒出图时代,极大提升了文生图的速度,在AIGC领域引发巨大反响,并得到了Stability。ai官方的支持。至今,OneFlow还在不断刷新SOTA纪录。 不过,由于目前大部分团队主要是基于翻译API英文StableDiffusion模型进行开发,所以在使用中文独特的叙事和表达时,英文版模型就很难给出正确匹配的图片内容,这对部分国内用户来说不太方便。 为了解决这一问题,国内的IDEA研究院认知计算与自然语言研究中心(IDEACCNL)也开源了第一个中文版本的太乙StableDiffusion,基于0。2亿筛选过的中文图文对训练。上个月,太乙StableDiffusion在HuggingFace上有近15万下载量,是下载量最大的中文StableDiffusion。 近期,OneFlow团队为太乙StableDiffusion适配了OneFlow后端,大大提升了推理性能,也可以做到一秒出图。不少开发者好奇OneFlow使用了哪些优化秘笈,后文将进行简要解读。 欢迎Star、运行OneFlow版太乙StableDiffusion: https:github。comOneflowIncdiffuserswikiHowtoRunOneFlowStableDiffusionwithoutdocker 1、对比PyTorch,OneFlow将太乙StableDiffusion推理速度提升1倍以上 下面的图表分别展示了在A100(PCIe40GBSXM80GB),V100(SXM232GB),RTX2080,RTX3080Ti,RTX3090,和T4不同类型的GPU硬件上分别使用PyTorch,和OneFlow对太乙StableDiffusion进行推理的性能表现。 可以看到,对于A100显卡,无论是PCIe40GB的配置还是SXM80GB的配置,OneFlow的性能相比PyTorch能提升1倍以上,推理速度达到了50its以上,生成一张图片所需要的时间在1秒以内。 其他硬件数据: 注:3090上的AIT数据由IDEA研究院提供 综上,在各种硬件的对比中,对比PyTorch,OneFlow能将太乙StableDiffusion的推理性能提升1倍多。 2、生成图片展示 滔滔江水,连绵不绝,唯美,插画 长城,清晨,朦胧,唯美,插画 梦回江南,中国古代小镇,唯美,插画 中国的未来城市,科幻插画 古代建筑,白雪纷飞 螺蛳粉 注:上述图片均基于OneFlow版太乙StableDiffusion生成 3、无缝兼容PyTorch生态 想体验OneFlow版的太乙StableDiffusion?只需要修改两行代码: 之所以能这么轻松迁移模型,是因为OneFlowStableDiffusion有两个出色的特性:OneFlowStableDiffusionPipeline。frompretrained能够直接使用PyTorch权重。OneFlow本身的API和PyTorch对齐,因此importoneflowastorch之后,torch。autocast、torch。float16等表达式完全不需要修改。 上述特性使得OneFlow兼容了PyTorch的生态,这不仅在OneFlow对太乙StableDiffusion的迁移中发挥了作用,也大大加速了OneFlow用户迁移其它许多模型,比如在和torchvision对标的flowvision中,许多模型只需通过在torchvision模型文件中加入importoneflowastorch即可得到。 此外,OneFlow还提供全局mocktorch功能,在命令行运行eval(oneflowmocktorch)就可以让接下来运行的所有Python脚本里的importtorch都自动指向oneflow。 4、动静一体的编程体验 深度学习算法原型开发阶段需要快速修改和调试,动态图执行(Eagermode,definebyrun)最优。但在部署阶段,模型已经固定下来,计算效率变得更重要,静态图执行(Lazymode,defineandrun)可以借助编译器做静态优化来获得更好的性能。因此,推理阶段主要使用静态图模式。 最近,PyTorch升级到2。0引入了compile()这个API,可以把一个模型或一个Module从动态图执行变成静态图执行。OneFlow里也有一个类似的机制,不过接口名是nn。Graph(),它可以把传入Module转成静态图执行模式。 不仅如此,OneFlow的nn。Graph模式基于MLIR实现了一系列计算图的图层优化,譬如内存布局、算子融合等。 这不仅使得计算图表示的深度学习模型可以在各种硬件上达到最高性能,更重要的是,使得深度学习框架导入的计算图更方便地在不同硬件之间实现迁移,有助于克服国产硬件软件生态薄弱的问题。未来,我们将发布更多内容来揭示OneFlow深度学习编译器的设计和实现。 欢迎Star、运行OneFlow版太乙StableDiffusion: https:github。comOneflowIncdiffuserswikiHowtoRunOneFlowStableDiffusionwithoutdocker OneFlow地址:https:github。comOneflowInconeflow 欢迎Star、试用OneFlow最新版本:https:github。comOneflowInconeflow