
1. 先搞懂扩散模型在解决什么问题1.1 生成模型的本质从噪声分布到数据分布的映射扩散模型这几年几乎成了生成式AI的代名词从文生图到视频生成从语音合成到蛋白质结构预测到处都能看到它的身影。但很多刚接触这个领域的人都会被DDPM、DDIM、SDE、LDM这一堆缩写搞懵。我先说个最朴素的理解扩散模型本质上是在做一件事——学习把一堆纯噪声变成一张有意义的图片或者一段音频、一个分子结构。整个过程可以分为两个阶段前向过程慢慢往数据里加噪声直到数据完全变成噪声反向过程则学习如何一步步去噪把噪声还原成数据。这个思路乍一听有点绕为什么要先破坏数据再学会恢复你可以这样类比把一个完整的乐高城堡打散成一小块一小块的零件然后训练一个机器人学习拼装规则等它学会了再给它一堆随机散落的零件它就能拼出全新的城堡。扩散模型就是这个打散—重组的过程只不过它打散的方式是逐步注入高斯噪声重组的过程则是靠神经网络一步步预测并去除噪声。从数学角度看生成模型的目标是拟合数据分布 p(x)然后从中采样。GAN用对抗训练逼近这个分布VAE用变分下界逼近而扩散模型的路径是定义一个由 T 步构成的马尔可夫链前向逐步加噪反向逐步去噪最后用最大似然或类似目标训练反向过程。它的优势在于训练稳定性远好于GAN——不需要判别器和生成器的对抗博弈也不容易出现模式崩溃生成质量又普遍高于VAE——不依赖过于简化的先验假设。1.2 为什么扩散模型能打败GAN和VAE我自己在项目里对比过几种生成模型的训练体验。GAN的训练就像两个人互相试探底线判别器和生成器的能力必须动态平衡稍微失衡就会导致训练崩溃或者生成样本单一VAE虽然训练稳定但它强迫隐变量服从标准高斯分布这个约束太强导致生成的图片往往偏模糊。扩散模型不一样它的训练目标就是一个简单的回归问题——预测噪声或者预测 x0本质上是让神经网络拟合一个确定性或者拟确定性的映射训练曲线非常平滑。还有一个关键点是扩散模型的公式推导几乎是无限细节的每一步都有明确的理论支撑前向过程有闭式解反向过程有变分下界的推导这让研究者可以不断在上面加新模块而不像GAN那样改一个损失函数就要重新调试半天。这也是为什么后面能衍生出DDIM、SDE、LDM、Rectified Flow这一大堆变体。理解了这一点再看后面的内容会轻松很多。2. DDPM前向加噪与反向去噪的完整闭环2.1 前向过程的数学设定DDPMDenoising Diffusion Probabilistic Models是扩散模型最经典的框架由Ho等人在2020年提出。它的前向过程定义是给定一张干净图片 x0每一步按预设的方差表 βt 给图片叠加高斯噪声公式是q(x_t | x_{t-1}) N(x_t; sqrt(1 - β_t) * x_{t-1}, β_t * I)这个式子看着简单但它有一个非常重要的性质因为每一步都是高斯分布而且噪声是独立同分布的所以我们可以直接算出从 x0 到任意第 t 步 x_t 的闭式表达式不需要一步步迭代x_t sqrt(ᾱ_t) * x0 sqrt(1 - ᾱ_t) * ε其中 α_t 1 - β_tᾱ_t ∏_{s1}^{t} α_sε 是标准高斯噪声。这个性质极其关键意味着在训练的时候我们不需要模拟完整的前向过程只需要随机采样一个时间步 t生成一个高斯噪声 ε然后直接构造出 x_t 作为训练样本。用公式表示x_t sqrt(ᾱ_t) * x0 sqrt(1 - ᾱ_t) * ε, ε ~ N(0, I)这里有个细节值得注意β_t 的取值策略。原文用的是线性计划linear schedule从 β_1 0.0001 线性增长到 β_T 0.02T 通常取 1000这样做的目的是让前向加噪前期小步慢走、后期大步快走保证每个时间步的信息损失均匀。后来很多工作发现线性计划在图像分辨率较高时并不最优于是出现了cosine schedule、sigmoid schedule 等替代方案。我在实际测试中用 cosine schedule 训练出来的模型在中间时间步的生成质量确实更好一些原因在于线性计划在中间阶段加噪速度快、信息丢失突然导致网络难以学好中间时间步的去噪。2.2 反向过程与训练目标的推导直觉前向过程是把数据变成噪声反向过程就是学一个神经网络去预测每一步加的噪声然后一步步减掉它。反向过程同样被建模为高斯分布p_θ(x_{t-1} | x_t) N(x_{t-1}; μ_θ(x_t, t), Σ_θ(x_t, t))训练目标是最大化对数似然的变分下界ELBO。但 Ho 等人的核心贡献在于简化如果把 Σ_θ 固定为常数μ_θ 的预测等价于预测噪声 ε_θ(x_t, t)那么损失函数可以简化成L_simple E_{t, x0, ε} [ || ε - ε_θ(sqrt(ᾱ_t) * x0 sqrt(1 - ᾱ_t) * ε, t) ||² ]也就是说训练网络去预测我们注入的噪声 ε。这个损失函数看起来极其简洁但它背后的推导做了不少假设首先把 KL 散度分解成两个高斯分布之间的 KL然后利用重参数化技巧把 μ_θ 改写成关于 ε_θ 的形式最后丢掉权重项得到均匀加权的简单损失。为什么丢掉权重项还能work原因在于变分下界里每个时间步的权重本身是信噪比相关的函数而简化损失等价于给每个时间步一个恒定的权重这在实践上反而让训练更稳定、生成的FID更好。这种理论推导和实际调优之间的微妙权衡在扩散模型里反复出现后面DDIM、Rectified Flow也都沿用了类似的简化思路。2.3 训练与采样的实际考量DDPM的训练代码其实非常简单核心循环就几十行。用PyTorch伪码来表示for x0, _ in dataloader: x0 x0.to(device) t torch.randint(0, T, (x0.shape[0],), devicedevice) eps torch.randn_like(x0) x_t sqrt_alpha_bar[t] * x0 sqrt_one_minus_alpha_bar[t] * eps pred_eps model(x_t, t) loss F.mse_loss(pred_eps, eps) optimizer.zero_grad() loss.backward() optimizer.step()就这么简单。但真正采样的时候你会发现一个很现实的问题DDPM原始采样需要从 tT 一路跑到 t1总共 1000 步。每步都要做一次完整的神经网络前向计算生成一张 256x256 的图在普通显卡上可能要等几十秒甚至几分钟。这对于实验迭代来说太慢了所以后续大量研究都聚焦于如何减少采样步数。我在跑DDPM的时候还踩过一个坑β_t 计划需要和网络的时间嵌入方式配合。如果用Transformer式的sinusoidal位置编码来嵌入时间步模型能在不同时间步之间共享参数并平滑插值但如果时间编码方式不当模型会在某些t上出现明显退化生成结果表现为条纹噪声或局部模糊。建议在实现时先把时间编码单独可视化检查一遍确认每个t对应的编码向量是连续变化的再开始长训练。3. DDIM把随机微分变成确定性ODE的操作3.1 DDIM为什么能加速采样DDIMDenoising Diffusion Implicit Models是宋飏等人在2020年底提出的核心目标就一个字——快。它把原本需要1000步的采样压缩到50步甚至20步同时基本不损失生成质量。它的关键洞察在于DDPM的反向过程并不一定是马尔可夫的我们可以构造一类更广义的采样过程使得边际分布 q(x_t | x0) 不变但采样路径更加直接。DDIM的采样公式是x_{t-1} sqrt(ᾱ_{t-1}) * ( (x_t - sqrt(1 - ᾱ_t) * ε_θ(x_t, t)) / sqrt(ᾱ_t) ) sqrt(1 - ᾱ_{t-1} - σ_t²) * ε_θ(x_t, t) σ_t * z这里最核心的转变是第一项先根据预测的噪声 ε_θ 估算出预测的干净图像 x0_pred然后往 x0_pred 方向走一步第二项是沿着噪声方向的确定性分量第三项是可选随机噪声由 σ_t 控制。当 σ_t 全为 0 时整个过程退化为一个确定性映射——给定同一个初始噪声每次生成的图像都完全一样。这个特殊情形就是DDIM本质上是把随机微分方程SDE变成了常微分方程ODE。为什么这样能加速因为DDPM的采样轨迹是一条充满随机性的布朗运动路径信息在来回扰动中丢失得厉害需要足够多的步数才能精确走完而DDIM的轨迹是一条近似直线的确定性路径可以用大步长离散化。你可以理解为DDPM在每个时间步都像喝醉了酒走路步子小还左右摇晃必须走很多步才能到终点DDIM则是清醒地走直线步幅可以迈得很大。3.2 DDIM采样器的实际使用我在实际实验中使用DDIM采样器时发现两个经验第一DDIM的采样步数一般在20到100之间再少比如5步以内会出现明显的细节丢失最近几年的一些极快速采样器如DPM-Solver、DPM-Solver通过高阶ODE求解器把步数压到了10步以内但那是另一套数值方法和DDIM的思路不完全一样。第二DDIM虽然是确定性的但它并不保证生成样本的多样性比DDPM更高。当步数较少时确定性ODE的数值误差会累积导致某些噪声对应的样本收敛到相似的高概率区域多样性反而下降。因此如果你的场景强调样本多样性不适合把DDIM的步数压得过低如果强调可复现性和图像编辑的一致性比如用DDIM做inversion那确定性就是巨大优势。DDIM在图像编辑领域还有一个杀手级应用——DDIM inversion因为整个过程是确定性的我们可以把一张真实图片通过反向ODE倒带回噪声空间得到对应的初始噪声再从这个噪声出发做条件生成实现对原图的语义编辑。这在扩散模型的图像编辑工具链里几乎是标配操作后面提的基于扩散的图像编辑框架大多以DDIM inversion为基石。4. Score-Based模型与SDE两类框架的统一视角4.1 分数匹配的核心思想在DDPM这条线之外还有一条独立发展起来的思路——Score-Based生成模型。它的核心概念是分数score定义为对数概率密度的梯度s(x) ∇_x log p(x)。这个量有意思的地方在于它不依赖于概率密度的归一化常数——你不需要知道 p(x) 的具体值只需要能算出它的梯度方向就行。为什么要用分数因为在真实世界中高维数据的分布极其复杂我们很难显式建模 p(x)但可以用神经网络 s_θ(x) 去拟合分数函数。训练方法叫分数匹配score matching它的核心思想可以用一个很简洁的损失函数表达E_{p(x)} [ || s_θ(x) - ∇_x log p(x) ||² ]但这个损失函数实际计算很麻烦因为 ∇_x log p(x) 无法直接获取。好在有几种等价的优化方法其中最常用的是Denoising Score MatchingDSM先给数据加一点噪声然后用网络去预测噪声这和DDPM的噪声预测目标惊人地一致。4.2 SDE统一框架宋飏等人同一个作者在2021年的论文《Score-Based Generative Modeling through Stochastic Differential Equations》里做了一个漂亮的统一工作把DDPM和Score-Based两种视角放进同一个SDE框架。前向过程被写成一般化的随机微分方程dx f(x, t)dt g(t)dw其中 f(x, t) 是漂移项g(t) 是扩散系数w 是维纳过程。不同的 f 和 g 对应不同的扩散过程DDPM对应于一个离散化的Variance PreservingVPSDE而Score-Based的噪声加噪策略对应Variance ExplodingVESDE。更关键的是论文证明了一个深刻的结论任何SDE形式的前向过程都存在一个对应的反向SDE只需要知道分数函数 ∇_x log p_t(x)dx [ f(x, t) - g(t)² * ∇_x log p_t(x) ]dt g(t)dw̄这就是为什么Score-Based模型和DDPM可以放在同一个框架里理解——DDPM训练的网络预测的噪声 ε_θ本质上就是在估计某个缩放后的分数函数。这个统一观点带来两个直接好处一是以前分开研究的加速采样、噪声计划设计等问题可以统一分析二是引出下面要讲的概率流ODE。4.3 从SDE到ODE概率流SDE的反向过程带有随机项但宋飏他们发现存在一个确定性的ODE概率流ODEProbability Flow ODE它的边际分布和原SDE完全一致。也就是说你可以用ODE来采样每步都是确定性映射不仅采样速度快还具备可逆性。这个ODE是dx/dt f(x, t) - 0.5 * g(t)² * ∇_x log p_t(x)你会发现DDIM其实是这个概率流ODE的一种特殊离散化Rectified Flow更是直接在这个框架上做文章。所以看似纷繁复杂的各种扩散变体本质上都在回答同一个问题选择什么样的前向破坏过程和反向恢复过程以及如何高效离散化求解。这个统一视角对做研究特别重要理解了它你看新的扩散模型论文就不会觉得是在学一套全新的东西。5. LDM把扩散搬到潜空间省算力5.1 为什么要在潜空间做扩散扩散模型最大的痛点是计算成本太高。在像素空间做前向和反向传播每一步都要处理百万量级的像素点训练一张256x256的图就需要8张以上V100更别提高清视频了。LDMLatent Diffusion Model潜在扩散模型的核心思路是先用一个预训练的自编码器把图像压缩到低维潜空间在潜空间里做扩散最后再用解码器把潜变量还原成图像。为什么这个方案行得通因为自然图像虽然在像素层面是高维的但它本质上生活在低维流形上——一张人脸图虽然有几百万个像素但它的有效自由度可能只有几万甚至几千。自编码器做的就是把这个低维流形结构先压缩出来而扩散模型只需要在这个低维流形上学习分布变化即可。直白地说以前是在人挤人的景区里绕路现在是坐地铁穿过城市路径短了好几倍。LDM的结构分为三部分感知压缩编码器 E 把 x 编码成 z E(x)U-Net在潜空间做扩散去噪解码器 D 把去噪后的 z 还原成图像。训练损失和DDPM几乎一样只不过所有操作都发生在潜空间L_LDM E_{t, z0, ε} [ || ε - ε_θ(z_t, t, c) ||² ]5.2 感知压缩与自编码器的作用LDM里的自编码器不是普通VAE而是经过感知损失和对抗损失训练的KL正则化自编码器。这样做的目的是让潜空间更加感知均匀——也就是潜变量里每个维度的重要性大致相当避免某些维度占用过多信息导致扩散模型学不稳。我试过用普通的L2自编码器替换结果生成的图像明显变糊问题就出在L2损失倾向于平均化细节而感知损失能保留高频纹理。自编码器的压缩比也是个关键超参数。LDM原文支持 f 4、8、16 等不同下采样倍数f H/h W/w。f 越小潜空间保留的信息越多重建质量越高但扩散模型的训练量也越大f 越大扩散训练越省资源但重建瓶颈会卡住最终画质。实际做项目的经验是f 4 适合小尺寸图像如256x256f 8 适合处理512x512以上图像两者之间选型往往要考虑显存容量和目标分辨率。5.3 交叉注意力与条件注入LDM另一个关键设计是条件注入方式。和像素空间UNet直接用拼接concat传条件不同LDM使用交叉注意力cross-attention把文本或图像的嵌入向量作为Key和Value潜空间特征作为QueryAttention(Q, K, V) softmax(QK^T / sqrt(d)) * V这里 Q W_Q * φ(z_t)K W_K * τ_θ(c)V W_V * τ_θ(c)τ_θ 是条件编码器比如CLIP文本编码器φ 是UNet中间特征。这个设计的优势在于交叉注意力的容量大能表达复杂的条件语义关系而且文本token数量和图像特征位置一一对应天然适合左下角放一只猫、右上角放一栋房子这样的空间语义控制。实际训练中LDM还会随机丢弃10%左右的条件输入让模型学会无条件生成。这一招是Classifier-Free Guidance的标配做法我放到下一节详细讲。总之LDM的出现让扩散模型大规模落地成为可能Stable Diffusion就是基于这个框架的。6. 条件生成Classifier Guidance与Classifier-Free Guidance6.1 Classifier Guidance的原理扩散模型本身学到的是数据分布 p(x)但现实中我们往往想要控制它生成特定类别的图像。最朴素的想法是在采样过程中每一步都朝更有可能是目标类别y的方向推一把。数学上用贝叶斯公式∇_x log p(x|y) ∇_x log p(x) ∇_x log p(y|x)右边第一项是无条件分数由扩散模型提供第二项是一个分类器 p(y|x) 的梯度。这就是Classifier Guidance的核心训练一个额外的分类器在采样时用它的梯度引导生成方向。具体采样时修改噪声预测ε_θ(x_t, t) ← ε_θ(x_t, t) - s * σ_t * ∇_x_t log p(y | x_t)这里的 s 是引导强度guidance scales 越大生成结果越符合类别条件但多样性会降低。Classifier Guidance的问题很明显需要额外训练一个噪声鲁棒的分类器还得在采样时对分类器求梯度计算开销大而且分类器必须能处理带噪声的中间状态 x_t实现起来比较麻烦。最关键的是分类器梯度很容易让生成结果走捷径——利用分类器的一些非语义线索来骗过它导致生成图像出现对抗样本式的伪影。6.2 Classifier-Free Guidance的优雅替代Classifier-Free GuidanceCFG无分类器引导由Ho和Salimans在2021年提出它彻底绕开了分类器。思路是训练同一个网络同时支持有条件生成和无条件生成训练时任选条件或空条件用特殊标记如空文本推理时同时算两个分数做差分引导ε_CFG ε_θ(x_t, t, ∅) s * (ε_θ(x_t, t, c) - ε_θ(x_t, t, ∅))这个公式看着简单但它的巧妙之处在于差分项 ε_θ(x_t, t, c) - ε_θ(x_t, t, ∅) 天然表征了条件带来的信息增益相当于隐式地估计了 ∇_x log p(y|x) 的替代品不需要任何额外分类器。为什么CFG效果这么好我个人的理解是它让条件信息通过对比的方式被放大而不是通过叠加的方式被注入。在无条件生成的基线上每个噪声隐含多种可能的图像内容条件差分把那些符合条件的方向拉出来其他方向被压制这样既保留了扩散模型本身的多样性又获得了精准的条件控制。6.3 CFG缩放因子与实用技巧CFG的缩放因子 s 是采样时最重要的超参数。s1 时就是普通条件生成没有额外引导s7 左右在文生图里效果最好Stable Diffusion默认值是7.5s 过大会导致色彩过饱和、纹理异常、多样性骤降s 过小则条件遵循度不足。实际使用中还有几个技巧值得记录第一CFG对步数的敏感性。用DDIM或DPM-Solver这类加速采样器时CFG的差分信号需要足够多的步数才能传导到最终结果。我测过10步以内加CFG经常出现条件不充分或者颜色发灰步数在20以上时会明显好很多。第二不同时间步对CFG强度的容忍度不同。近年一些研究如CFG、细粒度CFG调度发现在采样早期高噪声阶段CFG可以给大一点促进结构形成在采样后期低噪声阶段需要把CFG调小避免细节过饱和。手动做一个简单的线性衰减调度在某些模型上比固定CFG更出效果。第三条件注入的鲁棒性。用空文本做无条件分支时空文本的编码方式会影响整体输出风格。在Stable Diffusion里空字符串的编码是固定的但有些微调模型会对空文本敏感。训练时随机drop条件就是为了让模型不依赖于始终有有效条件输入的假设从而让无条件分支也有合理的分数估计。7. Rectified Flow从扩散到直线传输的演变7.1 最优传输与直线路径Rectified Flow是最近两年特别火的方向它要解决的是扩散模型的另一个根本痛点采样路径太长。前面提到DDIM把1000步压缩到50步左右但这还不够快而且随着步数减少质量衰减仍然明显。Rectified Flow的思路是能不能让噪声到数据的传输路径本身就是一条直线如果可以那一步就能完成生成——直线的长度就是噪声和数据之间的最短距离。这就要说到最优传输Optimal Transport, OT的概念。在最优传输理论里如果已知两个分布想要找一个代价最小的映射把一个分布搬到另一个分布最理想的情况是沿直线搬运。Rectified Flow的做法是训练一个神经网络来拟合从噪声 x0高斯分布到数据 x1真实分布的直线插值路径x_t (1 - t) * x0 t * x1, t ∈ [0, 1]网络学习的目标是预测这条路径上的速度场 v_θ(x_t, t)使得d x_t / dt v_θ(x_t, t)换句话说它学的是一个ODE的速度场给定初始噪声 x0沿着这个速度场积分一步就能得到 x1。这就是为什么Rectified Flow可以只用1到2步采样就能生成不错的结果。7.2 Rectified Flow的训练与重流ReflowRectified Flow的训练目标极其简单就是一个速度回归L E_{t, x0, x1} [ || v_θ((1-t) * x0 t * x1, t) - (x1 - x0) ||² ]这个损失的含义非常直接在直线插值的中间状态 x_t 上预测从 x_t 出发到 x1 的速度。训练好以后采样过程就是一个ODE积分x_1 x_0 ∫_0^1 v_θ(x_t, t) dt但直接用一次训练得到的直线路径通常还不是真正的OT路径。因为训练数据里的 (x0, x1) 配对是随机组合的同一对端点在不同采样中会交叉导致速度场内部存在交叉流线使积分轨迹发生弯曲。Rectified Flow提出了一种叫Reflow重流的技巧先用当前模型把一批噪声积分到数据生成一批 (x0, x1) 配对然后用这些对齐的配对重新训练新模型。经过一次或多次Reflow速度场的流线会逐渐被拉直积分步数可以进一步减少到1步。我在实验中的体会是第一次Reflow收益最大第二次Reflow的改善幅度明显变小再往后边际效应就很低了。而且Reflow需要多次完整采样来生成配对数据计算成本不低实际项目中要衡量收益和成本。7.3 与扩散模型的关系Rectified Flow和前面的扩散模型并不是对立关系而是更广义的框架。扩散模型包括DDPM、SDE视角下的VP/VE扩散可以看作一种特定形式的传输路径——一条弯曲的、逐步加噪的路径而Rectified Flow直接优化传输路径让路径趋近直线。从概率流ODE的视角看扩散模型对应的是复杂的非线性漂移方程Rectified Flow则希望学到一个常速直线漂移方程。两者的训练目标也有深层联系。DDPM的噪声预测 ε_θ 和Rectified Flow的速度预测 v_θ 可以互相转换在特定参数化下v(x_t, t) x1 - x0它和噪声 ε 存在线性关系。换句话说一个训练好的DDPM模型其实隐含了一个速度场只是这个速度场对应的路径是弯曲的导致需要多步积分Rectified Flow通过直线插值和Reflow把同一个思想用更高效的方式实现。在实际工程中Rectified Flow还有一个巨大的吸引力蒸馏和一步生成非常自然。因为它学的是确定性ODE的速度场一步预测就是最终结果不需要像扩散模型那样通过复杂的蒸馏如consistency distillation才能做到一步生成。这正是为什么很多实时生成系统如SDXL-Turbo、Stable Diffusion 3、FLUX都转向了Rectified Flow或者类似的数据流匹配Flow Matching框架。8. 选型对比与实战心得8.1 各方案关键特性对比写到这里我把这几个核心方案放在一张表里做一个横向对比方便你做技术选型时快速定位。方案核心思想采样步数多样性训练成本典型应用场景DDPM马尔可夫加噪/去噪1000步高中研究教学、基线对比DDIM确定性ODE采样20~100步中高中图像编辑、可复现生成Score-Based/SDE分数匹配随机微分方程50~1000步高中高理论分析、连续时间建模LDM潜空间扩散交叉注意力20~50步中高低潜空间文生图/文生视频、大规模部署Classifier Guidance分类器梯度引导1000步低高需额外分类器早期条件生成实验Classifier-Free Guidance条件与无条件分数差分20~100步中高低单一网络文本/类别条件生成工业界标配Rectified Flow直线传输路径Reflow1~50步中中高Reflow需额外计算实时生成、少步数生成、视频生成8.2 我的使用经验和建议最后分享几条基于实际项目的心得希望帮你少走弯路。第一如果你是新手入门建议按DDPM理解原理、按DDIM理解加速、按LDM理解工程、按CFG理解控制、按Rectified Flow理解前沿演进这个顺序是最平滑的。不建议一上来就啃SDE的统一推导那套数学确实很重要但没有具体模型做支撑很容易劝退。第二做图像生成项目时不必从零训练大模型。直接用开源的LDM权重自己只做微调比如LoRA然后花时间调试CFG缩放因子、采样器类型和步数收益往往比换模型架构来得更快。我见过不少团队换了十几种模型结构FID却变化不大最后发现是采样配置没调对。第三关于一步生成的诱惑。Rectified Flow虽然理论上可以一步生成但实际上一步生成在复杂场景下依然会有细节损失。如果你的业务对质量要求很高建议保留4到8步的余量既远快于传统扩散采样又能保住高质量。另外一步生成对速度场的数值范围非常敏感训练时务必做速度的稳态性检查避免出现极端速度值。第四注意条件信息的编码方式对结果影响巨大。用文本条件时文本编码器的选择CLIP还是T5、最大token长度、以及CFG的空文本处理都会显著影响风格和语义对齐度。在实践中我通常先把文本编码器和空文本输出的余弦相似度打印出来做诊断如果异常就说明条件分支或者训练drop策略有问题。第五关于扩散模型的随机种子可复现问题。DDIM和Rectified Flow是确定性的可以在固定噪声种子下做到完全复现但如果你用了CFG哪怕相同的种子也可能因为浮点运算的非确定性在不同GPU上产生微小差异。所以做评测或A/B测试时尽量在同一个硬件环境、同一个推理框架下进行别跨框架对比FID。扩散模型的生态还在快速演进但核心的几条技术脉络不会过时——加噪与去噪的双向过程、数据的概率流传输、条件信息的引导方式、以及计算效率与质量的平衡。把这几个基本功打牢无论以后冒出什么新名词你都能很快把它归位到它该在的位置上。