深度学习13——MoE模型
1. Dense 模型与 MoE 模型Dense 模型Dense 模型中每个 token 都会经过同一套完整参数。在 Transformer 中一层通常包含Attention → FFN其中 FFN 的参数量和计算量通常占较大比例。无论输入哪个 tokenDense 模型都会激活完整的 FFN。特点所有参数对每个 token 都参与计算训练过程相对稳定实现简单通信开销较低参数量增加时每个 token 的计算量也会同步增加。MoE 模型MoE 全称为Mixture of Experts中文为“混合专家模型”。MoE 的核心目标是在显著增加模型总参数量的同时只让每个 token 激活少量参数从而控制实际计算量。MoE 通常不是替换整个 Transformer而是将普通 FFN 替换成多个专家 FFNAttention → MoE FFN多个专家通常具有相同的网络结构但拥有不同的参数。例如Expert 0一套 FFN 参数 Expert 1一套 FFN 参数 ... Expert 7一套 FFN 参数2. Router 如何选择专家每个 token 不会经过全部专家而是先交给一个 Router也称为 Gate 网络。Router 通常是一个较小的线性层token 隐藏向量 → Router → 每个专家的分数假设有 8 个专家某个 token 的 Router 输出为Expert 00.05 Expert 10.40 Expert 20.02 Expert 30.25 Expert 40.08 Expert 50.04 Expert 60.12 Expert 70.04如果使用 Top-2 路由就选择分数最高的两个专家Expert 1 Expert 3这个 token 只进入这两个专家计算其他六个专家不参与该 token 的前向传播。不同 token 可以选择不同的专家token A → Expert 1、Expert 3 token B → Expert 0、Expert 6 token C → Expert 1、Expert 5因此MoE 是一种稀疏激活模型。3. MoE 的参数量与计算量假设一个 Dense 7B 模型中Attention 等非 FFN 参数约 1.4B FFN 参数约 5.6B 总参数约 7B总参数量总参数量 共享参数 8 个专家参数 1.4B 8 × 5.6B 46.2B现在将 FFN 替换为 8 个专家每个专家都有约 5.6B 参数而 Attention 等参数仍然共享。如果每个 token 只选择两个专家激活参数量 共享参数 2 个专家参数 1.4B 2 × 5.6B 12.6B可以近似理解为总参数量约 46B 每个 token 实际激活约 13B 参数因此 MoE 可以做到模型总容量很大 但单个 token 的计算量明显低于同规模 Dense 模型需要注意激活参数量不完全等于实际 FLOPs但可以用于直观比较计算规模。4. MoE 节省计算但不等于节省全部显存虽然每个 token 只经过少量专家但模型仍然需要保存所有专家的参数。原因是当前 token 可能选择 Expert 1、Expert 3 下一个 token 可能选择 Expert 0、Expert 7因此推理或训练时所有专家参数都必须存在于设备显存、CPU 内存或多卡系统中。可以概括为总参数量约 46.2B 每个 token 激活参数量约 12.6B 参数存储仍需容纳全部 46.2BMoE 主要减少的是每个 token 的 FFN 计算量每一步实际激活的参数数量。它不会自动减少全部模型权重的存储空间优化器状态占用多卡训练时的通信开销。而且在多 GPU 场景中不同专家可能分布在不同 GPU 上token 需要在设备之间发送这种方式称为 Expert Parallelism可能带来较高通信成本。因此MoE 的理论计算量较低但实际训练和推理速度不一定按参数比例直接提升。5. MoE的问题专家坍缩与负载不均衡专家坍缩专家坍缩是指 Router 长期只选择少数几个专家。例如有 8 个专家但大多数 token 都被路由到Expert 1 Expert 3其他专家很少收到 token。这会导致热门专家负载过高冷门专家训练不足多个专家没有形成差异化能力设备负载不均衡部分 token 因容量不足被丢弃或重新路由模型训练不稳定。理想情况下不是要求每个专家使用次数绝对相同而是避免流量过度集中。6. 常见的负载均衡方法辅助负载均衡损失训练时加入额外的辅助损失鼓励 Router 将 token 较均匀地分配给不同专家。总损失可以写成total_loss language_model_loss balance_coefficient × load_balance_loss负载均衡损失通常同时考虑每个专家被实际选择的 token 比例Router 分配给每个专家的平均概率。它不是简单地规定“某专家被选择一次就增加一次惩罚”而是当流量过度集中在少数专家时提高辅助损失。辅助损失权重过小可能无法解决专家坍缩权重过大又可能干扰模型根据 token 内容选择合适专家。专家容量限制每个专家在一个 batch 中能够处理的 token 数量通常有上限。例如每个专家最多接收 100 个 token当某个专家超过容量后额外 token 可能会被丢弃进入第二候选专家被重新分配通过残差路径跳过专家计算。专家容量通常与下面因素有关总 token 数 专家数量 每个 token 选择的专家数量 capacity factor容量限制可以防止单个专家负载过大但容量过小可能导致大量 token 无法进入首选专家。Router 噪声训练时可以在 Router logits 中加入少量噪声router_logits → 加入噪声 → 再选择 Top-k 专家作用是增加早期探索防止 Router 过早固定在少数专家上让不同专家有机会接收到训练样本。这并不是直接强制选择低分专家而是轻微扰动专家排序使分数接近的专家都有机会被选择。推理阶段通常关闭这类随机噪声。Router 正则化与稳定化还可以使用Router logits 正则化限制 Router logits 过大合理初始化 Router调整 Router 学习率对 Router 使用更高精度计算设置共享专家或始终激活的专家。这些方法主要用于避免 Router 过早饱和和训练数值不稳定。7. Dense 与 MoE 对比对比项DenseMoEFFN 数量每层通常一套每层包含多个专家 FFN每个 token 激活范围激活全部 FFN 参数只激活 Top-k 专家总参数量相对较小可以非常大单 token 计算量随总参数量增加低于同总参数量 Dense 模型权重存储保存全部参数仍需保存全部专家参数KV Cache主要由 Attention 决定通常不会因 FFN MoE 直接变化训练稳定性相对稳定Router 和负载均衡更复杂多卡通信相对简单可能产生较大 All-to-All 通信主要问题扩大参数会直接增加计算量专家坍缩、负载不均、通信开销核心区别可以概括为Dense 每个 token 使用同一套完整 FFN。 MoE 模型拥有多套专家 FFN 但每个 token 只选择其中少数几个参与计算。MoE 并不是让模型“用更少参数”而是保存大量参数形成更大的模型容量同时通过稀疏激活控制每个 token 的实际计算量。

相关新闻

XUnity.AutoTranslator终极指南:5步构建高效Unity游戏自动翻译系统

XUnity.AutoTranslator终极指南:5步构建高效Unity游戏自动翻译系统

XUnity.AutoTranslator终极指南:5步构建高效Unity游戏自动翻译系统 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator是一个专业的Unity游戏自动翻译插件,通过…

2026/10/25 13:53:36 阅读更多 →
抖音买单服务商:3个关键指标帮你避坑选优

抖音买单服务商:3个关键指标帮你避坑选优

在短视频电商快速发展的当下,越来越多的商家开始寻求专业的抖音买单解决方案。作为电商生态中的重要一环,优质的ISV服务商不仅能为商家提供稳定可靠的技术支持,更能帮助实现营销闭环和交易转化。1. 专业ISV服务商的核心价值优质的抖音买单服务…

2026/10/25 15:43:31 阅读更多 →
IT66630 芯片技术全解析:HDMI2.0一分二有源分配器底层原理科普

IT66630 芯片技术全解析:HDMI2.0一分二有源分配器底层原理科普

摘要依托 ITE 官方规格文件,对 HDMI2.0 一分二有源分配芯片 IT66630 开展中立技术科普。文章讲解芯片协议兼容性、4K60 音视频处理能力、内部硬件模块、电源时序、电气与功耗指标,梳理硬件开发关键设计要点,纯技术原理分享,不含推…

2026/10/25 13:00:14 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/28 7:28:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/28 9:02:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/28 9:00:54 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/28 7:29:02 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 9:01:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →