@jbhuang0604: Huge! It’s amazing how often Noam’s papers end up at the center of the field. In many tutorial videos I’ve made, they’v…
摘要
The article provides a detailed explanation of Mixture of Experts (MoE) in transformers, covering routing, load balancing, and recent innovations like fine-grained experts. It also highlights the significance of Noam Shazeer's research contributions and his move from Google to OpenAI.
查看缓存全文
缓存时间: 2026/06/18 06:04
Huge!
It’s amazing how often Noam’s papers end up at the center of the field. In many tutorial videos I’ve made, they’ve been a recurring foundation for explaining key ideas. GOAT!
MoE: https://youtu.be/0QQlYR1r6pQ SwiGLU: https://youtu.be/JRaPNrpsQ9s MQA: https://youtu.be/Y-o545eYjXM Transformer: https://youtu.be/rcWMRA9E5RI
TL;DR: 混合专家架构通过将每个词元仅路由到稀疏的专家子集,从而在扩展模型参数的同时保持训练和推理效率,是许多先进AI模型的关键技术。
前馈网络(FFN)如何存储和检索事实
变换器主要由堆叠的注意力层和前馈网络(FFN)交替构成。注意力机制捕获词元间的上下文依赖,而FFN负责从模型权重中检索事实信息。以词元嵌入向量为例,假设有一个句子“台湾的首都是这里”,模型需要正确补全。FFN包含三个步骤:
- 上投影:通过线性层(权重矩阵
W_up,偏置向量)将输入嵌入向量x映射到隐藏特征维度(通常为输入维度的4倍),得到向量z。W的每一行可视为一个语义概念,点积衡量输入与这些概念的相关性。例如,某些问题(语义方向)可能对输入词元有高响应(正值),其他则接近零或负值。 - 非线性激活:应用ReLU等激活函数,移除不相关的响应,得到激活向量
a。 - 下投影:另一个线性层(权重矩阵
W_down)将a映射回原始维度。W_down的列向量编码与特定问题相关的事实信息(如“台北”、“台积电”等)。输出y是a对W_down列的加权求和。
最后通过残差连接将 y 加回原始词元嵌入,既保留上下文信息,又整合新检索的事实。
从密集FFN到稀疏混合专家(MoE)
增大FFN的隐藏维度可提升模型表现力(更多问题、更细粒度事实),但会拖慢速度并增加内存。解决方法:每个词元只需激活少量相关单元。稀疏混合专家核心思想:将一个大FFN划分为多个更小、更专业的“专家”网络,对每个词元仅激活稀疏的子集。
路由机制
路由器为每个词元计算与各专家的分数(logit),通过softmax获得概率分布,选择概率最高的前k个专家。输入词元被发送至选中的专家处理,输出为这些专家输出的加权平均(权重为路由器概率)。路由器实现简单:对每个专家有一个可学习的权重向量,logit = 点积(输入嵌入, 专家权重向量)。
细粒度专家与共享专家
最新工作(如DeepSeek-V3)使用大量小专家(256个),每个词元激活8个,称为“细粒度专家”。这显著提升性能,已被Qwen 2.5、Kim K2等开源模型采用。另一设计是包含一个始终激活的共享专家,学习通用信息;路由专家聚焦于特定模式。但实验结果不一:DeepSeek受益,而OLMoE未观察到改进,可能因为将路由专家之一转为共享专家限制了专家组合的多样性。
专家容量与负载均衡
容量与溢出问题
在分布式部署中,每个设备有固定容量(可处理词元数)。例如16词元、8专家、容量系数设为1时,每专家容量为2。但路由动态且不平衡,可能导致某些专家溢出(词元被丢弃)。实际中,丢弃的词元经残差连接直接传递至下一层,计算被跳过。增加容量系数可减少溢出,但增加计算与通信成本(填充空槽导致浪费)。
无丢弃的块稀疏矩阵乘法
传统实现强制每专家获得相同数量的词元,造成“溢出或浪费”的权衡。新方法:用块对角矩阵乘积表示专家计算。当各专家接收不同词元数时,每个块大小不同(非均匀路由),通过块稀疏矩阵乘法内核计算,无需实例化零块,从而避免丢弃或填充。
训练中的负载均衡
初始随机权重时,所有专家一样差。若路由器将多数词元分配给少数专家,这些专家更新更多,表现更好,形成自我强化,其他专家几乎无效。负载均衡目标:均匀分配词元处理。
方法一:带噪声的Top K门控
向logit添加高斯噪声,促进路由器选择更多样化的专家集。还可为每专家增加可学习的缩放因子。
方法二:软约束(辅助损失)
- 专家重要性:对整个批次中分配给某专家的路由器概率求和。鼓励各专家重要性均匀分布。可用变异系数(CV = 标准差/均值)度量:均匀时CV=0。但此指标可能失真——例如前4个专家各积0.25,后4个各积0.125,重要性和均匀(CV=0),但实际词元分配严重不均(前4接收5个词元,后4接收0个)。
- 直接负载:测量路由到每个专家的词元数量,更直接地鼓励各专家接收大致相等的训练样本。
来源
YouTube视频:Huge! It’s amazing how often Noam’s papers end up at the center of the field…
Noam Shazeer (@NoamShazeer): I’m excited to share that I’ll be joining OpenAI and look forward to working with the exceptional team there.
It was a difficult decision to move on. I’m incredibly proud of the amazing team at Google and everything we’ve built together. It has been an honor and a pleasure to
相似文章
Transformer 中的专家混合模型 (MoEs)
Hugging Face 的博客文章,介绍 Transformer 中的专家混合模型 (MoEs) 架构,涵盖从密集模型到稀疏模型的转变、权重加载优化、专家并行计算以及基于 MoE 的语言模型训练技术。
@markchen90:热烈欢迎@NoamShazeer加入OpenAI,担任架构研究的新负责人!他在transformer、MoE方面的工作…
此前在Google工作的Noam Shazeer——transformer和MoE的关键研究者——将加入OpenAI,担任架构研究负责人。
AI2推出的新MoE模型:EMO
AI2发布了EMO,一个混合专家(MoE)语言模型,总参数量14B,其中1B活跃参数,基于1万亿tokens训练,并采用文档级路由,即专家会按领域(如健康、新闻等)进行聚类。
@Jianlin_S: MoE (9): 门控归一化之争
一篇讨论混合专家(MoE)模型中门控归一化之争的博客文章。
混合专家模型中的涌现式模块化(8 分钟阅读)
Ai2 发布了 EMO,一个 14B 参数的混合专家语言模型,训练用于发展涌现式模块化。它允许在特定任务中使用一小部分专家,同时保持接近全模型性能。