模型详细情况和参数
DeciDiffusion 1.0是一个拥有8.2亿参数的文本到图像的潜在扩散模型,它是在LAION-v2数据集上进行训练并在LAION-ART数据集上进行了微调。我们采用了先进的训练技术,以加速训练过程,提高训练性能,并实现更好的推理质量。
开发者:Deci
模型类型:基于扩散的文本到图像生成模型
语言(NLP):英语
代码许可:此存储库中的代码采用Apache 2.0许可发布
权重许可:权重采用CreativeML Open RAIL++-M许可发布
博客:技术概述及与Stable Diffusion 1.5的比较
演示:体验DeciDiffusion的实际效果
DeciDiffusion 1.0是一种基于扩散的文本到图像生成模型。虽然它保留了Stable Diffusion的基本架构元素,如变分自动编码器(VAE)和CLIP的预训练文本编码器,但DeciDiffusion引入了重大改进。主要创新之一是将U-Net替换为更高效的U-Net-NAS,这是Deci首创的设计。这个新颖的组件通过减少参数数量来简化模型,从而提高计算效率。
该模型经历了4个阶段的训练:
第一阶段:在分辨率256x256上从头开始训练,训练了128万步,使用了LAION-v2的320万样本子集。
第二阶段:在相同数据集上进行512x512分辨率的训练,训练了87万步,以学习更详细的信息。
第三阶段:进行了65,000步的训练,使用了EMA(指数移动平均),另一个学习率调度程序和更多的“质量”数据。
第四阶段:在LAION-ART的200万样本子集上进行微调。
DeciDiffusion 1.0经过训练以实现样本高效,即在推理期间使用更少的扩散时间步来生成高质量的结果。为此,采用了以下训练技巧:
V-预测
在训练期间强制执行零终端信噪比
采用余弦方差调度
使用最小信噪比损失权重策略
在推理期间采用Rescale Classifier-Free Guidance
从最后一个时间步采样
使用大批次的LAMB优化器
以下技巧用于缩短训练时间:
使用预先计算的VAE和CLIP潜在变量
只在训练的最后阶段使用EMA
附加细节
第一阶段
硬件:8 x 8 x A100 (80gb)
优化器:AdamW
批次大小:8192
学习率:1e-4
第二到第四阶段
硬件:8 x 8 x H100 (80gb)
优化器:LAMB
批次大小:6144
学习率:5e-3
平均而言,DeciDiffusion在30次迭代后生成的图像与Stable Diffusion 1.5在50次迭代后生成的图像具有可比较的Frechet Inception Distance(FID)分数。然而,许多最近的文章对FID分数的可靠性表示怀疑,警告说FID结果往往是脆弱的,与MNIST的人类判断和主观评估不一致,具有统计偏见,并且更喜欢记忆数据集而不是超越它。
鉴于对FID可靠性的这种怀疑,我们选择通过对比Stable Diffusion 1.5进行用户研究来评估DeciDiffusion 1.0的样本效率。我们的图像标题来源是PartiPrompts基准测试,该基准测试旨在比较不同具有挑战性提示的大型文本到图像模型。
对于我们的研究,我们选择了10个随机提示,并为每个提示生成了3张图像,其中Stable Diffusion 1.5配置为运行50次迭代,而DeciDiffusion配置为运行30次迭代。
然后,我们向一组专业人员展示了30个并排的比较图像,他们根据对提示的遵循和美学价值进行了投票。
根据结果,DeciDiffusion在30次迭代后在美学上具有优势,但在提示对齐方面与50次迭代的Stable Diffusion相当。
以下表格总结了我们的调查结果:
Answer | Better image aesthetics | Better prompt alignment |
---|---|---|
DeciDiffusion 1.0 30 Iterations | 41.1% | 20.8% |
StableDiffusion v1.5 50 Iterations | 30.5% | 18.8% |
On Par | 26.3% | 39.1% |
Neither | 2.1% | 11.4% |
以下表格提供了DeciDiffusion 1.0和Stable Diffusion v1.5之间的图像延迟比较。
Inference Tool + Iterations | DeciDiffusion 1.0 on A10 (seconds/image) | Stable Diffusion v1.5 on A10 (seconds/image) |
---|---|---|
Pytorch 50 Iterations | 2.11 | 2.95 |
Infery 50 Iterations | 1.55 | 2.08 |
Pytorch 35 Iterations | 1.52 | - |
Infery 35 Iterations | 1.07 | - |
Pytorch 30 Iterations | 1.29 | - |
Infery 30 Iterations | 0.98 | - |