关于人工智能:刷新AI作图速度最快开源Stable-Diffusion出炉

53次阅读

共计 3132 个字符,预计需要花费 8 分钟才能阅读完成。

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

AI 作图一开始的“风格化”自身就为“玩”而生,大家广泛兴高采烈地尝试头像生成、磨皮,但很快就失去趣味。直到扩散模型的来临,才给 AI 作图带来量变,让人们看到了“AI 转成生产力”的曙光:画家、设计师不必搜索枯肠思考色调、构图,只有通知 Diffusion 模型想要什么,就能言出法随般地生成高质量图片。

然而,与汽车一样,如果扩散模型生成图片时“马力有余”,那就没法解脱玩具的标签,成为人类手中真正的生产工具。

起初,AI 作图须要几天,再缩减到几十分钟,再到几分钟,出图工夫在一直减速,问题是,到底快到什么水平,才会在业余的美术从业者甚至一般公众之间遍及开来?

显然,当初还无奈给出具体答案。即便如此,能够确定的是 AI 作图在技术和速度上的冲破,很可能曾经靠近甚至超过阈值。

其中一大标志性事件是,近期 OneFlow 首度将 Stable Diffusion 模型减速至“一秒出图 ”时代,随后 AI 社区开启一场 AI 作图的竞速“内卷”。 刚刚,OneFlow 又刷新了 SOTA 记录。

  • OneFlow Stable Diffusion 应用地址https://github.com/Oneflow-In…
  • OneFlow 地址:https://github.com/Oneflow-In…

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"

更详尽的应用办法请参考:
https://github.com/Oneflow-In…

5

后续工作

后续 OneFlow 团队将踊跃推动 OneFlow 的 diffusers(https://github.com/Oneflow-In…)和 transformers(https://github.com/Oneflow-In…)的 fork 仓库内容合并到 huggingface 上游的的对应仓库,这也是 OneFlow 首次以 transformers/diffusers 的后端的模式开发模型。

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

欢送在 GitHub 上 Star、试用:

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

欢送下载体验 OneFlow v0.8.0 最新版本:https://github.com/Oneflow-In…

正文完
 0