🚀 小型稳定扩散模型卡片
小型稳定扩散模型在保证相似图像生成质量的前提下,模型体积大幅减小,且推理速度更快。通过与特定部署仓库集成,能在CPU上快速生成图像。同时,该模型还支持Gradio Web UI,方便用户进行交互。
🚀 快速开始
【2023/02/07更新】 近期,我们发布了 一个扩散部署仓库,以加速在GPU(基于TensorRT,约4倍加速)和CPU(基于IntelOpenVINO,约12倍加速)上的推理速度。集成此仓库后,小型稳定扩散模型可以在 CPU上仅需5秒 即可生成图像*。
* 在Intel(R) Xeon(R) Platinum 8369B CPU上测试,使用DPMSolverMultistepScheduler 10步,转换为Onnx时固定通道/高度/宽度
以下是一些生成的示例图像:

✨ 主要特性
- 体积更小:相似图像生成质量下,模型体积接近缩小一半。
- 推理加速:通过集成特定仓库,在GPU和CPU上推理速度显著提升。
- 支持Gradio:支持 Gradio Web UI,方便用户交互。
📦 安装指南
文档未提及安装步骤,故跳过此章节。
💻 使用示例
基础用法
使用 Diffusers
>=0.8.0,不支持更低版本。
import torch
from diffusers import StableDiffusionPipeline
model_id = "OFA-Sys/small-stable-diffusion-v0/"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")
prompt = "an apple, 4k"
image = pipe(prompt).images[0]
image.save("apple.png")
📚 详细文档
Gradio支持
我们支持使用 Gradio Web UI来运行小型稳定扩散模型v0:
我们还为 小型稳定扩散模型v0 + 扩散部署
提供了一个空间演示。
由于Hugging Face为空间演示提供的是AMD CPU,使用15步生成一张图像大约需要35秒,比基于Intel CPU的环境慢很多,因为扩散部署基于Intel的OpenVINO。
训练过程
初始化
该模型从稳定扩散v1 - 4初始化。由于模型结构与稳定扩散不同且参数数量较少,稳定扩散的参数不能直接使用。因此,小型稳定扩散设置 layers_per_block = 1
,并选择原始稳定扩散中每个块的第一层来初始化小型模型。
训练步骤
初始化后,该模型在8个A100 GPU上进行了1100k步的训练。训练过程包括三个阶段。第一阶段是一个简单的预训练过程。在最后两个阶段,使用原始稳定扩散作为教师模型,将知识蒸馏到小型模型中。在所有阶段,仅训练unet中的参数,其他参数被冻结。
-
硬件:8 x A100 - 80GB GPUs
-
优化器:AdamW
-
阶段1 - 预训练模型的unet部分。
- 步数:500,000
- 批次:批量大小 = 8,GPU = 8,梯度累积 = 2。总批量大小 = 128
- 学习率:在10,000步内热身到1e - 5,然后保持不变
-
阶段2 - 使用稳定扩散v1 - 4作为教师模型进行知识蒸馏。除了真实标签外,此阶段的训练还使用教师模型生成的软标签 (pred_noise
)。
- 步数:400,000
- 批次:批量大小 = 8,GPU = 8,梯度累积 = 2。总批量大小 = 128
- 学习率:在5,000步内热身到1e - 5,然后保持不变
- 软标签权重:0.5
- 硬标签权重:0.5
-
阶段3 - 使用稳定扩散v1 - 5作为教师模型进行知识蒸馏。使用了《Knowledge Distillation of Transformer - based Language Models Revisited》中的几种技术,除了软标签外,还包括基于相似度的层匹配。
- 步数:200,000
- 批次:批量大小 = 8,GPU = 8,梯度累积 = 2。总批量大小 = 128
- 学习率:在5,000步内热身到1e - 5,然后保持不变
- 软标签权重:0.5
- 硬标签权重:0.5
训练数据
模型开发者使用以下数据集来训练模型:
- LAION - 2B英文美学数据集
- LAION - 艺术数据集
- LAION - 高清数据集
引用
@article{Lu2022KnowledgeDO,
title={Knowledge Distillation of Transformer-based Language Models Revisited},
author={Chengqiang Lu and Jianwei Zhang and Yunfei Chu and Zhengyu Chen and Jingren Zhou and Fei Wu and Haiqing Chen and Hongxia Yang},
journal={ArXiv},
year={2022},
volume={abs/2206.14366}
}
使用方式
以下部分改编自 稳定扩散模型卡片
直接使用
该模型仅用于研究目的。可能的研究领域和任务包括:
- 安全部署有可能生成有害内容的模型。
- 探索和理解生成模型的局限性和偏差。
- 生成艺术作品并用于设计和其他艺术过程。
- 在教育或创意工具中的应用。
- 生成模型的研究。
排除的使用方式如下所述。
滥用、恶意使用和超出范围的使用
该模型不应被用于故意创建或传播会给人们造成敌对或排斥环境的图像。这包括生成人们可预见会感到不安、痛苦或冒犯的图像;或传播历史或当前刻板印象的内容。
超出范围的使用
该模型并非用于生成真实或准确反映人物或事件的内容,因此使用该模型生成此类内容超出了该模型的能力范围。
滥用和恶意使用
使用该模型生成对个人残酷的内容是对该模型的滥用。这包括但不限于:
- 生成贬低、非人化或以其他方式伤害人们或其环境、文化、宗教等的表现形式。
- 故意推广或传播歧视性内容或有害刻板印象。
- 在未经个人同意的情况下模仿他们。
- 未经可能看到该内容的人的同意而生成性内容。
- 错误信息和虚假信息
- 令人震惊的暴力和血腥场面的表现形式
- 违反版权或许可材料使用条款的分享行为。
- 违反版权或许可材料使用条款的对版权或许可材料的修改内容的分享行为。
局限性和偏差
局限性
- 该模型无法实现完美的照片级真实感。
- 该模型无法渲染清晰可读的文本。
- 该模型在涉及组合性的更困难任务上表现不佳,例如渲染与 “一个红色立方体在蓝色球体上” 对应的图像。
- 面部和人物通常可能无法正确生成。
- 该模型主要使用英文字幕进行训练,在其他语言中的效果不佳。
- 该模型的自动编码部分存在信息损失。
- 该模型在大规模数据集 LAION - 5B 上进行训练,该数据集包含成人内容,在没有额外安全机制和考虑的情况下不适合用于产品。
- 未使用额外措施对数据集进行去重。因此,我们观察到对于训练数据中重复的图像存在一定程度的记忆现象。可以在 https://rom1504.github.io/clip - retrieval/ 上搜索训练数据,以帮助检测记忆的图像。
偏差
虽然图像生成模型的能力令人印象深刻,但它们也可能强化或加剧社会偏差。稳定扩散v1在 LAION - 2B(英文) 的子集上进行训练,该数据集主要由英文描述的图像组成。来自使用其他语言的社区和文化的文本和图像可能未得到充分考虑。这影响了模型的整体输出,因为白人和西方文化通常被设定为默认。此外,该模型使用非英文提示生成内容的能力明显低于使用英文提示的能力。
安全模块
该模型的预期使用方式是与Diffusers中的 安全检查器 一起使用。该检查器通过将模型输出与已知的硬编码NSFW概念进行比对来工作。这些概念被故意隐藏,以降低逆向工程此过滤器的可能性。具体来说,检查器在图像生成 之后,在 CLIPModel
的嵌入空间中比较有害概念的类别概率。这些概念与生成的图像一起传入模型,并与每个NSFW概念的手工设计权重进行比较。
此模型卡片由Justin Pinkney编写,并基于 稳定扩散模型卡片。
🔧 技术细节
文档中关于训练过程的描述可作为技术细节,已在详细文档部分详细阐述。
📄 许可证
该模型的许可证为openrail。
属性 |
详情 |
许可证 |
openrail |
数据集 |
ChristophSchuhmann/improved_aesthetics_6plus |
标签 |
stable-diffusion、stable-diffusion-diffusers、text-to-image |
语言 |
en |
任务类型 |
text-to-image |