什么是MoE?

在这里插入图片描述

用(多个)大型前馈网络和一个选择器层取代大型前馈网络。你可以在不影响浮点运算次数的情况下增加专家数量。

MoE受欢迎的原因

相同的浮点运算次数,更多的参数表现更好

在这里插入图片描述

训练混合专家模型(MoEs)速度更快

在这里插入图片描述

训练混合专家模型(MoEs)速度更快

在这里插入图片描述

与密集型等效模型相比极具竞争力

在这里插入图片描述

可并行到多个设备(专家并行性)

有多个前馈层,可以将每个专家放在不同的设备上
在这里插入图片描述

一些混合专家(MoE)的成果——来自西方

混合专家模型(MoE)大多是性能最高的开源模型,而且速度相当快
在这里插入图片描述

中国团队早期的混合专家(MoE)成果——通义千问

中国的大语言模型公司也在较小规模上做了不少混合专家(MoE)相关工作。
在这里插入图片描述

中国团队早期的混合专家模型(MoE)成果

最近也有一些关于混合专家模型(MoE)的不错的消融实验研究,表明它们总体表现良好。
在这里插入图片描述

近期混合专家(MoE)结果 – DeepSeek v3

在这里插入图片描述

为什么混合专家模型(MoEs)没有更受欢迎呢?

基础设施复杂 / 多节点优势
训练目标在一定程度上是启发式的(且有时不稳定)
在这里插入图片描述

混合专家模型(MoE)通常是什么样子

典型做法:将多层感知器(MLP)替换为专家混合(MoE)层
在这里插入图片描述

不太常见的做法:将MoE用于注意力头(不稳定)
在这里插入图片描述

MoE的变种

路由函数
专家规模
训练目标

路由功能

概述

许多路由算法归根结底都是“选择前 k 个”
在这里插入图片描述

路由类型

几乎所有的混合专家模型(MoE)都采用标准的“令牌选择前 k 个”路由方式。最近的一些消融实验
在这里插入图片描述

常见路由变体详解

Top-k

残差流输入x
x将进入路由器中,路由器类似于注意力操作(存在线性内积+softmax)
然后选出活跃度最高的前 K 名专家,并对这些输出进行门控
根据具体情况,可能会根据此路由器权重对输出进行加权,然后,将只输出加权平均值或综合
在这里插入图片描述

用于大多数混合专家模型(MoE)
Switch Transformer(k=1)
Gshard ((k=2)) 、Grok(2个)、Mixtral(2个)、通义千问(4个)、DBRX(4个)

Hashing

只需要使用哈希函数,就可以将x映射到专家上,即使没有处理语义信息,依旧可以从基于散列的MoE中得到收益
在这里插入图片描述

其他路由方法
通过强化学习学习路由

计算成本高,大于好处
在这里插入图片描述

解决一个匹配问题

在这里插入图片描述

Top-K路由详解

在这里插入图片描述

  1. 计算专家权重((s_{i,t})):对于第l层的输入特征(utl)(u_{t}^{l})(utl),通过与专家i的门控向量(eile_{i}^{l}eil)进行内积运算,再经过 Softmax 函数归一化,得到该输入分配给专家i的权重(si,ts_{i,t}si,t),即(si,t=Softmaxi(utlTeil)s_{i, t}=Softmax_{i}\left(u_{t}^{l^{T}} e_{i}^{l}\right)si,t=Softmaxi(utlTeil))。

  2. 筛选 Top-k 专家((KaTeX parse error: Expected '}', got 'EOF' at end of input: g_{i,t})):从所有专家的权重(si,ts_{i,t}si,t)中选取数值最高的前k个,对于这k个专家,保留其权重作为门控系数(gi,tg_{i,t}gi,t);而其他未被选中的专家,门控系数设为 0,即(gi,t={si,t,si,t∈Topk({sj,t∣1≤j≤N},K),0,otherwise,g_{i, t}= \begin{cases}s_{i, t}, & s_{i, t} \in Topk\left(\left\{s_{j, t} | 1 \leq j \leq N\right\}, K\right), \\ 0, & otherwise, \end{cases}gi,t={si,t,0,si,tTopk({sj,t∣1jN},K),otherwise,)。

  3. 计算输出特征((htlh_{t}^{l}htl)):将筛选出的 Top-k 专家对输入特征(utlu_{t}^{l}utl)的处理结果(即(FFNi(utl)FFN_{i}\left(u_{t}^{l}\right)FFNi(utl)))与各自的门控系数(gi,tg_{i,t}gi,t)相乘后求和,再加上原始输入特征(utlu_{t}^{l}utl),得到该层的输出特征(htlh_{t}^{l}htl),即(htl=∑i=1N(gi,tFFNi(utl))+utlh_{t}^{l}=\sum_{i=1}^{N}\left(g_{i, t} FFN_{i}\left(u_{t}^{l}\right)\right)+u_{t}^{l}htl=i=1N(gi,tFFNi(utl))+utl)。
    如果这里只使用softmax而不是用TOP-k,那么就失去了模型本身的意义,使得每次都会激活所有模型,违背了我们在训练和推理中都有少量稀疏的活跃模型的目的

近期由DeepSeek和其他中国大语言模型带来的变化

在这里插入图片描述

规模较小、数量较多的专家 + 一些始终在线的共享专家。

DeepSeek论文中的各种消融实验

在这里插入图片描述

更多的专家、共享专家似乎总体上都有帮助

OlMoE的消融实验

效果都是来自细粒度专家的增益,而没有来自共享专家的增益。
在这里插入图片描述

我们如何训练混合专家模型(MoEs)?

主要挑战:为了提高训练效率,我们需要稀疏性……
但稀疏门控决策是不可微的!
(具体来说,稀疏门控通过路由机制(如 Top-K 路由)选择部分专家,未被选中的专家对应的门控系数会被设为 0。这种 “非此即彼” 的离散选择过程(要么选中专家并保留其权重,要么不选中并置零)不存在连续的梯度变化,而深度学习模型的训练依赖反向传播算法,需要计算参数关于损失函数的梯度以更新参数。因此,稀疏门控的离散性导致无法直接通过常规的反向传播对门控相关参数进行优化,给模型训练带来了困难)
解决方案?

  1. 强化学习优化门控策略
  2. 随机扰动
  3. 启发式“平衡”损失。

多专家模型的强化学习

通过REINFORCE算法的强化学习确实有效,但并没有好到能明显胜出。
强化学习是“正确的解决方案”,但梯度方差和复杂性意味着它并未得到广泛应用
在这里插入图片描述

随机扰动

出自沙泽尔等人2017年的研究——路由决策是随机的,伴有高斯扰动。

  1. 这自然会产生更具鲁棒性的专家。
  2. softmax 意味着模型学习如何对 K 个专家进行排序
    在这里插入图片描述

启发式平衡损失

另一个关键问题——系统效率要求我们均衡地使用专家。
辅助损失是向量 f(各专家的 token 分配比例)与 P(各专家的路由概率比例)的缩放点积。通过最小化该损失,可促使模型让 token 实际分配比例((fif_ifi))与路由概率分配比例((PiP_iPi))更接近,从而平衡各专家的负载
在这里插入图片描述

深度求索(v1-2)示例

每个专家平衡-与Switch Transformer相同
在这里插入图片描述

每个设备平衡-按设备汇总
在这里插入图片描述

DeepSeek v3变体——专家级偏差

设置每个专家的偏差(使其更有可能获得词元)并使用在线学习 gi,t′={si,t,si,t+bi∈Topk({sj,t+bj∣1≤j≤Nr},Kr),0,otherwise.g_{i, t}'= \begin{cases}s_{i, t}, & s_{i, t}+b_{i} \in Topk\left(\left\{s_{j, t}+b_{j} | 1 \leq j \leq N_{r}\right\}, K_{r}\right), \\ 0, & otherwise. \end{cases}gi,t={si,t,0,si,t+biTopk({sj,t+bj∣1jNr},Kr),otherwise.
他们将此称为“无辅助损失平衡”

  • (bib_ibi) 是专家 i 的偏置项,通过在线学习调整:若某专家被分配的 token 过少,(bib_ibi) 会增大,使其更易被选入 Top-K 专家;若某专家负载过重,(bib_ibi) 会减小,降低其被选中的概率;

去除负载均衡损失会发生什么?

在这里插入图片描述

如果不做负载均衡,除了粉色和黄色的模型,其他模型都被浪费了

从系统层面训练MoEs

混合专家模型(MoEs)的并行性良好——每个前馈神经网络(FFN)都可以适配一个设备
在这里插入图片描述

混合专家(MoE)路由允许并行计算,但也存在一些复杂性
在这里插入图片描述

像MegaBlocks这样的现代库(在许多开源混合专家模型中使用)采用了更智能的稀疏矩阵乘法运算。

有趣的附带问题——混合专家(MoE)模型的随机性

有人猜测GPT-4的随机性是由于混合专家(MoE)造成的。
为什么混合专家模型(MoE)会有额外的随机性?
在这里插入图片描述

从路由中丢弃令牌是在批次级别进行的——这意味着其他人的查询可能会丢弃你的令牌!

混合专家模型(MoE)的问题 - 稳定性

在这里插入图片描述

解决方案:仅对专家路由器使用Float 32(有时带有辅助z损失) Lz(x)=1B∑i=1B(log∑j=1Nexj(i))2(5)L_{z}(x)=\frac{1}{B} \sum_{i=1}^{B}\left(log \sum_{j=1}^{N} e^{x_{j}^{(i)}}\right)^{2} (5)Lz(x)=B1i=1B(logj=1Nexj(i))2(5)

路由器的Z损失稳定性

当我们去掉z损失时会发生什么?
在这里插入图片描述

混合专家模型(MoE)的问题——微调

稀疏混合专家模型(Sparse MoEs)在较小的微调数据上可能会过拟合
在这里插入图片描述

佐夫等人的解决方案——微调非混合专家(MoE)多层感知器(MLP)
在这里插入图片描述

DeepSeek解决方案 - 使用大量数据140万个监督微调样本
训练数据:为了训练聊天模型,我们使用内部精心整理的数据集进行有监督微调(SFT),该数据集包含140万个训练示例。此数据集涵盖广泛的类别,包括数学、代码、写作、问答、推理、摘要等。我们的有监督微调训练数据大多为英文和中文,这使得聊天模型用途广泛,可应用于双语场景。

其他训练方法 - 升级循环利用

在这里插入图片描述

我们可以使用预训练的大语言模型(LM)来初始化一个混合专家模型(MoE)吗?

  • 原始密集块中的多层感知机(MLP)模块被复制了 E 份,形成了混合专家(MoE)模块中的多个多层感知机。
  • 新引入了路由模块(Router from scratch)来处理输入并将其分配给不同的多层感知机。
  • 最后通过加权求和(Weighted Sum)操作将多个多层感知机的输出合并。

混合专家模型(MoE)总结

混合专家模型(MoEs)利用了稀疏性——并非所有输入都需要完整的模型。
离散路由很难,但前 k 启发式算法似乎可行
现在有大量实证证据表明专家混合模型(MoEs)有效且具有成本效益。

总结

问题1:什么是混合专家模型(MoE),其核心特点是什么?

混合专家模型(MoE)用多个前馈网络(专家)和一个选择器层替代传统大型前馈网络,核心特点是通过稀疏路由仅激活部分专家,在不显著增加浮点运算量(FLOPs)的情况下提升参数规模,兼顾效率与性能。

问题2:混合专家模型(MoE)受欢迎的主要原因有哪些?

1.相同FLOPs下,更多参数带来更好性能;2. 训练速度更快;3. 与密集模型相比竞争力强;4. 支持专家并行,可将不同专家部署在多个设备上,易于扩展。

问题3:MoE中常见的路由方式有哪些?主流方式的原理是什么?

常见路由方式包括Top-k、哈希、强化学习路由等,主流为Top-k路由。其原理是:输入通过门控向量计算各专家权重,筛选出权重最高的前k个专家,仅用这些专家处理输入并加权求和,实现稀疏激活。

问题4:训练MoE的核心挑战是什么?有哪些解决方案?

核心挑战是稀疏门控的离散性导致不可微,难以通过反向传播优化。解决方案包括:1. 强化学习优化路由(成本高,应用少);2. 随机扰动(引入高斯噪声使路由连续化);3. 启发式平衡损失(促使专家负载均衡,如辅助损失调整token分配)。

问题5:MoE存在哪些主要问题,如何应对?

1.稳定性问题:稀疏路由易导致训练不稳定,可通过对路由器使用float32或添加z损失缓解;2. 微调过拟合:在小数据集上易过拟合,可采用大量微调数据(如DeepSeek用140万样本)或微调非MoE的MLP;3. 基础设施复杂:需支持专家并行,依赖MegaBlocks等库优化稀疏计算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93891.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93891.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93891.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务架构的演进:从 Spring Cloud Netflix 到云原生新生态

过去十年,Spring Cloud 凭借 Netflix 全家桶(Eureka、Ribbon、Hystrix、Zuul 等)几乎成为 Java 微服务的事实标准。但随着这些核心组件逐步停止更新或进入维护模式,微服务架构正经历一场深刻的演进。新的微服务架构更加注重 云原生兼容性、社区活跃度、企业级稳定性和低运维…

网络流量分析——基础知识

文章目录所需技能和知识TCP/IP 堆栈和 OSI 模型基本网络概念常用端口和协议IP 数据包和子层的概念协议传输封装环境与设备常见的流量分析工具BPF 语法执行网络流量分析NTA工作流程NTA工作流程网络 - 第 1-4 层OSI / TCP-IP 模型寻址机制MAC地址IP 寻址IPv4IPv6IPv6 寻址类型IPv…

ansible playbook 实战案例roles | 实现基于 IHS 的 AWStats 访问监控系统

文章目录一、核心功能描述二、roles内容2.1 文件结构2.2 主配置文件2.3 tasks文件内容三、files文件内容四、关键价值免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn 一、核心功能描述 这个 Ansible Role 的核心功能是:​实现 ​…

DELL服务器 R系列 IPMI的配置

1、iDRAC功能默认都是关闭,需要在BIOS面启用,首先重启计算机,按F2然后进入BIOS,选择iDRAC Setting进行iDRAC配置 2、重置一下idrac卡-重置才能恢复默认密码 3、进入iDRAC Setting之后,选择设置网络Network 4、启用iDRA…

模式组合应用-桥接模式(一)

写在前面Hello,我是易元,这篇文章是我学习设计模式时的笔记和心得体会。如果其中有错误,欢迎大家留言指正!文章为设计模式间的组合使用,涉及代码较多,个人觉得熟能生巧,希望自己能从中学习到新的…

【clion】visual studio的sln转cmakelist并使用clion构建32位

我想在linux上运行,所以先转为cmake工程 例如可以把exe mfc 部分不构建,这样ubuntu就不用移植。 先转cmakelist,而后clion完成win32的构建,与vs构建对比,验证脚本正确性。 Vcxproj2CMake https://github.com/gns333/Vcxproj2CMake cmakeconverter https://github.com/pave…

MySQL之分区功能

序言 随着业务发展,我们维护的项目数据库中的数据可能会越来越大,那么单张表的数据变多后,接口查询效率可能会变慢,那我们就直接照抄大厂常见的分库分表吗?—— 当然不是的,分库分表不是万能的。 分库分表…

java_spring boot 中使用 log4j2 及 自定义layout设置示例

1. log4j2对比 原始Logback 优势 对于 Spring Boot 3.x,Logback 是默认日志框架,但在高并发、异步日志场景下,Log4j2 通常表现更优。当业务百万级用户、微服务、日志量大时: ✅ 1. Logback(默认 Spring Boot 集成&am…

记录Webapi Excel 导出

文章目录1、helper2、control3、前端 axios记录webapi excel 导出File示例.NET8.0 NPOI2.731、helper using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.Data; using System.IO; /// <summary> /// 导出EXCEL /// </summary> public class Exce…

VPS服务器安全审计方案:从风险评估到防护实施

随着云计算技术的快速发展&#xff0c;VPS服务器已成为企业信息化建设的重要基础设施。随之而来的安全威胁也日益增多&#xff0c;如何通过专业的安全审计方案保障VPS服务器的稳定运行成为关键课题。本文将系统阐述从漏洞扫描到应急响应的全周期安全审计实施策略&#xff0c;帮…

libmicrohttpd 入门

libmicrohttpd 是一个小型的 C 库&#xff0c;用于在项目中嵌入 HTTP 服务器功能。它设计简单、轻量级&#xff0c;适合需要 HTTP 接口但不想要大型 Web 服务器开销的应用程序。 安装 libmicrohttpd Linux 系统 在基于 Debian/Ubuntu 的系统上&#xff1a; bash sudo apt-…

【网络】使用 DNAT 进行负载均衡时,若未配置配套的 SNAT,回包失败

【网络】iptables 1 概念 【网络】iptables 2 查看规则 【网络】使用 DNAT 进行负载均衡时&#xff0c;若未配置配套的 SNAT&#xff0c;回包失败 【网络】回包路由原理 使用 DNAT 进行负载均衡时&#xff0c;若未配置配套的 SNAT&#xff0c;后端服务器将直接回包给客户端&am…

深入解析GCC:从编译原理到嵌入式底层实战

继续更新编译器底层系列&#xff01;&#xff01;&#xff01;硬核C语言的屠龙之术&#xff1a;从GCC到汇编的底层征途&#xff08;一&#xff09;总纲&#xff1a; 恭喜你&#xff0c;决定踏上这条通往嵌入式大佬的硬核之路。这条路的起点&#xff0c;不是C语言的语法书&#…

最新MySQL面试题(2025超详细版)

2025最新超详细MySQL面试题 文章目录2025最新超详细MySQL面试题[toc]一、 SQL 和基本操作1. SQL的执行顺序2. 如何优化MySQL查询3. 常用的聚合函数4. 数据库事务5. 事务的四大特性(ACID)6. 视图7. MySQL中使用LIMIT子句进行分页8. MySQL中使用变量和用户定义的函数9. MySQL中的…

Spring Retry实战指南_让你的应用更具韧性

1 Spring Retry概述 1.1 什么是Spring Retry Spring Retry是Spring生态系统中的一个重要组件,专门用于处理应用程序中的重试逻辑。在分布式系统和微服务架构中,网络通信、外部服务调用、数据库访问等操作都可能因为各种原因而失败,如网络抖动、服务暂时不可用、资源竞争等…

大数据毕业设计选题推荐-基于大数据的1688商品类目关系分析与可视化系统-Hadoop-Spark-数据可视化-BigData

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇…

【Grafana】grafana-image-renderer配合python脚本实现仪表盘导出pdf

背景 os&#xff1a;centos7Grafana&#xff1a;v12grafana-image-renderer&#xff1a;v4.0.10插件&#xff1a;否grafana-image-renderer可以以插件形式启动&#xff0c;也可以以单独服务启动&#xff0c;在centos7插件启动时&#xff0c;报错glibc版本太低&#xff0c;未找到…

静/动态库 IIC(arm) day58

十七&#xff1a;动态库和静态库 库&#xff1a;一堆可执行二进制文件的集合&#xff0c;由若干个.o文件归并生成 一&#xff1a;静态(链接)库&#xff1a;libxxx.a 生成一个独立的可执行程序(运行时仅需要一个文件即可) 使用方便 不需要安装 文件比较大 多个程序使用同一个静态…

uniapp 手写签名组件开发全攻略

引言在移动应用开发中&#xff0c;手写签名功能是一个常见的需求&#xff0c;特别是在电子合同、审批流程、金融交易等场景中。本文将详细介绍如何基于uni-app框架开发一个高性能、功能丰富的手写签名组件&#xff0c;并分享开发过程中的技术要点和最佳实践。组件概述这个签名组…

理解JavaScript中的函数赋值和调用

&#x1f468; 作者简介&#xff1a;大家好&#xff0c;我是Taro&#xff0c;全栈领域创作者 ✒️ 个人主页&#xff1a;唐璜Taro &#x1f680; 支持我&#xff1a;点赞&#x1f44d;&#x1f4dd; 评论 ⭐️收藏 文章目录前言一、函数赋值二、函数调用三、 代码示例总结前言…