0

0

微软让MoE长出多个头,大幅提升专家激活率

王林

王林

发布时间:2024-05-14 11:52:29

|

806人浏览过

|

来源于机器之心

转载

mh-moe 能优化几乎所有专家,实现起来非常简单。

混合专家(MoE)是个好方法,支持着现在一些非常优秀的大模型,比如谷歌家的 Gemini 1.5 以及备受关注的 Mixtral 8x7B。

“稀疏混合专家(SMoE)可在不显著增加训练和推理成本的前提下提升模型的能力。例如 Mixtral 8×7B 就是一个 SMoE 模型,其包含 8 个专家(共 7B 参数),而其表现却可以超过或比肩 LLaMA-2 70B 和 GPT-3.5。”

但是,它也有两个问题。一是专家激活率低 —— 也就是搞不好会出现下图这种情况:

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

微软让MoE长出多个头,大幅提升专家激活率

具体来说,优化时只有一小部分专家会被激活,如图 1a 所示(8.33%的激活率),这会导致在学习应对复杂任务的大量专家时,会出现性能次优和效果不佳的问题。

微软让MoE长出多个头,大幅提升专家激活率

二是无法细粒度地分析单个 token 的多重语义概念,比如多义词和具有多重细节的图块。

最近,微软研究院和清华大学提出了多头混合专家(MH-MoE)。顾名思义,MH-MoE采用了多头机制,可以将每个输入token分成多个子token。然后将这些子token分配给一组多样化的专家并进行处理,之后再无缝地将它们整合进原来的token形式。

微软让MoE长出多个头,大幅提升专家激活率

  • 论文标题:Multi-Head Mixture-of-Experts

  • 论文地址:https://arxiv.org/pdf/2404.15045

  • 代码地址:https://github.com/yushuiwx/MH-MoE

图 2 展示了 MH-MoE 的工作流程。可以看到,当输入单个 token 时,MH-MoE 会将其分成 4 个子 token,进而激活 4 个专家,而 SMoE 仅激活 1 个专家。

微软让MoE长出多个头,大幅提升专家激活率

如图 2 所示,分配给专家 3 和 2 的子 token 包含对图块内每个角色动作的详细理解,而分配给专家 1 和 4 的子 token 则显式地建模了错误的同源词「camera」的语义。

专家处理完成后,再将子 token 无缝地重新整合进原来的 token 形式,由此可以避免后续非并行层(例如注意力层)的任何额外计算负担,同时还集成从多个专家捕获的语义信息。

这样的操作可让 MH-MoE 从整体上关注来自不同专家内不同表征空间的信息,从而可以加深上下文理解能力,同时提升专家激活率。该项目的代码也将发布。

MH-MoE 的具有以下优势:

  1. 专家激活率更高且扩展性更好。MH-MoE 能优化几乎所有专家,从而可以缓解专家激活率低的问题并大幅提升更大专家的使用率,如图 1a 所示实现了 90.71% 的激活率,这能让模型能力获得更高效的扩展。

  2. 具有更细粒度的理解能力。MH-MoE 采用的多头机制会将子 token 分配给不同的专家,从而可以联合关注来自不同专家的不同表征空间的信息,最终获得更好更细粒度的理解能力。举个例子,如图 1b 的明亮区域所示,子 token 会被分配给更多样化的一组专家,这有助于捕获语义丰富的信息。

  3. 可实现无缝整合。MH-MoE 实现起来非常简单,而且与其它 SMoE 优化方法(如 GShard)无关,反而可以将它们整合起来一起使用以获得更好的性能。

方法

图 3 给出了 MH-MoE 的整体架构,其使用了多头机制将每个 token 分拆为子 token,然后将这些子 token 路由给不同的专家。

微软让MoE长出多个头,大幅提升专家激活率

多头混合专家

为了能清楚说明,这里仅描述单层 MH-MoE。

首先,通过一个多头层将输入 token 序列投射成一个新序列。

之后,沿 token 维度将新序列中的每个 token 分拆为多个子 token,并根据原始 token 序列并行排布这些子 token,进而构成一个新的特征空间。

然后将所有这些子 token 输送给一个门控函数。将特定子 token 路由到第 p 个专家的门控值的计算方式为:

微软让MoE长出多个头,大幅提升专家激活率

对于路由方法,这篇论文关注的重点方法是 top-k 路由,也就是激活路由分数最大的 k 个专家。然后让这些激活的专家处理子 token。

之后,按子 token 原来的顺序重新排布并整合所得结果。

然后,通过一个 token 合并操作将所得整合结果转换回原始 token 形式。

最后,使用一个融合层将转换后的结果投射成多个特征的有效整合形式,此时这些特征已捕获了不同专家表征空间的详细信息。这样便可得到单层 MH-MoE 的最终输出。

训练目标

MH-MoE 的训练目标是最小化两个损失:针对具体任务的损失和辅助性的负载平衡损失。

微软让MoE长出多个头,大幅提升专家激活率实验

实验设置

为了进行比较,该研究的实验采用了两种基准模型:(1) Dense,这是没有整合稀疏激活的并行模块(SMoE 层)的 Transformer 解码器。(2) X-MoE,基于 Chi et al. (2022) 的论文《On the representation collapse of sparse mixture of experts》提出的方法的实现。

实验中的 MH-MoE 基于 X-MoE 并使用了与其一样的设置。

实验任务有三个:以英语为中心的语言建模、多语言语言建模、掩码式多模态建模。

更多有关数据集和模型架构的设置请参阅原论文。

困惑度评估

他们在两种专家设置(8 个专家和 32 个专家)下研究了所有预训练模型和预训练任务的验证困惑度曲线。图 4 给出了困惑度趋势,表 1 是最终的困惑值。

微软让MoE长出多个头,大幅提升专家激活率

Midjourney
Midjourney

当前最火的AI绘图生成工具,可以根据文本提示生成华丽的视觉图片。

下载

微软让MoE长出多个头,大幅提升专家激活率

据此可以看出:

  1. 相比于基准,MH-MoE 的困惑度总是更低,这说明其能更有效地学习;

  2. 在三个不同的设置中,MH-MoE 的困惑度是最低的;

  3. 当专家数量增多时,MH-MoE 的困惑度会下降,这说明随着专家数量增多,其表征学习能力会提升,模型也能从中受益。

这些结果表明 MH-MoE 在多种预训练范式下都有更优的学习效率和语言表征能力。

下游任务评估

为了验证 MH-MoE 的效果,该团队也为每个预训练任务执行了对应的下游任务评估。

以英语为中心的语言建模

这里使用了 9 个不同的零样本评估基准,可以评估模型解决多种不同自然语言任务的能力,比如常识推理、一般语言理解和知识理解。评估框架为 LLM Evaluation Harness。结果见表 2。

微软让MoE长出多个头,大幅提升专家激活率

可以看到,相比于 Dense 模型,X-MoE 有明显优势,这说明较大的模型能让 SMoE 模型(如 X-MoE)受益。总体而言,MH-MoE 在所有基准上都表现最佳。

多语言语言建模

他们在跨语言自然语言推理(XNLI)语料库(14 种语言)上评估了新的多语言语言模型。评估框架依然是 LLM Evaluation Harness,同样使用了零样本设置。结果见表 3。

微软让MoE长出多个头,大幅提升专家激活率

MH-MoE 依然表现最佳,这体现了多头机制在建模跨语言自然语言方面的有效性。

掩码式多模态建模

他们也在社区广泛使用的视觉 - 语言理解和生成基准上执行了评估,包括视觉问答、视觉推理和图像描述。评估结果见表 4。

微软让MoE长出多个头,大幅提升专家激活率

可以看到,MH-MoE 在这三个任务上有着全面的优势。这些结果表明 MH-MoE 具有更强的视觉信息理解能力,这也验证了新提出的多头机制在捕获视觉数据中的不同语义和详细信息方面的有效性。

消融研究

为了验证 MH-MoE 各组件和参数的效果,该团队也进行了消融研究。他们研究的内容包括头的数量、多层感知器层(包括多头层和融合层)、token 拆分与融合操作、MLP 层的数量。

表 5、6、7 给出了研究结果。整体而言,MH-MoE 各组件的效果得到了验证,并且他们也得到了一些有趣的结果,比如从表 7 可以看出单层 MLP 足以实现 token 分割和融合。

微软让MoE长出多个头,大幅提升专家激活率

微软让MoE长出多个头,大幅提升专家激活率

微软让MoE长出多个头,大幅提升专家激活率

分析

专家激活分析

最后该团队还通过可视化分析等方法对 MH-MoE 进行了分析。

图 5 给出了 X-MoE 和 MH-MoE 中专家激活的分布情况。

微软让MoE长出多个头,大幅提升专家激活率

可以看到,MH-MoE 的专家激活率明显更高,并且随着头的数量 h 增大,专家激活的频率也会上升。

图 6 则对比了 X-MoE 和 MH-MoE 的可扩展性(专家数量从 8 扩展到 256)。

微软让MoE长出多个头,大幅提升专家激活率

可以看到 MH-MoE 的优势非常明显,并且 X-MoE 的下游性能会在专家数为 64 时达到饱和,而 MH-MoE 却还能继续提升。

分析细粒度理解能力

为了进一步分析多头机制对 MH-MoE 的帮助,该团队更深入地分析了其理解多样且复杂的语义信息的能力,比如理解语言中的多义词和错误同源词(记为 PF token)以及图像中的信息丰富的区域。

对于语言数据,他们计算和比较了从 PF token 和非 PF token 拆分出的子 token 的散度层级(即这些子 token 路由到的不同专家的数量)。结果见图 7。

微软让MoE长出多个头,大幅提升专家激活率

可以看到相比于非 PF token,PF token 的散度分布明显靠右。这说明,在 MH-MoE 的推理过程中,PF token 会将其子 token 路由到更多不同专家,从而会捕获到与非 PF token 不同的语义信息,实现更好的多义词和错误同源词建模。

对于图像数据,他们分析的是不同图块的散度层级在训练过程中的变化情况,结果见图 8。

微软让MoE长出多个头,大幅提升专家激活率

有趣的是,可以看到随着训练步骤增多,高频纹理区域(即有丰富语义信息的区域)的散度层级会逐渐增大,而低频纹理区域的散度层级则会逐渐降低。这表明在训练过程中,MH-MoE 倾向于将具有复杂纹理的区域的 token 路由到更多不同专家,由此可让模型对该区域的语义有更细粒度的理解。

该团队也执行了复杂性和参数分析,详见原论文。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6484

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

838

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1087

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

1772

2024.03.01

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

3057

2026.01.21

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2734

2024.08.16

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

6

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

6

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

8

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Node.js 教程
Node.js 教程

共57课时 | 12.3万人学习

CSS3 教程
CSS3 教程

共18课时 | 6.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号