2023 年扩散模型还有什么可做的方向?

论坛 期权论坛 期权     
期权匿名问答   2022-12-2 14:45   7342   5
ICLR 2023开奖,扩散模型成为一大热门,且席卷很多方向。快到2023年了,扩散模型还有什么方向可做的呢
分享到 :
0 人收藏

5 个回复

倒序浏览
2#
期权匿名回答  16级独孤 | 2022-12-2 14:45:49 发帖IP地址来自 北京
除了算法创新,扩散模型的性能加速或许也是不错的方向。





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

AI 作图一开始的 “风格化” 本身就为 “玩” 而生,大家普遍兴致勃勃地尝试头像生成、磨皮,但很快就失去兴趣。直到扩散模型的降临,才给 AI 作图带来质变,让人们看到了 “AI 转成生产力” 的曙光:画家、设计师不用绞尽脑汁思考色彩、构图,只要告诉 Diffusion 模型想要什么,就能言出法随般地生成高质量图片。
然而,与汽车一样,如果扩散模型生成图片时“马力不足”,那就没法摆脱玩具的标签,成为人类手中真正的生产工具。
起初,AI 作图需要几天,再缩减到几十分钟,再到几分钟,出图时间在不断加速,问题是,究竟快到什么程度,才会在专业的美术从业者甚至普通大众之间普及开来?
显然,现在还无法给出具体答案。即便如此,可以确定的是 AI 作图在技术和速度上的突破,很可能已经接近甚至超过阈值。

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

  • OneFlow Stable Diffusion 使用地址:
https://github.com/Oneflow-Inc/diffusers/wiki/How-to-Run-OneFlow-Stable-Diffusion

  • OneFlow 地址:
https://github.com/Oneflow-Inc/oneflow/
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"
后续工作



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

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

欢迎在GitHub上Star、试用:

  • OneFlow Stable Diffusion 地址:
https://github.com/Oneflow-Inc/diffusers/wiki/How-to-Run-OneFlow-Stable-Diffusion

  • OneFlow 地址:
https://github.com/Oneflow-Inc/oneflow/
其他人都在看

  • Vision Transformer这两年
  • OneFlow源码解析:Global Tensor
  • 更快的YOLOv5问世,附送全面中文解析教程
  • 李白:你的模型权重很不错,可惜被我没收了
  • Stable Diffusion半秒出图;VLIW的前世今生
  • 大模型狂潮背后:AI基础设施“老化”与改造工程
  • OneEmbedding:单卡训练TB级推荐模型不是梦
3#
期权匿名回答  16级独孤 | 2022-12-2 14:46:17 发帖IP地址来自 北京
比较有价值的方向应该是更多聚焦于 diffusion models 特有的性质和方法的课题;而不是单纯替换成 diffusion models 并且其他的 generative models 比如 GANs 也能做的,这样没多大意义。
一些工作聚焦于 faster sampling,当然这的确是一大痛点,是一个不错的方向。但是可能改进的空间不多了,都已经做到25steps以内能够生成了,所以提升余地大概已经不多了。
还有一个显而易见的特性,就是multistep sampling。多步那么势必有多步带来的好处,引入一些之前未被研究的特性。需要多步,才能从gaussian noise 变到 targeted sample,这里貌似和梯度下降的参数优化有异曲同工之妙。Score Distillation Sampling (SDS) 把 diffusion models 的 预测噪声的残差 与 梯度 所联系起来,使得在parameter space上进行diffusion,而不是image pixel space,每一步预测的噪声与图像上的梯度有一定联系,并且diffusion scheduler 与我们熟知的 lr scheduler 似乎也有隐约关联,我觉得是一个有趣的发现,这里是个很好的研究方向。
用于三维物体(或者是运动物体)生成是个刚刚起步的阶段,只有寥寥几篇相关工作。并且现阶段很明显,也存在很多弊端,比如,在2d上生成得很真实,但是3d上就有点不太真实;并且只是针对单个小物体;可能还有所谓的 multi-face Janus problem。预计过多半年这个方向就饱和了。
把别人release 的 diffusion pre-trained models 给利用好,也是十分有意义的,毕竟不是每个实验室都有那么多资源从头训一个。比如用pre-trained models 来做 image editing,inpainting ,甚至是涉及semantic 层面的如 scene graph 等等。感觉对于一个pre-trained 好的models,有很多潜力没有挖出来。
其他一些偏理论的工作,比如 Cold Diffusion,Poisson Flow Generative Model 也是挺有创意的。表明了现有的 diffusion 方案不是唯一的,还可以进一步拓展和推广。
4#
期权匿名回答  16级独孤 | 2022-12-2 14:47:08 发帖IP地址来自 北京
过去半年我主要在做diffusion model的无需训练的高质量采样加速,图像上目前做到10到25步了(dpm-solver++,stable-diffusion最新的官方采样算法,大部分情况下15步效果就很好了)。然而步数再少质量就会严重下降,仍然做不到实时采样,跟传统GAN的速度还是差距挺大的。
我觉得不管是采样算法的革新,还是训练方式的革新,还是编译或者硬件优化,实时加速的方向还是有很大的挖掘潜力,也绝对是diffusion model的重要且困难的核心问题之一。欢迎感兴趣的同学交流!
顺便打个广告,我看到今年cvpr很多投稿还都在用50到100步的ddim,其实这个速度已经不是最快的了,我极力推荐dpm-solver++,可以理解成ddim的高级替代,能非常快地做所有ddim能做的事(包括inpainting那些也都能做),欢迎大家使用我们的官方github开源代码~
(补充一句,这里的“步数”就是函数调用次数,即number of function evaluations, NFE。运行时间基本和NFE是正比的
5#
期权匿名回答  16级独孤 | 2022-12-2 14:48:00 发帖IP地址来自 北京
扩散模型分类,扩散模型分割,扩散模型目标检测, diffumer,difformer,transfusion,diffgan,diff-gnn,diff-flow, distill-diffusion,video-diffusion, slow-fast diffusion, diffusion-lm,prompt-diff,cross-diffusion, cycle-diffusion,dual-diffusion,triple-diffusion,contrastive diffusion model, diffusion is all you need, one diffusion rule them all, make diffusion great again
6#
期权匿名回答  16级独孤 | 2022-12-2 14:48:42 发帖IP地址来自 福建
更efficient的训练过程

扩散模型的一大缺点就是采样很慢,它需要从噪声出发一步一步迭代到真实数据分布。关于扩散模型加速采样的文章已经有很多了。最开始1000步,到现在30步就能生成一张高质量图片。
它的另外一个痛点就是训练。这玩意训起来贵的离谱啊!在cifar10上,我看到有训练花了500k iterations的。模型在100k step时已经收敛了,剩下400k steps损失基本不下降。但如果你观察生成样本,在100k时质量很差,只有通过剩下400k 的训练,生成效果才会慢慢变好。我很好奇为什么训练需要这么多步“无效”的优化?如何加速训练过程?如果采样只需要30步就能得到很好的图片,那么能否只训练那30步而不是全部的1000步呢?diffusion的训练规模如此之大,模型forward的latency就需要尽量小,那么如何设计出更加efficient/sparse的架构呢?[1] 这篇文章为了加速采样探索了diffusion model的设计空间,那么是否能够找到一些通用的设计原则来指导我们设计diffusion的网络架构和训练参数(比如噪声强度,加噪步数)?
在新场景下更公平的比较

任何一个领域的发展都离不开一个全面和公平的benchmark或evaluation metric。diffusion model在图片上火了不久后,很多工作将它应用到其他领域,比如小分子蛋白质的生成[2,3]。在这些新的模态上,如何评价生成样本的质量?我举个例子,蛋白质由氨基酸组成。氨基酸可以看成AGU...的序列。一条蛋白质序列会折叠成特定的3D结构。



一个生成的蛋白质,它的序列是:AUG...

给定一个生成的蛋白质(序列和结构),你如何评价它的质量?判断这条序列有效?(自然界中真的存在这样的蛋白质)如何判断折叠的结构有效?就算这个蛋白质能在自然界中存在,但是你生成的结构如果不符合物理化学规律就不可能折叠,比如你生成的两个原子靠的特别近就会发生clash。如何判断序列和结构的相关性?即生成的序列和结构有没有对应关系?(给定一个氨基酸序列,一般来说,它只能折叠成一种特定的三维结构。怎么判断生成的结构和生成序列在自然界中折叠的结构是相似的?
条件生成

...待会儿再写。
参考文献

[1] Elucidating the Design Space of Diffusion-Based Generative Models
[2] Illuminating protein space with a programmable generative model
[3] Broadly applicable and accurate protein design by integrating structure prediction networks and diffusion generative models
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP