← Resources
By Ren Sugaya
— Performance Engineer, GPU & Inference
·
· INSIGHT
混合专家模型详解:总参数量与活跃参数量
混合专家模型拥有庞大的总参数量,但每个token只激活其中一小部分——由路由器负责选择几个专家子网络。本文解释MoE的工作原理、至关重要的总参数量与活跃参数量之别、为何它计算成本低却内存消耗大,以及这对运行DeepSeek和Mixtral等模型意味着什么。
什么是混合专家模型
混合专家(MoE)LLM是一种稀疏Transformer,其中部分前馈层包含多个并行子网络,称为“专家”,由一个经过训练的路由器只挑选其中一小部分来处理每个token。其结果是一个总参数量庞大的模型,但每个token只激活其中一小部分参数。
与之相比,在稠密模型中,每个token每次都要经过每个块里相同的前馈网络,每次都激活全部参数。MoE把这些稠密层替换为稀疏专家层,从而将容量(模型知道多少)与成本(每个token需要多少计算量)解耦。
专家与路由器
MoE层由两个组件定义。每个专家都是一个小型神经网络,通常是一个前馈块。路由器(或称门控网络)针对每个专家给输入token打分,并将其路由到得分最高的前k个专家——通常是8个中的前2个。只有这些专家会为该token的输出做贡献,其余专家对该token保持空闲。
Top-k稀疏性正是全部诀窍所在:正是它削减了每个token的计算量。一些设计还增加了一个“共享专家”,它始终与被路由的专家一同保持活跃,以捕捉每个token都需要的共同模式。
总参数量与活跃参数量——核心思想
最重要的概念——也是网上最常被曲解的——是总参数量与活跃参数量之间的区别。总参数量是所有必须加载的专家;活跃参数量只是每个token实际用到的那些。标题里的规模并不等于计算量,因此面对任何MoE的参数数量,紧接着的问题始终是:每个token有多少是活跃的?
“8x7B”这种命名是个经典陷阱。Mixtral 8x7B并不是8 × 7 = 56B参数。由于专家共享注意力层和嵌入层——只有前馈层被拆分成专家——实际总数约为46.7B,每个token大约有12.9B处于活跃状态。尽管它拥有约47B参数,但其计算量类似于约13B的稠密模型。
真实模型:Mixtral与DeepSeek
两个具体例子可以锚定这一概念。Mixtral 8x7B通过top-2-of-8路由,拥有约46.7B的总参数量和每token约12.9B的活跃参数量。DeepSeek-V3把这一模式推向更高的量级:使用256个被路由的专家外加一个始终开启的共享专家,由路由器为每个token挑选8个被路由的专家,从而在671B的总参数量下,每个token仅有37B处于活跃状态。推理模型DeepSeek-R1建立在V3基础之上——架构相同,同样是671B总量/37B活跃量,并为数学和代码加入了强化学习。
到2025年,MoE已成为占主导地位的前沿架构,Llama 4、Qwen3等模型都采用了它——正是因为它让实验室能够在不增加每token计算量的前提下扩展总容量。
VRAM的代价:算得快,内存大
让人意外的地方在于:稀疏计算并不会减少内存占用。每个专家都必须常驻VRAM(或RAM)中,即便每个token只有少数专家被激活,因为路由器可能会把下一个token发给其中任意一个。因此,尽管Mixtral 8x7B的计算占用相当于13B模型,它却需要与稠密~47B模型相当的内存——未量化时约为96 GB。你不能仅仅因为“只有13B是活跃的”就把它塞进一张消费级GPU。
权衡总结:MoE带来更好的每token成本(每token的FLOPs更少),但更差的每内存成本(所有专家都需常驻)。量化有助于缓解内存这一面,这正是MoE模型通常以量化形式在本地运行、或在多GPU端点上运行的原因。
在osFoundry中运行MoE模型
osFoundry可在本地或专用云端点上运行DeepSeek-V3/R1和Mixtral等MoE模型,让你无需自行管理架构,就能享受稀疏激活带来的每token效率。由于真正的瓶颈是内存——每个专家都必须常驻VRAM——平台把它变成一个部署选项:当你的硬件能容纳所有专家(量化后)时就在本地运行,当671B量级的模型装不进你的机器时就使用专用端点。又因为所有模型调用都是BYOK,你可以按任务在用于廉价高容量推理的MoE模型和内存占用更小的稠密模型之间自由切换。总参数量与活跃参数量的权衡,就此变成一个设置项,而不再是硬件难题。
Frequently asked questions
- 用简单的话说,什么是混合专家(MoE)模型?
- 这是一种被拆分成许多专门子网络(称为专家)的模型,由路由器把每个token只发给其中几个。因此,模型在总规模上可以非常庞大——储存大量知识——同时每个token只进行少量计算。它把模型知道多少与运行它的成本分离开来。
- 总参数量和活跃参数量有什么区别?
- 总参数量是加载到内存中的所有专家;活跃参数量是实际用于处理某个token的那少数几个。例如,DeepSeek-V3总量为671B,但每个token仅37B处于活跃状态。计算量取决于活跃数量,而内存取决于总量——这正是这两个数字总要一起给出的原因。
- 既然MoE模型只用到几个专家,为什么还需要那么多VRAM?
- 因为路由器可以把任意token发给任意专家,所以每个专家都必须常驻内存,即便每个token只有少数几个被激活。因此,MoE模型所需的VRAM与其总参数量成正比,而非活跃参数量——Mixtral 8x7B尽管计算量相当于13B,却需要与稠密47B模型大致相当的内存。
- MoE模型比相同总规模的稠密模型更快吗?
- 是的,就每个token而言。由于只有一小部分参数被激活,MoE每个token执行的FLOPs远少于具有相同总参数量的稠密模型,因此运行起来更便宜、更快——前提是你能把所有专家装进内存。它以内存成本换取计算效率。
- 路由器如何决定使用哪些专家?
- 路由器(门控网络)会针对给定的token为每个专家计算一个分数,通常先经过一个小型的学习投影,再接softmax,然后选出得分最高的前k个专家——通常是前2个。只有这些专家才会处理该token。在训练期间,负载均衡技术可以防止token都集中到少数几个偏好的专家上。
- “8x7B”意味着560亿参数吗?
- 不。Mixtral 8x7B总共约46.7B,而非56B,因为专家共享注意力层和嵌入层——只有前馈层被拆分成八个专家。而且每个token只有约12.9B处于活跃状态。总量永远不等于专家数乘以单个专家规模;这是一种命名惯例,而非算术。
- 在推理任务上,MoE模型比稠密模型更好还是更差?
- 结果不一。在预训练质量相当的情况下,MoE模型在知识密集型任务上往往表现良好,对指令微调反应积极,但在某些推理密集型基准测试上可能落后于稠密模型。像DeepSeek-R1这样专注推理的MoE模型,靠强化学习而非单凭架构来弥合这一差距。
Sources