Skip to content

Stable Diffusion 架构详解

Stable Diffusion(SD)是 扩散模型 走向大众的里程碑。它的核心创新不在于扩散本身,而在于把扩散过程从像素空间搬到压缩的潜空间(Latent Diffusion),用四大组件协同完成”文字到图像”的生成。本页完整拆解这套架构,帮助你理解每一块零件如何咬合运转。关于 VAE 的细节可参考 VAE,UNet 的结构可参考 UNet 架构。

2025 年更新提示:从 Stable Diffusion 3(2024 年中发布)到 SD 3.5(2024 年 10 月发布)以及 Black Forest Labs 的 FLUX.1 系列,扩散模型的底层架构已从”UNet + 噪声预测”演进为”Transformer + 流匹配(Flow Matching)“。本页先完整讲解经典 Latent Diffusion 架构(SD 1.x / 2.x / SDXL),再在末尾专题介绍 SD3 / SD3.5 / FLUX 的架构革新。理解经典架构是理解新一代模型的前提。

想象一条翻译流水线。你递给工厂一张订单(文字提示词),工厂里有四个车间:

  1. 翻译科(CLIP 文本编码器):接单员只会读数字。他翻开一本”文字到向量”的字典(CLIP,即 Contrastive Language-Image Pre-training,一种通过对比学习把文字和图像映射到同一向量空间的模型),把你写的提示词翻译成 77 个数字向量,交给下游车间。
  2. 压缩科(VAE 编码器):图像世界太大太重(512 乘 512 乘 3 的像素),搬运成本极高。压缩科有一台”图像压缩机”(VAE 编码器,即变分自编码器 Variational Autoencoder),把一整张图压成一张小小的潜空间地图(64 乘 64 乘 4),体积缩小约 48 倍,但保留了视觉精华。
  3. 雕刻科(UNet 去噪网络):雕刻师拿到一张纯噪声的潜空间地图和翻译科送来的文字指令,在潜空间里反复”刮噪声”(去噪迭代),每刮一刀都对照文字指令确保方向正确,直到噪声基本刮干净,一张清晰的潜空间地图浮现。
  4. 还原科(VAE 解码器):还原师把雕刻完成的潜空间地图重新展开成像素世界(512 乘 512 乘 3),一张可视的图像就诞生了。

其中,文字指令如何”对照”?靠的是 cross-attention(交叉注意力):雕刻师每次看一眼自己的地图(Q),同时查阅翻译科提供的文字说明(K 和 V),据此调整雕刻方向。这就是文字”指挥”图像的机制。

什么是注意力机制(Attention)? 注意力机制是一种让神经网络”选择性地关注输入中重要部分”的技术。核心是 Q(查询 Query)、K(键 Key)、V(值 Value)三个向量的交互:用 Q 去匹配 K 得到”注意力分数”(即哪些位置更相关),再用分数对 V 加权求和得到输出。在 SD 中,Q 来自图像特征,K/V 来自文字特征,从而实现”文字引导图像生成”。详见 注意力机制。

Latent Diffusion:为什么不在像素空间做扩散

Section titled “Latent Diffusion:为什么不在像素空间做扩散”

传统扩散模型(如 DDPM,即 Denoising Diffusion Probabilistic Models,去噪扩散概率模型)直接在像素空间操作。一张 512 乘 512 的 RGB 图像有 512 乘 512 乘 3 等于 786432 个数值,在这么大的空间里反复迭代去噪,计算量惊人。

什么是扩散过程(Diffusion Process)? 扩散包含前向和反向两个过程。前向过程(加噪)是一步步往干净图像上添加高斯噪声,直到变成纯随机噪声;反向过程(去噪)则是从纯噪声出发,一步步学习还原出干净图像。DDPM 的关键洞察是:如果我们训练一个神经网络来预测每一步添加的噪声,就可以从噪声”逆向”生成图像。

Rombach 等人在 2022 年提出 Latent Diffusion(潜空间扩散),核心思想是:先用一个预训练的 VAE 编码器把图像压到一个维度小得多的潜空间,在这个小空间里做扩散和去噪,最后再用 VAE 解码器还原回像素。

什么是潜空间(Latent Space)? 潜空间是数据被压缩后所处的低维表示空间。举例:一张人脸照片在像素空间有几百万个数值,但决定”是谁”的信息可能只有几百个维度(年龄、肤色、五官比例等)。VAE 就在学习找到这样的紧凑表示。在潜空间做计算,相当于在”精华信息”的层面上操作,而不是在原始像素的冗余数据上操作。

具体数字:512 乘 512 乘 3 的图像被压缩为 64 乘 64 乘 4 的潜变量,元素总数从 786432 降到 16384,计算量减少约 48 倍(786432 除以 16384 约等于 48)。这就是 SD 能在消费级 GPU 上运行的关键。

为什么压缩 8 倍而不是更多? 这是在信息保留和计算效率之间的权衡。下采样因子越大,计算越快,但 VAE 还原图像时的信息损失也越大。实验表明,8 倍下采样是一个甜蜜点:计算量大幅降低,同时 VAE 解码后的图像质量几乎无损。SDXL 和 SD3 沿用了同样的 8 倍因子,但 SD3 把通道数从 4 增加到了 16(详见后文)。

组件一:CLIP 文本编码器

CLIP(Contrastive Language-Image Pre-training,对比式语言-图像预训练)是 OpenAI 开发的图文对齐模型。它的训练方式很巧妙:用数亿对”图片-文字描述”数据,训练一个图像编码器和一个文本编码器,让匹配的图文对在向量空间中距离更近、不匹配的距离更远。这样,CLIP 学到的文本编码器天然携带了”文字到视觉概念”的映射能力。

SD 1.x 使用的是 CLIP 的文本编码器部分(ViT-L/14),它将输入提示词分词后编码为 77 个 token 的 embedding 序列,每个 token 对应一个 768 维向量。这 77 个向量序列就是 UNet cross-attention 的条件输入。

什么是 token 和 embedding? Token 是文本分词后的最小单元,比如 “a cat” 会被分成 “a” 和 “cat” 两个 token。Embedding(嵌入向量)是把每个 token 映射到一个高维向量(如 768 维),使得语义相近的词在向量空间中距离也近。CLIP 的优势在于它的 embedding 空间同时编码了语言和视觉,因此文字向量可以”指挥”图像生成。

什么是 ViT-L/14? ViT(Vision Transformer)是一种把图像当成”序列”来处理的 Transformer 模型。L/14 表示 Large 规模、图像被切成 14x14 的 patch。SD 使用的 ViT-L/14 文本编码器约 123M 参数。

为什么是 77?CLIP 文本编码器的最大序列长度设为 77 个 token。超出部分被截断,不足部分用 padding 补齐。如果你想了解更多文本编码的原理,可参考 Transformer 架构。

SDXL 的改进:SDXL 同时使用两个文本编码器——CLIP ViT-L/14(768 维)和 OpenCLIP ViT-bigG(1280 维),拼接后得到 2048 维的文本特征,大幅增强了对复杂提示词的理解能力。

组件二:VAE 编码器与解码器

VAE(Variational Autoencoder,变分自编码器)由编码器和解码器两部分组成。它不是普通的自动编码器(Autoencoder)——后者只要求”编码再解码后还原原图”,而 VAE 额外要求潜变量服从一个已知分布(标准正态分布),这样我们就能从该分布中随机采样、生成全新的图像。

  • 编码器:接收 H 乘 W 乘 3 的 RGB 图像,输出空间分辨率为 H/8 乘 W/8 乘 4 的潜变量 z。下采样因子为 8,即 512 乘 512 变成 64 乘 64,通道从 3 变成 4。编码器由多个卷积残差块和下采样层交替堆叠而成。更多 VAE 原理参考 VAE。
  • 解码器:接收去噪后的潜变量 z,还原为 H 乘 W 乘 3 的 RGB 图像。解码器结构与编码器对称,用转置卷积(或上采样+卷积)逐步恢复空间分辨率。

VAE 的训练目标是 ELBO(Evidence Lower Bound,证据下界),包含重建损失(还原图像)和 KL 散度(约束潜变量分布接近正态)两部分。在 SD 训练前,VAE 已单独训练好并冻结——扩散过程完全在它定义的潜空间中进行,VAE 参数不再更新。

VAE 的信息损失问题:8 倍压缩意味着每个空间位置的信息被压缩到 4 个数值(SD1.x)或 16 个数值(SD3)。极端高频细节(如细小文字、指纹、棋盘格)可能无法在如此压缩的表示中保留,这是 VAE 解码后手部手指和小文字容易失真的根本原因。

组件三:UNet 去噪网络

UNet 是 SD 的核心引擎,负责在潜空间中迭代去噪。它因架构形状像字母 U 而得名:输入图像经过逐级下采样(压缩空间分辨率、增加通道数)到达”底部”,再逐级上采样恢复分辨率,同时用跳跃连接(skip connection)把编码阶段的特征直接传给解码阶段,保留细节信息。关于 UNet 的详细结构可参考 UNet 架构。在 SD 中,它的输入和输出维度相同:

  • 输入:噪声潜变量 z_t(64 乘 64 乘 4)
  • 时间步 embedding:当前去噪步骤 t 的位置编码,注入到每个残差块中,告诉网络”现在噪声还剩多少”
  • 文本条件:通过 cross-attention 注入(见下一小节)
  • 输出:预测的噪声(或等价地,预测去噪后的潜变量),维度与输入相同

什么是时间步嵌入(Timestep Embedding)? 扩散模型在不同时间步 t 需要去除不同量的噪声,网络必须知道”现在处于第几步”。时间步 t 是一个整数,直接输入无法被网络有效利用。SD 用正弦位置编码(Sinusoidal Positional Encoding)将 t 转化为连续向量,再经过 MLP(多层感知机)注入到 UNet 的每个残差块中。这样同一个网络就能处理所有时间步的去噪任务。

什么是归一化(Normalization)? 归一化是训练深度网络的关键技术,目的是让每层输出的数值分布在合理范围内,避免梯度爆炸或消失。SD 的 UNet 使用 Group Norm(组归一化),将通道分组后分别归一化,适合卷积网络。SD3 的 Transformer 则使用 Layer Norm 或 QK-Norm(对注意力的 Q 和 K 做归一化),以稳定大规模训练。

SD 1.5 的 UNet 约 860M 参数,SDXL 约 2.6B 参数。UNet 的结构可概括为:

  1. 输入卷积:将 4 通道潜变量映射到 320 通道特征图。
  2. 下采样阶段(Encoder):4 个分辨率层级(64→32→16→8),每个层级由 ResNet 残差块 + cross-attention 块 + 下采样层组成。通道数逐级翻倍:320→640→1280→1280。
  3. 中间层(Mid Block):处于 UNet 的”U 型底部”,分辨率最低(8x8),由 ResNet + Self-Attention + Cross-Attention + ResNet 组成。
  4. 上采样阶段(Decoder):与编码器对称,逐级上采样(8→16→32→64)。每层接收同分辨率编码器的跳跃连接特征(拼接后卷积),通道数逐级减半。
  5. 输出卷积:将特征图映射回 4 通道,输出预测的噪声或速度场。

去噪过程从纯噪声开始,重复 T 步(通常 20 到 50 步),每一步 UNet 预测当前潜变量中的噪声成分,然后从 z_t 中减去一部分噪声,逐步逼近干净图像的潜变量 z_0。

前向加噪的数学描述(纯文本):

xt=αˉt⋅x0+1−αˉt⋅noisex_t = \sqrt{\bar{\alpha}_t} \cdot x_0 + \sqrt{1 - \bar{\alpha}_t} \cdot \text{noise}

其中 alpha_bar_t 是累积噪声调度系数(noise schedule),noise 是标准高斯噪声,x_0 是干净图像的潜变量。t 越大,alpha_bar_t 越小,噪声占比越高。当 t 趋近最大值 T 时,x_t 几乎是纯噪声。

噪声调度(Noise Schedule)是什么? 噪声调度是一个预设的函数,定义了每个时间步 t 添加噪声的比例。SD 1.x 使用线性调度(linear schedule),alpha_bar_t 从 1 线性递减到接近 0。后来的研究发现 cosine 调度在后期步数中添加噪声更平缓,对细节生成更友好。SDXL 采用了改进的调度策略。

反向去噪的训练目标极为简洁:给 UNet 输入加噪后的 x_t 和时间步 t,让它预测加入的 noise ε,损失函数就是预测噪声和真实噪声之间的 MSE(均方误差):

Loss=MSE(ϵpred,ϵtrue)=∥ϵθ(xt,t,ctext)−ϵ∥2\text{Loss} = \text{MSE}(\epsilon_{\text{pred}}, \epsilon_{\text{true}}) = \|\epsilon_\theta(x_t, t, c_{\text{text}}) - \epsilon\|^2

其中 c_text 是 CLIP 编码的文本条件。推理时,则用采样器(sampler)根据预测的噪声逐步回溯,详见 采样器。

组件四:CLIP 文本 embedding 通过 cross-attention 注入

文字如何”指挥”图像?答案是 cross-attention。在 UNet 的每个分辨率层级中,穿插着 Transformer 块,其核心是交叉注意力层(参考 注意力机制):

  • **Q(Query)**来自图像(UNet 中间特征):雕刻师”问”自己当前地图上有什么。
  • **K(Key)和 V(Value)**来自文本 embedding:翻译科提供的文字”标签”和”内容”。
  • 注意力分数 = softmax(Q 乘以 K 的转置 / sqrt(d)),其中 d 是 Q/K 的维度,除以 sqrt(d) 是为了控制点积结果的数值范围,避免 softmax 后梯度过小(梯度消失)。
  • 最终输出 = 注意力分数乘以 V,把文字信息融合到图像特征中。

为什么除以 sqrt(d)? 当维度 d 较大时,Q 和 K 的点积结果的数值也会成比例增大,导致 softmax 函数进入饱和区(梯度接近零)。除以 sqrt(d) 将点积的方差控制在 1 附近,使训练更稳定。这是 Transformer 中的标准技巧。

简言之,Q 来自图像,K 和 V 来自文字,文字通过注意力权重调制图像的生成方向。这就是条件注入的核心机制。每个 cross-attention 层有多个注意力头(attention heads,SD 1.5 中通常 8 个),不同头可以关注文本的不同方面(如一个头关注颜色、另一个头关注物体类型)。

把四个组件串起来,完整的文生图流程为:

  1. CLIP 文本编码器把提示词编码为 77 个 token 的 embedding 序列。
  2. 采样器生成一个 64 乘 64 乘 4 的纯噪声潜变量 z_T。
  3. 从 t=T 到 t=0 迭代:UNet 接收 z_t、时间步 embedding 和文本 embedding(经 cross-attention),预测噪声,采样器据此更新 z_t 为 z_(t-1)。
  4. 迭代结束后得到去噪潜变量 z_0。
  5. VAE 解码器把 z_0 解码为最终的 RGB 图像。

Classifier-Free Guidance(无分类器引导)

Section titled “Classifier-Free Guidance(无分类器引导)”

什么是 CFG? Classifier-Free Guidance(无分类器引导)是推理时提升生成质量的常用技术。具体做法是:每一步去噪时,UNet 同时做两次前向传播——一次带文本条件(条件预测 ε_c),一次不带条件(即用空文本,无条件预测 ε_u)。最终去噪方向取两者的外推:

ϵguided=ϵu+guidance_scale⋅(ϵc−ϵu)\epsilon_{\text{guided}} = \epsilon_u + \text{guidance\_scale} \cdot (\epsilon_c - \epsilon_u)

guidance_scale(也称 CFG scale)一般设为 5 到 9。值越高,生成图像越贴合文本,但过高会导致颜色过饱和和伪影。这是一种推理时的”放大”策略,不改变模型本身。详见 CFG 引导。

下面用 Mermaid 流程图展示 SD 的整体架构和数据流。

图一:整体管线

图二:cross-attention 条件注入

图三:像素空间扩散 vs 潜空间扩散

新一代架构:从 SD3 到 FLUX(2024-2025)

Section titled “新一代架构:从 SD3 到 FLUX(2024-2025)”

经典 SD 架构(UNet + DDPM 噪声预测 + cross-attention)在 2022-2023 年主导了文生图领域。但从 2024 年起,架构发生了根本性变革。Stable Diffusion 3 系列(2024 年 6 月发布 Medium,10 月发布 3.5 Large / Large Turbo / Medium)和 Black Forest Labs 的 FLUX.1 系列都采用了全新的技术路线。

变革一:Rectified Flow(流匹配)取代 DDPM

Section titled “变革一:Rectified Flow(流匹配)取代 DDPM”

经典 DDPM 的扩散路径是弯曲的——从噪声到数据的概率路径不是直线,因此需要很多步迭代(20-50 步)才能较好地还原图像。

什么是 Flow Matching(流匹配)/ Rectified Flow(整流流)? 这是一种比传统扩散更通用的生成框架。核心思想是:定义一条从噪声分布到数据分布的连续路径(用常微分方程 ODE 描述),然后训练网络来预测这条路径上每一点的”速度”(velocity)。Rectified Flow 的关键改进是让这条路径尽可能接近”直”线——两点之间直线最短,直线路径意味着用更少的步数就能从噪声走到数据。数学上,路径定义为:

xt=(1−t)⋅noise+t⋅data,t∈[0,1]x_t = (1 - t) \cdot \text{noise} + t \cdot \text{data}, \quad t \in [0, 1]

网络预测的速度为 v = data - noise。相比 DDPM 预测噪声 ε,流匹配预测速度 v,路径更直,采样更高效。

SD3 论文(Essighier et al., 2024)通过实验表明,Rectified Flow 在图像生成质量上优于传统 DDPM,且支持更少的采样步数。SD3.5 Large Turbo 利用这一特性,仅需 4 步就能生成高质量图像。

SD3 不再使用 UNet,而是采用 MMDiT(Multimodal Diffusion Transformer,多模态扩散 Transformer)架构。

为什么用 Transformer 替代 UNet? UNet 基于卷积操作,擅长捕捉局部空间特征,但全局推理能力有限。Transformer 通过自注意力机制(Self-Attention)可以直接建模任意两个位置之间的关系,全局视野更强。此外,Transformer 架构已被证明具有更好的缩放性(scaling properties)——模型越大、数据越多,性能持续提升,而 UNet 在缩放到数十亿参数时容易遇到瓶颈。

MMDiT 的核心设计:

  • 文本和图像 token 共享同一个 Transformer 块,但有各自独立的线性投影层(Linear)和 Layer Norm。
  • 在每个 MMDiT 块中,文本 token 和图像 token 分别做自注意力(self-attention),然后在联合注意力(joint attention)层中把两种 token 拼接在一起做注意力交互。这取代了经典 SD 中的 cross-attention——不再是 Q 来自图像、K/V 来自文字的分离式设计,而是把文字和图像 token 放在同一个序列里让它们自由交互。
  • 堆叠多个 MMDiT 块(SD3 Large 有 38 层,约 8B 参数),完成深层的多模态融合。
  • QK-Norm(Query-Key Normalization):SD3.5 特别引入了对注意力 Q 和 K 的 RMSNorm 归一化,防止大规模训练时注意力分数爆炸(logit 增长问题),显著提升了训练稳定性。这使得用户可以更容易地微调模型(LoRA 等)而不会破坏训练。

变革三:三文本编码器 + 16 通道 VAE

Section titled “变革三:三文本编码器 + 16 通道 VAE”

SD3 升级了条件输入管线:

  • 三个文本编码器并行工作:CLIP ViT-L/14(768 维)、OpenCLIP ViT-bigG(1280 维)、T5-XXL(4096 维)。前两个是 CLIP 系编码器,T5-XXL 是纯语言模型(Google 的 T5 编码器),能处理极长的文本输入,对复杂提示词和文字渲染(text rendering,即在生成图像中正确书写文字)至关重要。SD3 Medium 可以选择性使用 T5 以节省显存。
  • VAE 升级到 16 通道:潜变量从 SD1.x 的 4 通道增加到 16 通道(64x64x16),信息容量翻 4 倍。配合新的正交化压缩策略,大幅提升了高频细节的保留能力,减少 VAE 解码导致的伪影。

为什么 T5 对文字渲染重要? CLIP 的文本编码器主要在”短语级”理解图像描述,对精确的文字拼写信息编码不足。T5-XXL 作为大规模语言模型,对字符序列有更精细的理解能力,因此 SD3 在生成包含英文文字的图像(如招牌、标志牌)时远超 SD1.x。

变革四:FLUX.1 的混合架构(2024-2025)

Section titled “变革四:FLUX.1 的混合架构(2024-2025)”

Black Forest Labs(由原 SD 团队核心成员创立)发布的 FLUX.1 系列进一步推进了 Transformer 扩散模型的边界:

  • 12B 参数混合架构:结合了多模态 Transformer 块(MMDiT,处理文图联合注意力)和并行 Transformer 块(Parallel Attention,将注意力和 FFN 并行计算以提高硬件利用率)。
  • Rotary Positional Embedding(RoPE,旋转位置编码):替代传统的绝对/相对位置编码,用旋转矩阵编码位置信息,对多分辨率、多长宽比的图像生成有天然优势。
  • Flow Matching 训练:与 SD3 类似采用 Rectified Flow,但 FLUX 在缩放规模上更进了一步。
  • 三个变体:FLUX.1 [pro](旗舰闭源模型)、FLUX.1 [dev](开源非商用,蒸馏自 pro 版)、FLUX.1 [schnell](Apache 2.0 许可,仅需 1-4 步快速生成)。
  • 基准表现:在视觉质量、提示词遵循、尺寸/长宽比灵活性、文字渲染和输出多样性五个维度上超越了 Midjourney v6.0、DALL·E 3 和 SD3。
  • 2025 年进展:FLUX 系列 Kunsthalle 开源了 FLUX.1 [dev] 的 fp8 精度版本和更高效的蒸馏变体,社区微调生态(LoRA、ControlNet 适配)迅速成熟。FLUX.1 Kontour(轮廓控制生成)和 FLUX.1 Redux(图像变体/混合)等衍生模型也相继发布。

什么是蒸馏(Distillation)? 蒸馏是一种模型压缩技术:用一个已经训练好的大模型(教师模型)指导训练一个小模型或快速模型(学生模型),使小模型在更少的步数内达到接近大模型的质量。FLUX.1 [schnell] 和 SD3.5 Large Turbo 都是通过蒸馏实现了 4 步快速生成。

以下代码使用 Hugging Face diffusers 库加载 SD v1.5 并生成图像,展示完整的文生图流程:

from diffusers import StableDiffusionPipeline
import torch
# 加载 Stable Diffusion v1.5,半精度节省显存
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
torch_dtype=torch.float16,
).to("cuda")
prompt = "a photo of an astronaut riding a horse on mars"
negative = "blurry, low quality, distorted"
# 30 步采样,CFG 引导强度 7.5
image = pipe(
prompt,
negative_prompt=negative,
num_inference_steps=30,
guidance_scale=7.5,
).images[0]
image.save("output.png") # → 保存 512x512 RGB 图像

如果你想更细粒度地拆解组件,可以分别调用 pipe.vae、pipe.unet、pipe.text_encoder,手动控制每个阶段。更多引导策略参考 CFG 引导。

以下代码展示如何使用 SD3.5 Medium(基于 MMDiT + Rectified Flow 的新一代架构):

from diffusers import StableDiffusion3Pipeline
import torch
# 加载 Stable Diffusion 3.5 Medium(2.5B 参数,消费级 GPU 可运行)
pipe = StableDiffusion3Pipeline.from_pretrained(
"stabilityai/stable-diffusion-3.5-medium",
torch_dtype=torch.float16,
).to("cuda")
prompt = "a futuristic city at sunset, cyberpunk style, highly detailed"
# SD3 使用 Rectified Flow,更少步数即可获得良好效果
image = pipe(
prompt,
num_inference_steps=22,
guidance_scale=4.5, # SD3 推荐 CFG 值比 SD1.x 更低
).images[0]
image.save("sd35_output.png")

以下代码展示如何使用 FLUX.1 [schnell](4 步极速生成):

from diffusers import FluxPipeline
import torch
# FLUX.1 [schnell] — Apache 2.0 许可,4 步即可生成
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
torch_dtype=torch.bfloat16,
).to("cuda")
image = pipe(
"a majestic mountain landscape at golden hour, ultra realistic",
num_inference_steps=4, # 仅需 4 步!
guidance_scale=0.0, # schnell 版已蒸馏,不需要 CFG
).images[0]
image.save("flux_output.png") # → 高质量 1024x1024 图像
  • 潜空间分辨率固定:SD 1.x 的 VAE 下采样因子为 8,512 乘 512 的原生分辨率对应 64 乘 64 潜空间。生成 1024 乘 1024 需要改用 SDXL 或配合 上采样。SD3.5 和 FLUX 支持 0.25 到 2.0 百万像素的多分辨率生成。
  • 77 token 限制:CLIP 文本编码器最多处理 77 个 token。超长提示词需拼接或截断;SDXL 使用双编码器(两个 CLIP)来缓解此问题;SD3 加入 T5-XXL 编码器(最大 256 token),大幅提升长提示词理解。
  • 采样步数与质量的平衡:经典 SD 通常 20 到 30 步即可获得良好效果,更多步数收益递减。SD3 / FLUX 得益于 Rectified Flow 的直线路径,所需步数更少(FLUX schnell 仅需 4 步)。不同 采样器 在步数需求上有差异。
  • CFG 引导强度:经典 SD 的 guidance_scale 一般设为 5 到 9;SD3 推荐 4 到 5(因为 Rectified Flow 的概率路径更直,不需要强力引导)。值太低图像模糊,太高则过饱和、出现伪影。详见 CFG 引导。
  • VAE 解码的瑕疵:极端细节(如细小文字、手部手指)在 VAE 解码时容易失真,这是潜空间压缩的信息损失所致。SD3 的 16 通道 VAE 在此方面有显著改善。
  • 精度选择:推理用 float16 或 bfloat16 即可;FLUX 推荐使用 bfloat16(在数值稳定性上优于 float16)。训练或精调建议 float32 以保证稳定性。
  • 内存优化:使用 attention slicing、xformers / sdpa、CPU offload 可显著降低显存占用。SD3.5 Medium 仅需约 9.9 GB VRAM(不含文本编码器),兼容主流消费级 GPU。
  • 模型选择建议(2025):追求最高质量选 FLUX.1 [dev/pro] 或 SD3.5 Large;追求速度选 FLUX.1 [schnell] 或 SD3.5 Large Turbo;在有限 GPU 上实验选 SD 1.5 或 SD3.5 Medium;需要丰富的 LoRA / ControlNet 生态选 SD 1.5 或 SDXL(社区生态最成熟)。
  • Stable Diffusion 1.x / 2.x(Stability AI):开源文生图的代表,基于 Latent Diffusion 架构(UNet + DDPM),社区生态最成熟。
  • Stable Diffusion XL(Stability AI, 2023):双文本编码器 + 更大 UNet(2.6B),原生 1024 分辨率生成。
  • Stable Diffusion 3 / 3.5(Stability AI, 2024):MMDiT Transformer + Rectified Flow + 三文本编码器 + 16 通道 VAE。SD3.5 Large(8.1B)在 1 百万像素分辨率下质量领先;Large Turbo 实现 4 步生成;Medium(2.5B)面向消费级硬件。
  • FLUX.1(Black Forest Labs, 2024-2025):12B 参数混合 Transformer 架构 + Flow Matching + RoPE,在多项基准上超越 Midjourney v6 和 DALL·E 3。已成为 2025 年开源文生图的新标杆。
  • Midjourney(v6/v7, 2024-2025):商业文生图平台,以高质量艺术风格著称。v7(2025 年发布)进一步提升了真实感和文字渲染能力。
  • DALL·E 3(OpenAI):集成于 ChatGPT 的文生图模型,以精准的提示词理解和文字渲染著称。
  • ControlNet 生态:在 SD 基础上叠加空间控制条件(边缘、深度、姿态),2025 年已扩展到 SDXL 和 FLUX 平台,见 ControlNet。
  • ComfyUI:基于节点图的 SD / FLUX 工作流编辑器,允许自由组合 VAE、UNet/Transformer、CLIP/T5 等组件,已成为 2025 年专业 AI 绘图的核心工具,见 ComfyUI 工作流。
  • Adobe Firefly:Adobe 的商业生成式 AI,其图像生成管线也采用了潜空间扩散,以版权安全训练数据为卖点。
  • LoRA / DreamBooth 微调:在 SD 的 UNet / Transformer 的注意力层上做轻量微调(仅训练少量参数),快速适配特定风格或角色。2025 年 FLUX 的 LoRA 生态也已快速发展,见 LoRA 训练。
类库语言说明
diffusersPythonHugging Face 出品,支持 SD1.x/2.x/SDXL/SD3/SD3.5/FLUX 全系列,最主流的推理与训练库
ComfyUIPython节点式工作流引擎,灵活组合各模型组件,支持 SD 和 FLUX 全系列
AUTOMATIC1111Python功能丰富的 SD WebUI,社区扩展生态庞大(主要支持 SD1.x/SDXL)
InvokeAIPython注重工作流和画布交互的 SD/FLUX 前端
Forge / reForgePythonA1111 的高性能分支,优化了 SDXL/SD3 的显存管理和推理速度
stable-diffusion.cppC++无需 Python 环境的轻量推理实现,支持量化部署
ONNX Runtime / TensorRT多语言将模型导出为 ONNX 或 TensorRT 格式实现跨平台 / GPU 加速部署
FLUX.cppC++FLUX 模型的 C++ 推理实现,面向边缘部署
术语英文解释
潜空间扩散Latent Diffusion在 VAE 压缩后的低维潜空间中执行扩散过程,大幅降低计算量
潜变量Latent VariableVAE 编码器输出的压缩表示,SD 1.x 中为 64x64x4,SD3 中为 64x64x16
下采样因子Downsampling FactorVAE 编码器的空间压缩比例,SD 中为 8
文本编码器Text Encoder将提示词编码为向量序列的模型,SD1.x 使用 CLIP ViT-L/14,SD3 使用 CLIP-L + CLIP-G + T5-XXL
交叉注意力Cross-AttentionQ 来自一方、K 和 V 来自另一方的注意力机制,经典 SD 中用于注入文本条件
联合注意力Joint AttentionSD3 MMDiT 中的机制:文本和图像 token 拼接在同一序列中做注意力交互,取代 cross-attention
时间步嵌入Timestep Embedding将当前去噪步数编码为向量注入 UNet/Transformer 的残差块
噪声调度Noise Schedule控制每步添加或去除噪声量的函数,如 linear、cosine
流匹配 / 整流流Flow Matching / Rectified FlowSD3/FLUX 采用的生成框架,训练网络预测从噪声到数据路径上的速度向量,路径更直、步数更少
多模态扩散 TransformerMMDiTSD3 的核心架构,用 Transformer 替代 UNet,文本和图像 token 在共享块中联合处理
旋转位置编码RoPE (Rotary Position Embedding)FLUX 采用的位置编码方式,用旋转矩阵编码相对位置,适合多分辨率生成
无分类器引导Classifier-Free Guidance推理时同时预测有条件和无条件噪声,插值放大条件方向
去噪步数Sampling Steps从纯噪声到干净潜变量的迭代次数,SD1.x 通常 20-50 步,FLUX schnell 仅需 4 步
蒸馏Distillation用大模型指导训练小/快模型的技术,用于实现少步数快速生成(如 SD3.5 Turbo、FLUX schnell)
QK 归一化QK-Norm (Query-Key Normalization)对注意力 Q/K 做 RMSNorm,防止大规模训练时注意力 logit 爆炸,SD3.5 的关键稳定性技术
  • Rombach, Blattmann, Lorenz, Esser, Ommer — High-Resolution Image Synthesis with Latent Diffusion Models(CVPR 2022)— Latent Diffusion 的奠基论文,提出在潜空间做扩散的核心思想,是 SD 的直接来源。
  • Ho, Jain, Abbeel — Denoising Diffusion Probabilistic Models(NeurIPS 2020)— DDPM 论文,奠定了扩散模型反向去噪的训练范式。
  • Radford et al. — Learning Transferable Visual Models From Natural Language Supervision(ICML 2021)— CLIP 论文,SD 文本编码器的来源,图文对比学习的里程碑。
  • Rombach, Blattmann et al. — Stable Diffusion(Stability AI, 2022)— 基于 Latent Diffusion 的大规模开源文生图模型发布,推动 AI 绘画走向大众。
  • Podell, English et al. — SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis(2023)— SDXL 论文,引入双文本编码器与更大 UNet 的改进架构。
  • Essghier et al. — Stable Diffusion 3(Stability AI, 2024)— SD3 论文,引入 Rectified Flow + MMDiT 架构,详细分析了流匹配相比 DDPM 的优势。
  • Liu, Gong et al. — Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow(ICLR 2023)— Rectified Flow 的理论奠基论文,提出”拉直”概率路径以加速采样的核心思想。
  • Peebles, Xie — Scalable Diffusion Models with Transformers(DiT, ICCV 2023)— DiT 论文,首次系统验证了用 Transformer 替代 UNet 做扩散模型的缩放性,是 MMDiT 的前身。
  • Saharia et al. — Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding(NeurIPS 2022)— Google Imagen 论文,对比了不同文本编码器对生成质量的影响。
  • Black Forest Labs — FLUX.1: Text-to-Image Generation with Flow Matching(2024)— FLUX.1 技术博客与模型发布,12B 参数混合 Transformer 架构的新标杆。详见 官方公告。
  • Stability AI — Introducing Stable Diffusion 3.5(2024)— SD3.5 Large / Large Turbo / Medium 的发布公告,包含 QK-Norm、MMDiT-X 等架构改进说明。详见 官方公告。