摘要
本周深入研究了混合专家模型(MoE)的核心原理与Stable Diffusion的图像生成机制。系统分析了MoE架构中稀疏层与门控网络的协同工作机制,详细解析了动态路由策略、负载均衡优化及辅助损失函数设计;全面掌握了Stable Diffusion的完整工作流程,包括CLIP文本编码、U-Net噪声预测、VAE隐空间压缩等关键技术环节。通过理论推导与架构分析,建立了从大模型参数效率优化到生成式模型原理的深度认知框架。
Abstract
This week conducted in-depth research on the core principles of Mixture of Experts (MoE) and the image generation mechanisms of Stable Diffusion. Systematically analyzed the collaborative of sparse layers and gating networks in MoE architecture, detailing dynamic routing strategies, load balancing optimization, and auxiliary loss function design. Comprehensively mastered the complete workflow of Stable Diffusion, including key technical components such as CLIP text encoding, U-Net noise prediction, and VAE latent space compression. Through theoretical derivation and architectural analysis, established a deep cognitive framework from large model parameter efficiency optimization to generative model principles.
1、DeepSeek中的混合专家模型(MoE)技术详解
混合专家模型(Mixture of Experts, MoEs)是一种通过组合多个基于Transformer架构的子模型(专家)和动态路由机制来处理复杂AI任务的AI思想框架,其在1991年第一次被提出,可以说是跨过了漫长周期的经典技术。
在AI领域,我们知道AI模型的规模是提升模型性能的关键因素之一。在有限的计算资源预算下,一般情况用更少的训练步数训练一个更大的模型,往往比用更多的步数训练一个较小的模型效果更佳。
而混合专家模型 (MoE) 的一个显著优势就是它们能够在远少于稠密模型所需的计算资源下进行有效的预训练。这意味着在相同的计算资源下,我们可以显著扩大模型或数据集的规模。特别是在预训练阶段,与稠密模型相比,混合专家模型通常能够更快地达到相同的性能水平。
那么,一个混合专家模型 (MoE)中包含哪些核心模块呢?混合专家模型主要由两个关键部分组成:
- 稀疏MoE层:稀疏MoE层代替了传统Transformer模型中的前馈网络 (FFN) 层。MoE层包含若干"专家"(比如8个),每个专家本身是一个独立的神经网络,专家之间参数不共享,通常结构相同但独立训练。在AIGC实际场景中,这些专家通常是前馈网络 (FFN),但它们也可以是更复杂的网络结构,甚至可以是MoE层本身(MoE的嵌套递归策略),从而形成层级式的MoE结构。
- 门控网络/路由(Gating Network/Routing):这个部分控制tokens的发送机制(分治策略),将复杂AI任务分解为子任务,每个子任务由专门的专家处理(动态路由策略)。例如在下图中,"More"这个token可能被发送到第二个专家(FFN2),而"Parameters"这个token可能被发送到第一个专家(FFN1),有时一个token也可能被发送到多个专家中(FFN1、FNN3、FNN4等)。接着再确定不同专家的权重,最终实现条件计算(Conditional Computation)。Token的动态路由策略是MoE技术中的一个关键点,路由器也是由可学习的参数组成,并且与网络的其他部分一同进行预训练。

我们将传统Transformer模型中的每个前馈网络 (FFN) 层替换为MoE层,即可获得一个混合专家模型 (MoE) ,同时每个MoE层中包含了一个门控网络和若干数量的专家模型。总的来说,MoE技术的核心思想是通过门控网络和稀疏MoE层,将输入数据分配给最相关的专家模型,从而提升AIGC大模型的整体容量和效率。
尽管混合专家模型 (MoE) 具备更高效的预训练和与稠密模型相比更快的推理速度,但它们也伴随着一些挑战:
- 训练阶段的挑战:若路由机制不完善,在微调阶段可能导致专家学习重复特征,面临泛化能力不足的问题,容易引发过拟合现象。
- 推理阶段的挑战:MoE模型虽然包含了大规模参数,但在推理过程中只使用其中的一部分,这使得它们的推理速度快于具有相同数量参数的稠密大模型。然而MoE大模型依然需要将所有参数加载到显存中,因此对显存的需求非常高。我们以Mixtral 8x7B这样的MoE大模型为例,需要足够的VRAM来容纳一个47B参数的稠密模型。之所以是47B而不是8 x 7B = 56B,是因为在MoE模型中,只有FFN层被视为独立的专家,而其他参数在模型中是共享的,所以整体模型不能拆解分别放到不同的GPU卡中。此外,假设每个token只使用两个专家,那么推理速度 (以FLOPs计算) 类似于使用12B模型 (而不是14B模型),因为虽然它进行了 2x7B 的矩阵乘法计算,但某些层是计算结果共享的。
- 可解释性的挑战:动态路由决策复杂,并且每个专家的作用、分配、权重都是学习得到的,在整个AIGC大模型的黑盒系统中,难以追踪专家具体作用。
上述提到的门控网络(Gating Network)主要生成各专家的权重分布,并决定输入分配给各专家的比例。常见的分配形式可以通过Softmax或Top-K选择,比如Softmax门控输出概率分布,所有专家按权重参与计算;稀疏门控(如Top-K)仅激活权重最高的K个专家(如Switch Transformer中K=1),减少计算量,实现了模型容量与计算效率的平衡。下面详细讲解一下门控网络的核心知识。


总的来说,相比稠密模型(全专家激活),稀疏门控网络能够减少计算量约66%。
虽然大量减少了计算量,但同时也引入了一个问题,那就是假设所有的Token都被发送到少数几个受欢迎的专家中,那么整体训练效率将会降低。在混合专家模型 (MoE) 训练中,门控网络往往倾向于激活几个主要专家。这种情况可能会让主要专家得到更多的训练而自我加强,同时在推理时它们更容易被选择。
为了缓解这个问题,MoE框架中引入了辅助损失的概念,鼓励给予所有专家相同的权重。辅助损失保证所有的专家接收到大致相等数量的训练样本,从而平衡了专家之间的选择。

如果我们所使用的专家的容量都达到上限,那么Tokens就会溢出,并通过残差连接传递到下一层,或者完全丢弃。稠密模型和稀疏模型在过拟合的动态表现上存在显著差异。稀疏模型更易于出现过拟合现象,因此在处理这些模型时,尝试更强的内部正则化措施是有益的,比如使用更高比例的 dropout。例如,我们可以为稠密层设定一个较低的 dropout 率,而为稀疏层设置一个更高的 dropout 率(使用高达11%的dropout概率,模型的质量也没有显著受到影响),以此来优化模型性能。
同时研究发现,增加更多专家可以提升处理样本的效率和加速模型的运算速度,但这些优势随着专家数量的增加而递减 (尤其是当专家数量达到 256 或 512 之后更为明显)。当专家数量增加时,也意味着在推理过程中需要更多的显存来加载整个MoE大模型。
在MoE模型的训练过程中,专家和门控网络同步优化(联合训练),通过反向传播更新参数。在此期间为了防止某些专家被过度训练或忽视,我们需要进行负载均衡,常用方法包括:
- 设计辅助损失:鼓励专家利用率均衡(如Switch Transformer中的负载均衡损失)。
- 使用正则化:约束专家权重的熵或方差。
- 设计稀疏梯度:Top-K路由可能导致梯度稀疏,需设计特定优化策略。
总结一下混合专家模型 (MoEs)的特点:
- 稠密模型和稀疏模型该如何选择:与稠密模型相比, 稀疏模型预训练速度更快,推理速度也更快。同时在算力资源一定的情况下,稀疏模型往往能够得到更好的效果。稀疏模型更适用于要求高吞吐量的场景,而在显存较少且吞吐量要求不高的场景,稠密模型则是更合适的选择。
- 需要大量显存,因为混合专家模型中的所有专家网络都需要加载到显存中。
- MoE架构优化:最初的混合专家模型 (MoE) 设计采用了分支结构,这导致了计算效率低下。这种低效主要是因为 GPU 并不是为处理这种结构而设计的,而且由于设备间需要传递数据,网络带宽常常成为性能瓶颈。
- 虽然在诸多方面仍存在挑战(训练、推理、可解释性等),但在DeepSeek系列大模型发布后,混合专家模型技术方向在AIGC时代依旧具备很强的发展势能。
2、Stable Diffusion
本周在复现论文代码的时候接触到了stable diffusion,之前了解的发现还是不够深入,于是打算再好好学习一下。
2.1 理解Stable Diffusion模型工作流程
Stable Diffusion(SD)模型是由Stability AI和LAION等公司共同开发的生成式模型,总共有1B左右的参数量,可以用于文生图,图生图,图像inpainting,ControlNet控制生成,图像超分等丰富的任务。
文生图任务 是指将一段文本输入到SD模型中,经过一定的迭代次数,SD模型输出一张符合输入文本描述的图片。比如下图中输入了"天堂,巨大的,海滩",于是SD模型生成了一个美丽沙滩的图片。

图生图任务 在输入本文的基础上,再输入一张图片,SD模型将根据文本的提示,将输入图片进行重绘以更加符合文本的描述。比如下图中,SD模型将"海盗船"添加在之前生成的那个美丽的沙滩图片上。

那么输入的文本信息如何成为SD模型能够理解的机器数学信息呢?
很简单,我们需要给SD模型一个文本信息与机器数据信息之间互相转换的"桥梁"------CLIP Text Encoder模型。如下图所示,我们使用CLIP Text Encoder模型作为SD模型中的前置模块,将输入的文本信息进行编码,生成与文本信息对应的Text Embeddings特征矩阵,再将Text Embeddings用于SD模型中来控制图像的生成:

完成对文本信息的编码后,就会输入到SD模型的"图像优化模块"中对图像的优化进行"控制"。
图生图任务中,我们在输入文本信息的同时,还需要将原图片通过图像编码器(VAE Encoder)生成Latent Feature(隐空间特征)作为输入。
文生图任务,我们只需要输入文本信息,再用random函数生成一个高斯噪声矩阵作为Latent Feature的"替代"输入到SD模型的"图像优化模块"中。
"图像优化模块"作为SD模型中最为重要的模块,其工作流程是什么样的呢?
首先,"图像优化模块"是由一个U-Net网络 和一个Schedule算法 共同组成,U-Net网络负责预测噪声,不断优化生成过程,在预测噪声的同时不断注入文本语义信息。而schedule算法对每次U-Net预测的噪声进行优化处理(动态调整预测的噪声,控制U-Net预测噪声的强度),从而统筹生成过程的进度。在SD中,U-Net的迭代优化步数(Timesteps)大概是50或者100次,在这个过程中Latent Feature的质量不断的变好(纯噪声减少,图像语义信息增加,文本语义信息增加)。整个过程如下图所示:

U-Net网络和Schedule算法的工作完成以后,SD模型会将优化迭代后的Latent Feature输入到图像解码器(VAE Decoder)中,将Latent Feature重建成像素级图像。
我们对比一下文生图任务中,初始Latent Feature和经过SD的"图像优化模块"处理后,再用图像解码器重建出来的图片之间的区别:

可以看到,上图左侧是初始Latent Feature经过图像解码器重建后的图片,显然是一个纯噪声图片;上图右侧是经过SD的"图像优化模块"处理后,再用图像解码器重建出来的图片,可以看到是一张包含丰富内容信息的有效图片。
我们再将U-Net网络+Schedule算法的迭代去噪过程的每一步结果都用图像解码器进行重建,我们可以直观的感受到从纯噪声到有效图片的全过程:

以上就是SD模型工作的完整流程,下面再将其进行总结归纳制作成完整的Stable Diffusion前向推理流程图,方便大家更好的理解SD模型的前向推理过程:

2.2 读懂Stable Diffusion模型核心基础原理
在前向扩散过程中,SD模型持续对一张图像添加高斯噪声直至变成随机噪声矩阵。而在反向扩散过程中,SD模型进行去噪声过程,将一个随机噪声矩阵逐渐去噪直至生成一张图像。具体流程与图解如下所示:
- 前向扩散过程(Forward Diffusion Process) -> 图片中持续添加噪声
- 反向扩散过程(Reverse Diffusion Process) -> 持续去除图片中的噪声

下面是扩散模型反向扩散过程的完整图解:

如果说前面讲到的扩散模型相关基础知识是为SD模型打下地基的话,引入Latent思想则让SD模型"一遇风雨便化龙",成为了AIGC时代图像生成模型的领军者。
那么Latent又是什么呢?为什么Latent有如此魔力呢?
首先,我们已经知道了扩散模型会设置一个迭代次数,并不会像GAN网络那样只进行一次输入和一次输出,虽然扩散模型这样输出的效果会更好更稳定,但是会导致生成过程耗时的增加。
再者,Stable Diffusion出现之前的扩散模型虽然已经有非常强的生成能力与泛化性能,但缺点是不管是前向扩散过程还是反向扩散过程,都需要在像素级的图像上进行,当图像分辨率和Timesteps很大时,不管是训练还是前向推理,都非常的耗时。
而基于Latent的扩散模型可以将这些过程压缩在低维的Latent隐空间,这样一来大大降低了显存占用和计算复杂度,这是常规扩散模型和基于Latent的扩散模型之间的主要区别,也是SD模型火爆出圈的关键一招。
我们举个形象的例子理解一下,如果SD模型将输入数据压缩的倍数设为8,那么原本尺寸为
的数据就会进入
的Latent隐空间中,显存和计算量直接缩小64倍,整体效率大大提升。也正是因为这样,SD模型能够在2080Ti级别的显卡上进行前向推理,生成各种各样精美的图像,大大推动了SD模型的普惠与AI绘画生态的繁荣。
2.3 读懂Stable Diffusion训练全过程
Stable Diffusion的整个训练过程在最高维度上可以看成是如何加噪声和如何去噪声的过程,并在针对噪声的"对抗与攻防"中学习到生成图片的能力。
Stable Diffusion整体的训练逻辑也非常清晰:
- 从数据集中随机选择一个训练样本
- 从K个噪声量级随机抽样一个timestep
- 将timestep对应的高斯噪声添加到图片中
- 将加噪图片输入U-Net中预测噪声
- 计算真实噪声和预测噪声的L2损失
- 计算梯度并更新SD模型参数
- 下图是SD训练过程Epoch迭代的图解:

下图是SD每个训练step的详细图解过程:

总结
本周通过系统性的技术剖析,在两大前沿领域构建了完整的理论认知:在混合专家模型方面,深入理解了MoE通过稀疏激活实现计算效率与模型容量平衡的核心思想;在Stable Diffusion方面,完整掌握了其基于隐空间的扩散生成范式,包括前向过程的马尔可夫链噪声添加、反向过程的U-Net噪声预测优化,以及VAE编码器将像素空间压缩至隐空间的关键创新。