Token导航 LogoToken导航

MoE模型16个专家为何每次只用2个效果更好

更新时间 2026-10-17来源 科技行者正文 6176字阅读约 20分钟1 张图片


先说一个让人挠头的现象。

你如果去看混合专家模型(Mixture-of-Experts,简称MoE,一种把大网络拆成多个小专家、按需调用的架构设计)的论文,会发现一个长期没人捅破的矛盾:要么让每个词元(token,模型处理文本或图像时的最小处理单元,一个词、一个字或一小块图像都可能对应一个token)只用几个专家,省计算量,但代价是大部分专家跟这个词元根本没关系,白白闲置;要么让所有专家都参与进来,效果确实好,但计算成本跟着专家数量线性暴涨,专家越多,跑得越慢;还有一种折中方案,把所有专家的参数直接融合成一个新专家,用起来倒是省事,可是每换一次输入就要重新融合一次,内存占用又爆了。

这三条路,业内分别叫稀疏路由、密集输出混合、参数融合,几乎是过去八年MoE研究绕不开的三选一。阿里巴巴DreamX团队这次做的事情,是想证明这道题其实有第四个答案,不需要在计算量、内存和效果之间做取舍。

这篇论文提出的方法叫IntBMoE,发表于2026年9月,而且不是停留在论文里,它已经在高德地图的推荐系统里真刀真枪跑了,服务数亿用户,还做了正式的线上A/B测试,UVCTR(独立访客点击率,衡量用户点击行为的核心指标)相对提升了2.4%。这个细节值得多说一句:很多顶会论文的方法止步于跑分表格,而这篇论文附带了工业级部署的实测数据,这在MoE研究里并不常见。

先弄清楚,这道题到底难在哪

要理解IntBMoE的巧妙之处,得先把MoE架构里三个容易混淆的概念拆开讲清楚。

论文里用了三个词:参与度、执行度、物化量。参与度指的是一个词元的输出结果里,到底有多少个专家真正贡献了知识;执行度指的是为了算出这个输出,实际跑了多少次专家网络,也就是算力开销;物化量则是要临时构建和存储多少份专家规模的参数集合,也就是内存开销。

稀疏路由方法(Sparse-routing,只挑选少数几个专家来处理每个token的策略)比如经典的GShard和Switch Transformer,做法是给每个词元打分,挑出得分最高的一两个专家来处理,剩下的专家完全不参与。这样做计算量和内存都很省,但代价是参与度被砍得很低,没被选中的专家既不影响这个词元的输出,也接收不到任何反馈信号去学习跟它相关的东西。

密集输出混合方法(Dense output-mixing,让所有专家都参与计算然后加权求和的策略)比如MMoE、PLE,做法反过来,让每个专家都算一遍,再按权重加总。这样参与度是满的,但执行度跟专家数量线性挂钩,专家越多,跑得越慢,扩展性天生受限。

参数融合方法(Parameter-merging,把所有专家的参数按权重合并成一个新专家再执行的策略)比如SMEAR、Lory,思路是先把所有专家的参数加权揉成一个新专家,再执行这一个专家,这样执行只需要一次。但问题出在“融合”这个动作本身很贵,每来一批新的路由决策,就要重新融合出一份新的专家参数,物化量跟着路由决策的数量线性增长。

这三条路各自解决了一个问题,又各自制造了新问题。这就像三个人分别想解决“既要快递准时、又要成本低、又要包装结实”这道题,但每个人的方案都只顾一头。

三个指标能不能同时兼顾?这是IntBMoE要回答的核心问题。

IntBMoE的答案:把“造专家”和“用专家”彻底拆成两件事

这里就要引出IntBMoE最核心的设计思路了:既然三个指标互相牵制的根源在于“构建专家变换”和“在词元上执行这个变换”被绑死在一起,那就把这两步彻底分开。

具体怎么做?论文设计了一个小小的码本(Codebook,一组可学习的嵌入向量,每个向量对应一个候选的“组合方案”),码本里有K个学习出来的嵌入向量,每个向量对应一个“区块”(Block,由若干层专家参数组合而成的可复用变换单元)。一个共享的超网络(Hypernetwork,一个用来生成另一个网络参数的神经网络,而不是直接学习参数本身)拿到这些码本嵌入之后,会为每一层的专家池生成一套组合系数,用这套系数把这一层里全部的专家参数加权融合成一个复合专家。这个过程跟具体某个输入词元完全无关,只跟码本本身有关。

这一步做完,K个完整的多层区块就已经构建好了,而且因为它们不依赖输入,理论上可以提前算好、缓存起来反复用,不用每次来一个新词元就重新构建一遍。

第二步才轮到词元登场。每个词元通过一个路由器(Router,负责给每个候选选项打分并挑选的小型网络)给这K个区块打分,挑出得分最高的k个区块(比如K=8个区块里选k=2个),只在这几个被选中的区块上做计算。

这样一来,三个指标就被彻底解耦了:参与度是满的,因为每一个区块在构建阶段就已经用到了全部的专家参数;执行度保持稀疏,因为词元真正只在少数几个区块上跑一遍;物化量则被码本大小K死死限定住,跟词元数量无关,因为区块是提前造好、循环复用的,不会随着路由决策的增多而膨胀。

打个比方可能更容易理解这个设计的精妙之处。

想象一个大型餐厅的后厨,有16位不同风味的厨师(对应16个专家)。传统的“密集”做法是每道菜都让16位厨师一起动手,效果肯定好,但厨房效率会被拖垮,一道菜上桌要等所有厨师都忙完。传统的“稀疏”做法是每道菜只派2位厨师去做,速度快了,但另外14位厨师的手艺完全没机会体现在这道菜里,久而久之这14位厨师的技能可能都练不精,因为没人给他们反馈。

IntBMoE的做法是:后厨提前根据16位厨师的手艺,组合出8套“招牌配方”,每套配方在设计阶段就参考了全部16位厨师的经验(这一步只做一次,提前准备好,不用现场临时凑)。等顾客点菜的时候,服务员只需要从这8套配方里挑出最匹配这道菜口味的2套来上菜,不用现场把16位厨师都叫出来。如果没有这套提前配好方的机制,要么就得像密集混合那样每道菜都得劳师动众,要么就得像稀疏路由那样让大部分厨师的手艺常年被闲置。这就是“把造专家和用专家拆开”这件事的真正代价与收益所在。

DPRG:让区块自己产生非线性表达能力

光是把专家参数线性加权融合,其实表达能力是有限的,因为线性组合终究还是线性组合,叠再多层本质上也逃不出线性变换的范畴。

论文在这里加了一个叫DPRG(Dual-Path Residual Gating,双路径残差门控,一种让两条独立组合出的路径通过乘法交互产生非线性效果的机制)的设计。具体做法是,每个区块的专家参数会被融合两遍,一遍生成“值路径”(value path),一遍生成“门路径”(gate path),这两条路径虽然都是用同一套专家基线性组合出来的,但组合系数不同。

关键的非线性操作在这里出现:值路径的输出,会乘以“1加上门路径经过SiLU激活函数处理后乘以一个可学习缩放系数λ”这样一个因子。这个乘法操作把两条本来都是线性的路径捏合在了一起,产生了单纯线性组合无法达到的表达能力,而且几乎没有增加额外的参数量。

论文的消融实验(Ablation study,通过逐一移除模型的某个组件,观察性能下降幅度,来验证该组件是否真的有用的实验方法)证明了这一点分量很重:去掉门路径之后,ImageNet-1K图像分类任务上的Top-1准确率从73.76%直接掉到68.04%,跌了5.72个百分点,是所有消融项里跌幅最大的。这说明门控这个非线性交互不是锦上添花的小设计,而是整个方法里最核心的表达能力来源之一。

这个设计让我想起做菜时候的“调味”这件事。单独用盐和单独用糖,各自能带来的味道是线性叠加、可预期的,咸就是咸,甜就是甜。但如果把糖和盐按某个比例同时放进一锅红烧肉里,两者相互作用产生出的复合鲜味,是没法通过单独品尝咸味加甜味来简单推算出来的。如果只保留“值路径”这一条线性组合,就相当于只放盐不放糖,虽然也能吃,但那股让人惊艳的复合鲜味就没了。

区块级特征过滤:给每个区块一双不同的眼睛

在词元真正进入某个被选中的区块之前,论文还加了一步叫“区块条件特征过滤”(Block-Conditioned Feature Filtering)的操作。

做法是把词元的表示向量和这个区块的码本嵌入拼接起来,过一个小的线性层加Sigmoid激活函数(Sigmoid,一种把任意数值压缩到0到1之间的激活函数,常用来生成类似“开关强度”的软掩码),生成一个介于0到1之间的软掩码(soft mask,不是非黑即白的开关,而是一个连续取值的“过滤强度”)。这个掩码逐维度地乘在词元的原始表示上,相当于给每个区块一副专属的“滤镜”,同一个词元进入不同的区块时,看到的特征会略有不同。

这一步在消融实验里的贡献相对温和,去掉它之后Top-1准确率只掉了0.04个百分点,属于“锦上添花”级别的改进,但方向是正确的。它保证了即便是同一个词元,走进不同的专属区块时也能获得针对性的视角,而不是所有区块看到的都是完全一样的原始输入。

从数字上看效果如何

论文在ImageNet-1K(一个包含128万张训练图片、1000个类别的经典图像分类基准数据集)上做了系统对比,用的是八层DeiT-Tiny风格的骨干网络。

结果显示,纯密集网络(不带任何MoE机制的基线)Top-1准确率是66.40%。加入Switch Transformer这种经典的Top-1稀疏路由后提升到70.04%。而IntBMoE达到了73.76%,比密集基线高出7.36个百分点,比同样属于“全参与”阵营里表现最好的对比方法SMEAR还要高出1.98个百分点。

更值得关注的是效率数据。IntBMoE总参数量2429.5万,其中因为全专家池参与了区块构建,激活参数达到2311.1万,看起来占用不小。但如果把区块构建这一步缓存起来(因为区块构建跟具体输入无关,可以提前算好复用),推理阶段每张图片的计算量能从4.063 GFLOPs降到3.457 GFLOPs。论文还专门做了一组实验,测试专家池规模从1个扩展到128个时,不缓存的版本内存占用从54.57MB暴涨到627.83MB,计算量也从3.495 GFLOPs涨到8.305 GFLOPs;而缓存版本的内存和计算量始终稳定在104.33MB和3.457 GFLOPs,完全不随专家数量增长而变化。

这组数据的意义在于:缓存机制把“请求时的计算成本”和“专家池的规模”彻底脱钩了。这在实际工程部署里价值很大,意味着你可以放心地把专家池做得很大,去获取更强的表达能力,而不用担心线上服务的延迟跟着水涨船高。

论文还专门验证了“全专家参与”是不是真的落到了实处,而不只是设计上说说而已。研究者在ImageNet-1K上做了一组逐一移除单个专家基线的实验,涉及第0、2、4、6层共64种移除组合,结果发现移除任意一个专家基线都会导致准确率下降,最小降幅也有0.26个百分点。有意思的是浅层网络(第0层)对个别专家的依赖特别不均匀,移除某个特定专家甚至会导致9.15个百分点的暴跌,而深层网络(第6层)的专家贡献分布得更均匀。这说明浅层特征更依赖少数几个“骨干”专家,深层特征则学会了更细腻地调用整个专家池。

除了图像分类,论文还在语言建模(MiniPile数据集,一个6GB的去重版The Pile子集)和序列推荐(IntTravel数据集,包含1.628亿用户、730万个兴趣点、41.3亿次交互记录)上做了验证,结果都是IntBMoE领先。在语言建模任务上,困惑度(Perplexity,衡量语言模型预测下一个词准确程度的指标,数值越低说明模型越准)从密集基线的16.6621降到14.5878,相对最强对比方法μMoE还低了2.9%。

工业部署:60毫秒的生死线

这篇论文最有说服力的部分,也许不是跑分表格,而是它真的上线了。

高德地图把IntBMoE用在了打开App时首屏地图的兴趣点推荐服务上,这个场景要求响应时间必须控制在60毫秒以内,因为用户打开App等地图加载的耐心非常有限。团队把区块构建这一步完全缓存下来,从请求路径里彻底剔除,只在请求时执行词元路由和被选中区块的计算。

一周的线上A/B测试里,处理并发量大约每秒5000次查询,跑在阿里巴巴自研的T-Head PPU芯片上,平均延迟19毫秒,P99延迟(99%的请求响应时间都低于这个值,用来衡量最坏情况下的体验)38毫秒,都在60毫秒预算之内,同时UVCTR相对提升了2.4%。测试结束后,IntBMoE被正式全量部署,承接了生产环境的真实流量。

这个部署案例说明的一件事是:一个方法在论文里跑分好看,跟它能不能在真实的高并发、低延迟场景下站住脚,是两码事。很多学术论文提出的架构创新止步于实验室环境,IntBMoE通过“先构建、后缓存、再路由”这套设计,把学术上的巧妙想法真正落到了工程可用的地步。

写在后面

读这篇论文时,最触动我的其实不是准确率数字,而是它对“参与”这个词的重新定义。

传统MoE研究默认“参与”和“计算”是一回事,一个专家如果没被实际算一遍,就算它没参与。但IntBMoE提出了一个更细腻的视角:一个专家可以在“构建阶段”参与进来,贡献自己的知识去塑造某个复合区块,而不需要在“执行阶段”被单独跑一遍。这种把“贡献知识”和“被执行”拆分开的思路,其实在很多系统设计里都有影子,比如数据库里的物化视图,本质上也是提前把复杂查询的结果算好存起来,用的时候直接读,而不是每次都重新算。IntBMoE某种程度上是把这个思路用到了神经网络的专家组合上。

另一个让我意外的细节是,论文里那组逐一移除专家的实验显示,浅层网络的专家贡献极不均匀,某个专家一旦被拿掉,准确率能暴跌9个百分点,而深层网络的专家贡献却相当均衡。这跟一般直觉里“深层网络学到的是更抽象、更专业化的特征,应该更依赖少数专家”的想法恰好相反。这提示我们,专家的“专业化”程度,可能并不是随着网络深度单调递增的,浅层特征反而可能因为承担着更基础、更不可替代的工作,导致对个别专家的依赖更极端。这个反直觉的结果,论文里只用了一段话带过,但值得单独拎出来琢磨。

这篇论文没有解决的问题也很明显:码本大小K和每次选中区块数k这两个超参数怎么调,目前看还是靠经验网格搜索,论文里K从1加到32、k从1加到5做了灵敏度实验,但没有给出一个理论上的选择依据。如果专家池规模继续扩大到成百上千个,这套“先构建后路由”的机制是否还能保持同样的效率优势,也是个开放问题。

Q&A

Q1:IntBMoE是什么?

A:IntBMoE是阿里巴巴DreamX团队提出的一种混合专家模型架构,通过把“专家参数组合”和“词元执行”两个阶段拆开,让每个词元都能从全部专家中受益,同时保持稀疏计算和有限的内存占用,已在高德地图推荐系统中正式部署。

Q2:IntBMoE和传统的稀疏路由MoE有什么区别?

A:传统稀疏路由只让被选中的少数专家参与计算,其余专家既不影响输出也学不到东西;IntBMoE先用全部专家构建出一批可复用的“区块”,再让词元只在这些区块里选几个执行,做到全专家参与但计算量依然稀疏。

Q3:IntBMoE的实际效果怎么样?

A:在ImageNet-1K图像分类任务上Top-1准确率达到73.76%,比密集基线高7.36个百分点;在高德地图的线上A/B测试中,UVCTR相对提升2.4%,平均延迟19毫秒,符合60毫秒的服务预算。

文章标签大模型
资讯来源:由AI资讯编辑整理自互联网公开内容,版权归原作者所有,未经许可,不得转载。

继续浏览更多资讯

返回资讯目录

相关资讯

更多