刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

第一辆汽车诞生之初,时速只有 16 公里,乃至不如马车跑得快,很长一段时间,汽车尴尬地像一种“很酷的玩具”。人工智能作图的呈现也是如此。

AI 作图一开始的 “风格化” 自身就为 “玩” 而生,我们遍及兴味盎然地测验头像生成、磨皮,但很快就失去爱好。直到分散模型的来临,才给 AI 作图带来突变,让人们看到了 “AI 转成生产力” 的曙光:画家、设计师不必费尽心机思考色彩、构图,只需告诉 Diffusion 模型想要什么,就能言出法随般地生成高质量图片。

但是,与汽车一样,如果分散模型生成图片时“马力不足”,那就没法摆脱玩具的标签,成为人类手中真实的生产工具。

起初,AI 作图需要几天,再缩减到几十分钟,再到几分钟,出图时间在不断加快,问题是,终究快到什么程度,才会在专业的美术从业者乃至普通大众之间遍及开来?

明显,现在还无法给出具体答案。即便如此,可以确定的是 AI 作图在技能和速度上的打破,很可能现已接近乃至超过阈值。
其中一大标志性事情是,近期 OneFlow 首度将 Stable Diffusion 模型加快至“一秒出图”年代,随后AI社区开启一场AI作图的竞速“内卷”。刚刚,OneFlow又刷新了SOTA记载。

  • OneFlow Stable Diffusion 运用地址:github.com/Oneflow-Inc…

  • OneFlow 地址:github.com/Oneflow-Inc…

1

比快更快,OneFlow 一马当先

11月7日,OneFlow 宣告将 Stable Diffusion 模型作图速度实现了字面意义上的“一秒出图”在各种硬件以及更多结构的对比中,OneFlow 都将 Stable Diffusion 的推理功能面向了一个全新的 SOTA。

下面的图表别离展现了此前在 A100(PCIe 40GB / SXM 80GB)硬件上,别离运用 PyTorch, TensorRT, AITemplate 和 OneFlow 四种深度学习结构或编译器,对 Stable Diffusion 进行推理时的功能表现。

刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

在 A100 显卡上,无论是 PCIe 40GB 的装备仍是 SXM 80GB 的装备,OneFlow 的功能可以在当时的最优功能之上持续提升 15% 以上。

特别是在 SXM 80GB A100 上,OneFlow 初次让 Stable Diffusion 的推理速度达到了 50it/s 以上,初次把生成一张图片需要采样 50 轮的时间降到 1 秒以内。

一周之后,Meta AITemplate 对 Stable Diffusion 做了一次功能升级,成果反超了 OneFlow,PyTorch 创始人 Soumith Chintala 为此打 call。

刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

功能优化无止境,OneFlow 也在不断迭代。两周之后,OneFlow 对Stable Diffusion 也做了进一步功能升级,并再度反超了 AITemplate 的成果 ,现在速度最快的仍是 OneFlow。

刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

可以看到,在 A100 显卡上,无论是 PCIe 40GB 的装备仍是 SXM 80GB 的装备,OneFlow 根据此前功能成果持续提升 10% 以上,而且依然是名副其实的功能之王。

而在 T4、RTX2080 上,比较于目前 SOTA 功能的 TensorRT、PyTorch,OneFlow 的推理功能也大幅抢先。

2

生成图片展现

运用 OneFlow 版的 Stable Diffusion,你可以把天马行空的想法很快转化成艺术图片,比如:

以假乱真的阳光、沙滩和椰树:

刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

仓鼠救火员、长兔耳朵的狗子:

刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

在火星上吃火锅:

刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

未来异国际 AI:

刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

集齐 OneFlow 七龙珠:

刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

上述图片均根据 OneFlow 版 Stable Diffusion 生成。如果你一时没有好的 idea,可以在 lexica 上参考一下广阔网友的创意,不只有生成图片还供给了对应的描绘文字。

刷新 AI 作图速度,最快开源 Stable Diffusion 出炉

3

无缝兼容 PyTorch 生态,实现一键模型搬迁

想体会 OneFlow Stable Diffusion?只需要修正三行代码,你就可以将 HuggingFace 中的 PyTorch Stable Diffusion 模型改为 OneFlow 模型,别离是将 import torch 改为 import oneflow as torch 和将 StableDiffusionPipeline 改为
OneFlowStableDiffusionPipeline:

刷新 AI 作图速度,最快开源 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

运用 OneFlow 运转 Stable Diffusion

在 docker 中运用 OneFlow 运转 StableDiffusion 模型生成图片:

docker run --rm -it \
  --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 \
  -v ${HF_HOME}:${HF_HOME} \
  -v ${PWD}:${PWD} \
  -w ${PWD} \
  -e HF_HOME=${HF_HOME} \
  -e HUGGING_FACE_HUB_TOKEN=${HUGGING_FACE_HUB_TOKEN} \
  oneflowinc/oneflow-sd:cu112 \
  python3 /demos/oneflow-t2i.py # --prompt "a photo of an astronaut riding a horse on mars"

更翔实的运用方法请参考:
github.com/Oneflow-Inc…

5

后续作业

后续 OneFlow 团队将积极推进 OneFlow 的 diffusers(
github.com/Oneflow-Inc… 和 transformers(github.com/Oneflow-Inc… 的 fork 仓库内容合并到 huggingface 上游的的对应仓库,这也是 OneFlow 初次以 transformers/diffusers 的后端的形式开发模型。

值得一提的是,在优化和加快 Stable Diffusion 模型的过程中运用了 OneFlow 自研编译器,不只让 PyTorch 前端搭建的 Stable Diffusion 在 NVIDIA GPU 上跑得更快,而且也可以让这样的模型在国产 AI 芯片和 GPU 上跑得更快,这些将在之后的文章中揭秘技能细节。

欢迎在GitHub上Star、试用:

  • OneFlow Stable Diffusion 地址: github.com/Oneflow-Inc…
  • OneFlow 地址:github.com/Oneflow-Inc…

欢迎下载体会 OneFlow v0.8.0 最新版别:
github.com/Oneflow-Inc…