英文

小型稳定扩散模型卡

【更新日期2023/02/07】最近,我们发布了 a diffusion deployment repo 以在GPU(基于TensorRT,加快了4倍)和CPU(基于IntelOpenVINO,加快了12倍)上加快推理速度。与该存储库集成,小型稳定扩散可以在CPU上仅用5秒生成图像*。

* 在Intel(R) Xeon(R) Platinum 8369B CPU上进行测试,DPMSolverMultistepScheduler 10步,转换为Onnx时固定通道/高度/宽度

生成的图像质量相似,但大小几乎减少了一半!下面是一些样本:

Gradio

我们支持一个 Gradio Web UI来运行小型稳定扩散-v0: 我们还为 small-stable-diffusion-v0 + diffusion-deploy 提供了一个空间演示。由于huggingface为空间演示提供了AMD CPU,使用15个步骤生成一个图像需要约35秒,这比基于Intel的OpenVINO的Intel CPU环境要慢得多。

示例

使用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")

训练

初始化

这个模型是从stable-diffusion v1-4初始化的。由于模型结构不同,参数数量较小,无法直接利用stable扩散的参数。因此,小型稳定扩散设置layers_per_block=1,并选择原始稳定扩散中的每个块的第一层来初始化小型模型。

训练过程

初始化后,该模型已在8个A100 GPUS上进行了1100k个步骤的训练。训练过程包括三个阶段。第一阶段是一个简单的预训练过程。在后两个阶段中,使用原始稳定扩散将知识传递给小模型作为教师模型。在所有阶段中,只训练了unet中的参数,其他参数被冻结。

  • 硬件:8 x A100-80GB GPUs

  • 优化器:AdamW

  • 阶段 1 - 预训练模型的unet部分。

    • 步骤:500,000
    • 批次:批量大小=8,GPU=8,梯度累积=2。总批量大小=128
    • 学习率:热身到1e-5,持续10,000个步骤,然后保持不变
  • 阶段 2 - 使用稳定的扩散v1-4作为教师模型,通过软标签(pred_noise)生成的模型输出来训练。

    • 步骤:400,000
    • 批次:批量大小=8,GPU=8,梯度累积=2。总批量大小=128
    • 学习率:热身到1e-5,持续5,000个步骤,然后保持不变
    • 软标签权重:0.5
    • 硬标签权重:0.5
  • 阶段 3 - 使用稳定的扩散v1-5作为教师模型,使用了《知识蒸馏:基于Transformer的语言模型的再评估》中的几种技术,包括基于相似性的层匹配和软标签。

    • 步骤:200,000
    • 批次:批量大小=8,GPU=8,梯度累积=2。总批量大小=128
    • 学习率:热身到1e-5,持续5,000个步骤,然后保持不变
    • 软标签权重:0.5
    • 硬标签权重:0.5

训练数据

模型开发者使用以下数据集对模型进行训练:

  • LAION-2B en aesthetic
  • LAION-Art
  • LAION-HD
  • 引用

    @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}
    }
    

    用途

    以下部分改编自 Stable Diffusion model card

    直接使用

    该模型仅用于研究目的。可能的研究领域和任务包括

    • 安全部署具有生成有害内容潜力的模型。
    • 探究和理解生成模型的局限性和偏见。
    • 生成艺术作品,并在设计和其他艺术过程中使用。
    • 教育或创意工具中的应用。
    • 生成模型的研究。

    以下是排除的用途。

    误用、恶意使用和超出范围的使用

    不应使用该模型有意地创建或传播可能让人感到恶心、痛苦或冒犯的图像;或传播历史或当前的刻板印象的内容,创建敌对或疏远环境的图像。

    超出范围的使用

    该模型没有经过训练,不能成为人或事件的真实和真实的代表,因此使用模型生成此类内容超出了模型的能力。

    误用和恶意使用

    滥用此模型生成对个人无礼的内容是对该模型的误用。包括但不限于:

    • 生成贬低、贬低或以其他方式有害的人或其环境、文化、宗教等的表达。
    • 有意推广或传播歧视性内容或有害刻板印象。
    • 未经个人同意冒充个人。
    • 未经看到的人同意的性内容。
    • 错误和虚假信息
    • 严重暴力和血腥的表现
    • 共享受版权或许可协议违反的内容。
    • 共享违反版权或许可协议的内容的修改版本。

    局限性和偏见

    局限性

    • 模型无法实现完美的照片逼真度
    • 模型无法呈现清晰可读的文本
    • 模型在涉及组合性更强的更困难的任务中(如渲染与“一个红色的立方体放在蓝色球上”相对应的图像)表现不佳
    • 面部和人物普遍可能无法正确生成。
    • 该模型主要使用英文标题进行训练,对其他语言的适应性较差。
    • 模型的自动编码部分具有损失性
    • 模型训练于一个包含成人内容的大规模数据集 LAION-5B ,没有附加的安全机制和考虑的情况下,不适合产品使用。
    • 未采用额外措施来去重数据集。结果,我们观察到在训练数据中重复的图像存在一定程度的记忆。可以通过搜索训练数据 https://rom1504.github.io/clip-retrieval/ 来可能协助检测到记忆图像。

    偏见

    尽管图像生成模型的能力令人印象深刻,但它们也可以强化或加剧社会偏见。稳定的扩散v1是在 LAION-2B(en) 的子集上进行训练的,该子集主要由英语描述为主的图像组成,其他语言的文本和图像可能没有得到充分考虑。这会影响模型的整体输出,因为白人和西方文化通常被设定为默认值。此外,与使用英语提示相比,模型以非英语提示生成内容的能力显著较差。

    安全模块

    该模型的预期用途是与Diffusers中的 Safety Checker 一起使用。该检查器通过将模型输出与已知的硬编码的不安全概念进行比较来工作。这些概念被故意隐藏,以减少逆向工程此过滤器的可能性。具体而言,检查器会在生成图像的CLIP模型的嵌入空间中将有害概念的类别概率与每个不安全概念的手工定义权重进行比较。

    此模型卡片由Justin Pinkney编写,基于 Stable Diffusion model card