第一辆汽车诞生之初,时速只有 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 进行推理时的功能表现。
在 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。
功能优化无止境,OneFlow 也在不断迭代。两周之后,OneFlow 对Stable Diffusion 也做了进一步功能升级,并再度反超了 AITemplate 的成果 ,现在速度最快的仍是 OneFlow。
可以看到,在 A100 显卡上,无论是 PCIe 40GB 的装备仍是 SXM 80GB 的装备,OneFlow 根据此前功能成果持续提升 10% 以上,而且依然是名副其实的功能之王。
而在 T4、RTX2080 上,比较于目前 SOTA 功能的 TensorRT、PyTorch,OneFlow 的推理功能也大幅抢先。
2
生成图片展现
运用 OneFlow 版的 Stable Diffusion,你可以把天马行空的想法很快转化成艺术图片,比如:
以假乱真的阳光、沙滩和椰树:
仓鼠救火员、长兔耳朵的狗子:
在火星上吃火锅:
未来异国际 AI:
集齐 OneFlow 七龙珠:
上述图片均根据 OneFlow 版 Stable Diffusion 生成。如果你一时没有好的 idea,可以在 lexica 上参考一下广阔网友的创意,不只有生成图片还供给了对应的描绘文字。
3
无缝兼容 PyTorch 生态,实现一键模型搬迁
想体会 OneFlow Stable Diffusion?只需要修正三行代码,你就可以将 HuggingFace 中的 PyTorch Stable Diffusion 模型改为 OneFlow 模型,别离是将 import torch 改为 import oneflow as torch 和将 StableDiffusionPipeline 改为
OneFlowStableDiffusionPipeline:
之所以能这么轻松搬迁模型,是因为 OneFlow Stable Diffusion 有两个超卓的特性:
-
OneFlowStableDiffusionPipeline.from_pretrained 可以直接运用 PyTorch 权重。
-
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…