文章介绍了MoE(专家混合)模型,这是一种在保持计算开销不变的情况下增加模型参数规模的技术。MoE通过引入稀疏性,将Transformer中的FFNN改造成多专家网络,包括Router(负责分配任务)和多个Experts(专门处理特定任务)。文章详细探讨了MoE的不同类型、负载均衡问题及解决方案,以及在视觉模型和DeepSeek模型中的应用。MoE能够让模型在不增加计算资源的情况下获得更强的性能。
LLM MoE
在 Scaling Law 的背景下,越大的模型参数,往往意味着更强的性能。然而,过多的模型参数,会带来更大的计算开销。在此背景下,如何增大模型参数同时不增加计算开销成为 LLM 进步的问题。
在 Transformer 的 FFNN 中,我们常常使用 Dense 模型,每处理一个 Token,所有的参数都要参与计算。这就像去医院看个感冒,全院的医生(内科、外科、牙科…)都跑过来给你会诊,既浪费资源又慢。
MoE 模型引入了稀疏性 (Sparsity)的概念。它的 Transformer Block 中的 FFNN 被改造成了多专家网络,包括两个组件:
- •Router (路由器/门控网络):这是 MoE 的“分诊台”。它是一个轻量级的神经网络,负责看一眼输入的 Token,然后决定把它派给哪几个专家处理。
- •Experts (专家):原本的 FFN (Feed-Forward Network) 层被替换成了多个平行的 FFN,每一个就是一个“专家”。在输出时,只选择其中一个子集的专家的加权和。
为了让专家之间产生竞争,在 Loss 上做文章,让每个专家对自己的结果负责,直接用自己的结果和目标向量做比较:
表示某条样本
表示目标向量
表示第 个专家的输出
表示 Router 给出的第 个专家的权重
表示索引 的专家的加权期望
这样的损失函数,其求导的梯度是:
这样的导数,梯度有这样的规律:
- • 权重更大的专家,其更新越快
- • 拟合越好的专家,其更新越慢,容易被其他专家追赶上
然而,我们希望的是,拟合越好的专家,其更新应该相对其他专家越快,这样他可以迅速超越其他专家成为这类样本的专家,所以我们对梯度的系数从 变成:
也就是说,如果某个专家做的很差,那即便 Router 分配给它的概率很高,它被选择的概率也会自然地下降。
表示负责样本 的专家,可以看到,当某个专家的 Loss 更低的时候,选择其的后验概率会更高,其系数也就会更大,这样就变成了拟合更好的专家更新时的步长越长。损失对于专家 的梯度的完整的形式是:
责任度
对其做积分反推损失函数,可以得到:
将责任度的分母记作
可以得到 gate 的梯度:
如果 是 softmax 得到的,则对 求导变成:
也就是说,gate 在被显式地训练去拟合责任度。
Experts 在学什么?
在 encoder / encoder–decoder MoE 中,不同的 Experts 常常学习的是特定领域中的语义,比如:某些 expert 专门处理数学、某些 expert 专门处理代码等,但是在 decoder-only LLM(GPT / Mixtral 这类)里:很少看到一个 expert 长期、稳定地绑定到某个“语义领域”。
然而,虽然没有“领域型”专精,但 experts 仍然是功能上不对称的。下面图中的 token,按first expert choice上色,某些颜色集中在:标点符号、function words(the, of, to, , .)、语法边界(括号、缩进、换行)等。
而不是:整段“医学文本”或代码块。可以看到在 Decoder-only 架构中,专家貌似更多地是在负责语法的不同部分。
原因:自回归约束,每个 token 的 hidden state 强烈依赖当前位置、上文 token 类型。比起语义上的主题,token-level 结构信号更强。
Dense MoE & Sparse MoE
Dense MoE 的计算形式是:
也就是说:gate 给每个专家一个权重 ,所有专家都要算一遍,最后加权求和
Sparse MoE /KeepTopK:每个样本只激活 Top-K 个专家,形式上是:
gate 先算一遍选出权重最大的 K 个专家,结果只取这 K 个专家,LLM 中基本都是 Sparse。router 只对选出的 top-k 个专家负责,剩余的专家完全没有梯度。expert 的数据分布变得稀疏和可聚类。Switch Transformer 中采用 KeepTop1,而 GShard 中采用 KeepTop2。
Load Balancing
Nosiy Gating 噪声路由
Top-K 的选择会导致赢者通吃的局面,早期选中部分专家,其他专家因为没有被选中所以一直没有梯度。gate 很容易把所有样本送给少数专家,GPU/TPU 上有的专家算爆,有的专家空转,导致负载不均。所以需要在 Gate 加上一个噪声,给其他专家一些机会:
Auxiliary Loss / Load Balancing Loss
Switch Transformers 中所使用的
在 batch-level 上,我们可以定义:
专家 的使用频率(fraction of tokens) 记作 个 token 中,被分配到这个专家的 token 数量占整个 token 集合的比重,也就是:
router 对于专家 在所有 Token 上分配的平均概率
Load Balancing Loss 的计算就是:
其中 是专家的数量。
也就是说,其同时惩罚了以下两种情况:
- • 把大部分 token 送到同一个专家
- • 对某个专家过于关注
变异系数 CV Loss
类似的,我们可以直接使用专家之间的重要性的变异系数作为惩罚,重要性即为不同 token 输入时,某个专家在 router 中的权重总和:
变异系数 = 标准差 / 均值,定义 loss 为:
亦或者等价的:
两者的区别
CV loss 只看 gate 概率,要求不同专家在 gate 的时候重要性尽可能均匀。这可能导致尽管概率变得均匀了,但最终推断时如果 KeepTop1 还是选择的同一个专家,也就是 CV Loss 可能会被绕过。
Switch 同时看 gate 的概率以及最终 routing 的结果,要求这两者都尽可能均匀,因为只有 KeepTopK 的时候,才会出现专家有的没被选中的情况,所以 Switch 天然更适合 KeepTopK 的情况。
Expert Capacity
还有一种方法,在 Gshard 模型中使用的,可以直接限制每个专家实际负责的 token 数量,如果权重最大的专家已经被选择了足够多次,达到我们设置的阈值,称作 Expert Capacity,则将其流转给权重第二大的专家,依次类推。
如果该层的所有专家都已经达到了 Expert Capacity,则直接流转到下一层,称作 token overflow。
在 Switch Transformer 中,Expert Capacity 可以动态计算为:Batch中的token数量/专家数量 * 容量系数。
这个系数人为设定,值越高,则更可能出现不均衡的情况,值越低,则更可能出现模型退化的情况,因为太多的 token 出现了 overflow。
视觉模型中的 MoE
V-MoE(Vision Mixture of Experts) 是 Google 提出的将 MoE 引入 ViT的代表性工作。在视觉任务中,图像冗余度极高,MoE 这种条件计算带来的收益巨大。
V-MoE 的核心目标是:让不同 patch 只激活一小部分 FFN expert, 在几乎不损失精度的情况下,把 ViT 的参数规模推到百亿级。
在 V-MoE 中,可以看到和decoder-MoE 偏句法的同一类现象:**MoE 更倾向按 representation geometry 分工,而不是人类语义。**比如按高低频/轮廓纹理分工。
DeepSeek MoE
细化粒度专家与共享专家
指的是在不进行 DeepSeekMoE 改造前,MoE 原始的专家数量
MoE 架构除了上面提到的负载均衡问题外,还容易出现两种问题:
- • 知识混杂 knowledge hybridity:级一个专家可能同时在学习多个不同的领域知识,而这些知识又很难被同时利用,导致其参数的学习分布在不同知识上,不够专业化;
- • 知识冗余 knowledge redundancy:多个专家可能在学习相同的知识,导致知识的冗余、参数的浪费;
也就是说,要提高参数利用的效率,就要做到每个专家拥有各自集中的、互不重叠的知识。DeepSeekMoE 在这方面主要做两个工作:
1.更细粒度的专家划分;将原先的每个专家的隐藏层的神经元数量划分到 1/m,同时专家变成原来的 m 倍来保持相同的参数量,KeepTopK 也变成 KeepTop mK。
这样可以更灵活地对专家之间进行组合,同时每个专家学习得更加精确,维持较高得专业性。从组合的角度上讲,这样子可以产生更多的组合数。
比如 远小于 ,大大提高了专家之间组合的灵活性。
2.设立共享专家(Shared Expert Isolation):隔离出一部分专家作为共享专家,用来学习巩固跨越上下文的共同的知识。这不仅可以减少知识冗余,也可以允许不同的专家的知识集中在各自的专业领域。
在固定地激活 个专家的时候,要同样减少激活其他专家的数量,变成
:
就是 MoE 的输入, 表示第 个专家在 token 上 gate 的权重,这个权重中,只有 TopK 会保留,其他的都会变成 0。
在实验上:
1.DeepSeekMoE 还指出了共享专家和非共享专家的比例并不显著影响效果,但是 1:3 会有一个略微好的增益。
2.在激活的专家数和参数量更少的情况下,就可以达到和 GShard 相近 Pile Loss 水平。
Load Balance
1.专家级别:采用Switch Transformer 的 Load Balancing Loss,但是只要求非共享的专家之间的负载均衡,同时 多乘了一个系数 。这个系数其实是在根据 K 和 N 的大小直接缩放 的大小,使其对 不那么敏感。
因为一般来说, 越大,每个专家被选择的频率就越低,所以进行一个反缩放,使其保持在一个相对稳定的值域。
2.设备级别:专家级别的限制难以做到完美,因为过大的约束会降低模型的性能。所以 DeepSeekMoE 还从设备的角度上做约束,将 expert 根据其所在的设备分成 D 组,将 定义为 组内的专家的平均,将 定义为 组内的专家的 之和。
论文中写道,让设备级别的系数 > 专家级别的系数。
最后
我在一线科技企业深耕十二载,见证过太多因技术更迭而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。
我整理出这套 AI 大模型突围资料包:
- ✅AI大模型学习路线图
- ✅Agent行业报告
- ✅100集大模型视频教程
- ✅大模型书籍PDF
- ✅DeepSeek教程
- ✅AI产品经理入门资料
完整的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
为什么说现在普通人就业/升职加薪的首选是AI大模型?
人工智能技术的爆发式增长,正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议,到全国两会关于AI产业发展的政策聚焦,再到招聘会上排起的长队,AI的热度已从技术领域渗透到就业市场的每一个角落。
智联招聘的最新数据给出了最直观的印证:2025年2月,AI领域求职人数同比增幅突破200%,远超其他行业平均水平;整个人工智能行业的求职增速达到33.4%,位居各行业榜首,其中人工智能工程师岗位的求职热度更是飙升69.6%。
AI产业的快速扩张,也让人才供需矛盾愈发突出。麦肯锡报告明确预测,到2030年中国AI专业人才需求将达600万人,人才缺口可能高达400万人,这一缺口不仅存在于核心技术领域,更蔓延至产业应用的各个环节。
资料包有什么?
①从入门到精通的全套视频教程⑤⑥
包含提示词工程、RAG、Agent等技术点
② AI大模型学习路线图(还有视频解说)
全过程AI大模型学习路线
③学习电子书籍和技术文档
市面上的大模型书籍确实太多了,这些是我精选出来的
④各大厂大模型面试题目详解
⑤ 这些资料真的有用吗?
这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。
所有的视频教程由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势,构建起"前沿课程+智能实训+精准就业"的高效培养体系。
课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!
应届毕业生:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能 突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓**