hi,大家好!2024年7月5日,StabilityAI官方网站更新了Stable Diffusion 3(简称SD3)的许可协议。回顾SD3的发展历程,今年2月,StabilityAI首次发布了SD3的早期预览版,随后在4月开放了SD3的API接口。直到6月,他们才正式推出了SD3 – Medium版本。这次的SD3发布并未如期受到欢迎,反而再各大社区引发了强烈的争议和抵制,主要原因还是在于许可协议存在着争议性条款。这些条款被认为限制了开发者和炼丹师的自由,与开源社区的价值观产生了冲突。
由于社区的广泛抵制,SD3并未像SD1.5、SD2.1和SDXL那样获得大量炼丹师(即AI模型训练师)和开发者的青睐。这导致基于SD3的深度训练和创新开发工作相对匮乏,在一定程度上影响了模型的进一步优化和应用拓展。众所周知,开源的意义并不是拿来就用,而是分享与互惠,产生一个良性循环:你的贡献帮助了别人,别人的改进又反过来让你受益。这种模式在AI这样一个快速发展的领域尤其重要。毕竟,没有哪个单一的公司或个人能够垄断所有的好点子。不过呢,还是不得不说,开源者背后的经济付出和现实条件,在开放与可持续发展之间找到一个平衡点是一件非常难的事。
哈哈,这个具有争议的话题就不继续了,我们先来看看这次License具体更新了啥。
总结一下:新的社区许可证现在免费用于研究、非商业和商业用途。只有当您的年收入超过 100 万美元并且您在商业产品或服务中使用 Stability AI 模型时,您才需要付费的企业许可证。
Stable Diffusion 3 – Medium
这次开源的SD3整体架构和以往的SD1.5、2.1和XL完全不一样,我们先来看看模型的基础信息。
模型尺寸:2B(20亿参数)
模型类型:MMDiT 文本到图像生成模型
模型描述:一个可以根据文本提示生成图像的模型。它是一个多模态扩散变换器(MMDiT) 架构的模型,使用三个固定的、预训练的文本编码器(OpenCLIP-ViT/G、CLIP-ViT/L和T5-xxl)
训练数据集:使用合成数据和经过筛选的公开数据来训练的模型。该模型已在 10 亿张图像上进行了预训练。微调数据包括 3000 万张专注于特定视觉内容和风格的高质量美学图像,以及 300 万张偏好数据图像。
应用支持:ComfyUI和StableSwarmUI
第三方支持:https://www.shakker.ai/
目前能在抱抱脸下载到的模型:
- sd3_medium.safetensors不包含文本编码器,SD3模型下载后还要单独下载clip文本编码器。
- sd3_medium_incl_clips.safetensors包含文本编码(ClipL+ClipG),(显存8G-12G)推荐下载这个模型。
- sd3_medium_incl_clips.safetensors包含文本编码(ClipL+ClipG+T5XXL)FP16量化版本,(显存24G)推荐机器性能好的使用。
- sd3_medium_incl_clips.safetensors包含文本编码(ClipL+ClipG+T5XXL)FP8量化版本,(显存24G)推荐机器性能好的使用。
架构方面:
(a)图是模型整体架构,(b)图是MM-DiT架构
整体架构概览:
- 文本输入:
- 使用了三种不同的文本编码器:CLIP-G/14, CLIP-L/14, 和 T5 XXL
- 这些编码器的输出被合并成一个4096通道的表示
- 包含了pooled输出和77+77个token的序列输出
- 潜在噪声处理:
- 另一个输入分支,噪声图像的潜在表示
- 经过Patching和线性层处理
- 主要处理流程:
- Caption和Noised Latent的输出与位置编码(Positional Embedding)相加
- 通过一系列MM-DiT-Block处理(从1到d)
- 每个block还接收额外的时间步序(Timestep)和条件(c)输入
- 输出处理:
- 经过Modulation, Linear, 和Unpatching层
- 最终生成Output
MM-DiT block的架构概览:
- 自注意力机制:
- 使用SiLU激活函数和线性层处理输入
- 计算Q, K, V用于注意力机制
- 应用LayerNorm和一些调制操作
- 前馈网络:
- 在注意力层之后,使用MLP进行进一步处理
- 同样应用LayerNorm和调制操作
- 残差连接:
- 在整个block中使用多个残差连接,有助于信息流动和梯度传播
这个架构结合了多种先进技术:
- 多模态输入处理(文本和图像)
- Transformer架构的变体(MM-DiT blocks)
- 注意力机制(Q,K,V)
- 条件生成(通过c和timestep输入)
MM-DiT是”MultiModal Diffusion Transformer”的缩写,是SD3的核心架构,它的厉害之处在于能同时处理文本和图像信息,这种设计让模型能更好地理解文本描述,同时又能准确地将其转化为视觉元素。说实话,这种设计看起来有点像是在向大语言模型(LLM)致敬。毕竟,LLM在处理各种任务时展现出的灵活性让人印象深刻。StabilityAI似乎是想把这种灵活性带入图像生成领域。
SD3-Medium和SDXL的差异在哪?
- 文本编码器:
- SD3:使用了三种文本编码器:CLIP-G/14, CLIP-L/14, 和 T5 XXL。
- SDXL:使用两个CLIP文本编码器(OpenCLIP ViT-bigG和OpenCLIP ViT-Large)。
- 潜空间维度:
- SD3:使用4096通道的潜在表示。
- SDXL:使用1024或2048通道(取决于具体版本)。
- 主要架构:
- SD3:引入了新的MM-DiT (MultiModal Diffusion Transformer) 块。
- SDXL:使用传统的UNet架构。
- 条件输入:
- SD3:除了时间步和文本嵌入外,还引入了额外的条件输入c。
- SDXL:主要使用时间步和文本嵌入作为条件。
- 注意力机制:
- SD3:在MM-DiT块中使用了更复杂的注意力机制,包括LayerNorm和调制操作。
- SDXL:使用标准的交叉注意力机制。
- 位置编码:
- SD3:明确地使用了位置编码(Positional Embedding)。
- SDXL:在UNet中隐式地处理位置信息。
- 模块化设计:
- SD3:架构图显示了更模块化的设计,每个组件的功能更加明确。
- SDXL:虽然也是模块化的,但没有SD3这样清晰的分离。
- 输出处理:
- SD3:使用了Modulation、Linear和Unpatching层。
- SDXL:通常直接从UNet输出到解码器。
T5XXL和Open CLIP的区别
特征 | T5XXL Text Encoder | Open CLIP |
---|---|---|
主要用途 | 通用文本处理和理解 | 图像-文本对比学习 |
模型类型 | 仅文本编码器(Transformer的编码器部分) | 多模态(文本编码器 + 图像编码器) |
预训练任务 | 文本到文本的转换任务 | 图像-文本对比学习 |
输入 | 仅文本 | 文本和图像 |
输出 | 文本表示或生成的文本 | 文本和图像的联合嵌入 |
应用场景 | NLP任务(如分类、摘要、问答等) | 图像检索、零样本图像分类、跨模态任务 |
模型规模 | 非常大(约110亿参数) | 可变(有不同规模的版本) |
灵活性 | 高度灵活,可用于各种NLP任务 | 主要针对图像-文本关联任务 |
开源性 | 部分开源 | 完全开源 |
写在最后
总的来说,StabilityAI对于这次协议的更新还是做出了明智的决策,虽然在开源与可持续发展之间找到平衡点是一件很难的事。还有就是SD3的架构变化,使得出图效率更高了,不过对于硬件要求也更高。