DeepSeekMoE:迈向混合专家语言模型的终极专业化
一、结论写在前面
论文提出了MoE语言模型的DeepSeekMoE架构,目的是实现终极的专家专业化(expert specialization)。通过细粒度的专家分割和共享专家隔离,DeepSeekMoE相比主流的MoE架构实现了显著更高的专家专业化和性能。从较小的2B参数规模开始,论文验证了DeepSeekMoE的优势,展示了其接近MoE模型上限性能的能力。此外,论文证明DeepSeekMoE具有比GShard更高水平的专家特化。
放大到16B参数规模,论文在2T标记上训练DeepSeekMoE 16B,并展示了其与DeepSeek 7B和LLaMA2 7B可比的卓越性能,仅需要大约40%的计算量。另外,论文进行了监督微调用于对齐,基于DeepSeekMoE 16B构建了一个MoE聊天模型,进一步展示了其适应性和通用性。此外,论文初步探索以将DeepSeekMoE放大到145B参数:DeepSeekMoE 145B相对于GShard架构仍保持实质性优势,并展示了与DeepSeek 67B可比的性能,仅使用28.5%(可能甚至18.2%)的计算量。
论文公开了了DeepSeekMoE 16B的模型checkpoint,它可以在40GB内存的单GPU上部署。
Figure 1 | DeepSeekMoE 16B与开源模型在Open LLM Leaderboard上的比较。红色虚线是从除DeepSeekMoE 16B之外的所有模型的数据点线性拟合得到的。DeepSeekMoE 16B始终以很大的优势胜过具有类似激活参数数量的模型,并在性能上与LLaMA2 7B相媲美,后者的激活参数数量大约是其2.5倍
二、论文的简单介绍
2.1 论文的背景
最近的研究和实践通过充分的可用训练数据经验性地证明,扩大语言模型的参数和计算预算可以获得显著更强的模型。然而,必须承认的是,将模型扩展到极大规模的努力也与极高的计算成本相关联。考虑到成本,混合专家(Mixture-of-Experts,MoE)架构已成为一种流行的解决方案。它可以实现参数扩展,同时将计算成本保持在适度水平。
尽管MoE架构展示出有前景的潜力,但现有MoE架构可能存在知识杂交(f knowledge hybridity )和知识冗余(knowledge redundancy)的问题,这限制了专家专业化,即每个专家获得非重叠和专注的知识。传统的MoE架构用MoE层代替Transformer中的前馈网络(Feed-Forward Networks,FFN)。每个MoE层由多个专家组成,每个在结构上与标准FFN相同,每个token分配给一个或两个专家。这种架构体现出两个潜在问题:
(1)知识杂交:现有的MoE实践通常采用有限数量的专家(例如8或16),因此分配给特定专家的标记可能会涵盖不同的知识。因此,指定的专家将倾向于在其参数中汇集不同类型的知识,这些知识很难同时利用。
(2)知识冗余:分配给不同专家的token可能需要共同知识。因此,多个专家可能会在各自的参数中收敛到共享知识的获取,从而导致专家参数中的冗余。这些问题共同阻碍了现有MoE实践中的专家专业化,使其无法达到MoE模型的理论上限性能。
2.2 论文的方案
Figure 2 | DeepSeekMoE的示意图。子图(a)展示了具有传统top-2路由策略的MoE层。子图(b)说明了精细的专家细分策略。随后,子图(c)展示了共享专家隔离策略的集成,构成了完整的DeepSeekMoE架构。值得注意的是,在这三种架构中,专家参数和计算成本保持不变
DeepSeek MoE设计上述结构的前提在于假设:特定专家能可以覆某种领域知识。专家的细粒度切分可以避免一个专家覆盖太多领域把知识学杂了;共享专家可以让一些公共知识每次都参与计算。
同时期国外开源的Mistral of Experts也放了技术报告,它是完全照着GPT-4解密报告复现的MoE,模型结构就是经典的GShard方式。技术报告里的Sec. 5 Routing analysis展示很多路由工作的特征,这些都是非常新鲜的一手资料。有一些结论很有趣:
Mixtral of Experts
- 路由规则与文本的语义主题无关,这意味着专家并不专门精通某一领域的知识。
- 路由规则展示出了一定的语法特性,例如,某些关键词经常被分配给同一位专家。
- 路由规则还展示了位置的局部性,相邻的token通常被路由到同一位专家,这表明token在句子中的位置与路由选择有关。
结论1是比较颠覆传统认知的,又给了公众号做标题党一次机会。
混合专家系统里根本没专家?开源MoE模型论文引网友热议
那么也就是说按照Mistral报告的观察,DeepSeek-MoE设计的动机可能不太成立。我觉得DeepSeek开发者可以参考Mistral的Sec 5做实验看看结论是否一致。
为应对上述两个潜在问题,论文提出了DeepSeekMoE,这是一种创新的MoE架构,专门设计用于实现终极专家专业化。架构包含两大主要策略:
细粒度专家细分
在专家数量有限的情况下,分配给特定专家的标记更有可能涵盖各种类型的知识。因此,指定的专家将意图在其参数中学习非常不同类型的知识,并且它们很难同时被利用。然而,如果每个标记可以路由到更多的专家,不同的知识将有可能分解并在不同的专家中学到。在这种情况下,每个专家仍然可以保持高水平的专业化,有助于在专家之间实现更专注的知识分布。
为了实现这一目标,在保持一致的专家参数数量和计算成本的同时,通过更细粒度地分割专家。更细致的专家分割使得激活的专家组合更加灵活和适应。具体而言,在图 2(a) 中显示的典型 MoE 架构之上,我们通过将每个专家 FFN 的中间隐藏维度减小到其原始大小的 1/m 倍来将每个专家细分为 m 个较小的专家。由于每个专家变得较小,相应地,我们也增加激活的专家数量到 m 倍,以保持相同的计算成本,如图 2(b) 所示。
从组合的角度看,细粒度专家分割策略极大地增强了激活专家的组合灵活性。举例来说,考虑 N = 16 的情况。典型的 top-2 路由策略可以产生 16 2 = 120 种可能的组合。相比之下,如果每个专家分为 4 个较小的专家,细粒度的路由策略可以产生 64 8 = 4,426,165,368 种潜在的组合。组合灵活性的激增增强了实现更准确和有针对性的知识获取的潜力。
共享专家隔离
在传统的路由策略中,分配给不同专家的标记可能需要一些共同的知识或信息。因此,多个专家可能会在各自的参数中收敛于获取共享知识,从而导致专家参数的冗余。然而,如果有专门负责捕捉和 cons共享知识的专业专家,跨不同上下文的参数冗余将得到缓解。这种冗余的减轻将有助于构建更具参数效率的模型,并拥有更专业化的专家。
为实现这一目标,除了精细的专家细分策略之外,进一步隔离 𝐾𝑠个专家作为共享专家。无论路由模块如何,每个标记都将被确定性地分配给这些共享专家。为了保持恒定的计算成本,其他路由专家中激活的专家的数量将减少 𝐾,如图2(c)所示。
负载平衡考虑
自动学习的路由策略可能会遇到负载不平衡的问题,表现为两个显著的缺陷。首先,存在路由崩溃的风险,即模型始终只选择少数专家,阻止其他专家充分训练。其次,如果专家分布在多个设备上,负载不平衡可能会加剧计算瓶颈。
专家级平衡损失:为了缓解路由崩溃的风险,论文还采用了专家级平衡损失。
设备级平衡损失:除了专家级平衡损失外,论文引入了设备级平衡损失。当旨在缓解计算瓶颈时,就不必在专家级别强制执行严格的平衡约束,因为对负载平衡的过度约束会损害模型性能。相反,论文的主要目标是确保设备之间的平衡计算
2.3 论文的效果
从一个仅有2B参数的适度规模开始,验证了DeepSeekMoE架构的优势。在跨越多种任务的12个零试验或少试验基准测试中进行评估。实证结果表明,DeepSeekMoE 2B大大超过了GShard 2B,甚至匹配了GShard 2.9B,一个更大的MoE模型,具有1.5倍的专家参数和计算量。值得注意的是,DeepSeekMoE 2B的性能几乎接近具有相等参数数量的密集对应物,这为MoE语言模型设定了严格的上限。为了获得更深入的见解,对DeepSeekMoE进行了精心的消融研究和专家专业化分析。这些研究验证了细粒度专家细分和共享专家隔离的有效性,并提供了支持DeepSeekMoE可以实现高水平专家专业化的经验证据。
将模型参数扩大到16B,并在包含2T个标记的大规模语料上训练DeepSeekMoE 16B。评估结果显示,与仅使用约40%的计算量,DeepSeekMoE 16B达到与在相同2T语料上训练的密集模型DeepSeek 7B相当的性能。
还将DeepSeekMoE与开源模型进行了比较,评估结果表明,DeepSeekMoE 16B始终以大幅度超过参数数量相近的模型,并与LLaMA2 7B的性能相当,后者的激活参数数约为前者的2.5倍。图1展示了在Open LLM Leaderboard1上的评估结果。
另外,论文进行了监督微调(SFT)用于对齐,将模型转换为聊天模型。评估结果显示,在聊天设置中,DeepSeekMoE Chat 16B也取得了与DeepSeek Chat 7B和LLaMA2 SFT 7B相当的性能。这些结果鼓舞我们进一步进行扩展DeepSeekMoE到145B的初步尝试。实验结果仍然一致验证了其相对于GShard架构的重大优势。此外,它显示了与DeepSeek 67B相当的性能,仅使用28.5%(可能甚至只有18.2%)的计算量。
Table 1 | 验证实验的评估结果。粗体字表示最佳结果。与其他MoE架构相比,DeepSeekMoE表现出明显的性能优势
Table 2 | DeepSeekMoE、更大的GShard模型和更大的dense模型之间的比较。在“#专家”一行中,𝑎 + 𝑏表示𝑎个共享专家和𝑏个路由专家。在“#激活专家”一行中,𝑎 + 𝑏表示𝑎个激活的共享专家和𝑏个激活的路由专家。DeepSeekMoE在性能上与包含1.5倍专家参数和计算的GShard模型相媲美。此外,DeepSeekMoE几乎接近具有16倍FFN参数的dense模型的性能,这在模型容量方面为MoE模型设定了上限
Figure 3 | DeepSeekMoE的消融研究。为清晰展示,性能经过归一化处理。所有比较的模型具有相同数量的参数和激活参数。我们可以看到,精细的专家细分和共享专家隔离都有助于更强大的整体性能
Figure 4 | 关于禁用顶级路由专家比例的Pile损失。值得注意的是,DeepSeekMoE对禁用顶级路由专家比例的敏感性更大,表明DeepSeekMoE中路由专家之间的冗余较低
Table 3 | DeepSeek 7B和DeepSeekMoE 16B之间的比较。粗体字表示最佳或接近最佳。仅占40.5%的计算量,DeepSeekMoE 16B在性能上与DeepSeek 7B相媲美
Table 4 | LLaMA2 7B和DeepSeekMoE 16B之间的比较。仅占39.6%的计算量,DeepSeekMoE 16B在大多数基准测试上胜过LLaMA2 7B
Table 5 | LLaMA2 SFT 7B、DeepSeek Chat 7B和DeepSeekMoE Chat 16B之间的比较,这三个模型都在相同的SFT数据上进行了微调。与两个7B dense模型相比,DeepSeekMoE Chat 16B在大多数基准测试上仍然在仅占40%的计算量下达到相当或更好的性能
Table 6 | DeepSeek 67B(Dense)和约140B总参数规模的MoE模型之间的比较。在“#专家”和“#激活专家”一行中,𝑎 + 𝑏分别表示𝑎个共享专家和𝑏个路由专家。粗体字表示最佳或接近最佳的性能,最后一列除外。DeepSeekMoE 145B,甚至仅有一半激活专家参数的DeepSeekMoE 142B在性能上大大优于GShard 137B。此外,以28.5%的计算量,DeepSeekMoE 145B在性能上与DeepSeek 67B相媲美
论文贡献总结如下:
-
架构创新。我提出了DeepSeekMoE,这是一种创新性的MoE架构,旨在实现终极的专家特化,它采用细粒度专家分割和共享专家隔离两种主要策略。
-
经验证明进行了广泛的实验来经验证实DeepSeekMoE架构的有效性。实验结果验证了DeepSeekMoE 2B中的高水平专家特化,并表明DeepSeekMoE 2B几乎可以接近MoE模型的上限性能。
-
可扩展性。将DeepSeekMoE扩大到训练一个160亿参数的模型,并展示仅使用约40%的计算量,DeepSeekMoE 16B就达到了DeepSeek 7B和LLaMA2 7B的可比性能。我们还进行了将DeepSeekMoE扩大到1450亿的参数的初步尝试,突出了其相对于GShard架构的持续优势,并展示了与DeepSeek 67B可比的性能。
-
MoE的对齐。成功地对DeepSeekMoE 16B进行了监督微调来创建对齐的聊天模型,展示了DeepSeekMoE 16B的适应性和通用性。
-
公开发布。向公众发布了DeepSeekMoE 16B的模型checkpoint。值得注意的是,这个模型可以在不需要量化的情况下在具有40GB内存的单GPU上部署。
论文标题:DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models
论文链接:https://arxiv.org/pdf/2401.06066.pdf
相关文章:

DeepSeekMoE:迈向混合专家语言模型的终极专业化
一、结论写在前面 论文提出了MoE语言模型的DeepSeekMoE架构,目的是实现终极的专家专业化(expert specialization)。通过细粒度的专家分割和共享专家隔离,DeepSeekMoE相比主流的MoE架构实现了显著更高的专家专业化和性能。从较小的2B参数规模开始&#x…...

什么是Maxscript?为什么要学习Maxscript?
MAXScript是Autodesk 3ds Max的内置脚本语言,它是一种与3dsMax对话并使3dsMax执行某些操作的编程语言。它是一种脚本语言,这意味着您不需要编译代码即可运行。通过使用一系列基于文本的命令而不是使用UI操作,您可以完成许多使用UI操作无法完成的任务。 Maxscript是一种专有…...

HyperLogLog 近似累计去重技术解析:大数据场景下的高效基数统计
目录 引言 一、HyperLogLog 核心原理 1.1 算法思想 1.2 误差特性 二、SQL 实现详解(PostgreSQL 示例)...

LabVIEW透镜多参数自动检测系统
在现代制造业中,提升产品质量检测的自动化水平是提高生产效率和准确性的关键。本文介绍了一个基于LabVIEW的透镜多参数自动检测系统,该系统能够在单一工位上完成透镜的多项质量参数检测,并实现透镜的自动搬运与分选,极大地提升了检…...

MySQL数据库(二)- SQL
目录 编辑 一 DDL (一 数据库操作 1 查询-数据库(所有/当前) 2 创建-数据库 3 删除-数据库 4 使用-数据库 (二 表操作 1 创建-表结构 2 查询-所有表结构名称 3 查询-表结构内容 4 查询-建表语句 5 添加-字段名数据类型 6 修改-字段数据类…...

【Block总结】HiLo注意力,局部自注意力捕获细粒度的高频信息,通过全局注意力捕获低频信息|即插即用
一、论文信息 标题: Fast Vision Transformers with HiLo AttentionGitHub链接: https://github.com/ziplab/LITv2论文链接: arXiv 二、创新点 HiLo注意力机制: 本文提出了一种新的自注意力机制——HiLo注意力,旨在同时捕捉图像中的高频和低频特征。该机制通过将…...

python 使用Whisper模型进行语音翻译
目录 一、Whisper 是什么? 二、Whisper 的基本命令行用法 三、代码实践 四、是否保留Token标记 五、翻译长度问题 六、性能分析 一、Whisper 是什么? Whisper 是由 OpenAI 开源的一个自动语音识别(Automatic Speech Recognition, ASR)系统。它的主要特点是: 多语言…...

C# Winform enter键怎么去关联button
1.关联按钮上的Key事件按钮上的keypress,keydown,keyup事件随便一个即可private void textBox1_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode Keys.Enter){this.textBox2.Focus();}}2.窗体上的事件private void textBox2_KeyPress(object sen…...

Github 2025-01-30 Go开源项目日报 Top10
根据Github Trendings的统计,今日(2025-01-30统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Ollama: 本地大型语言模型设置与运行 创建周期:248 天开发语言:Go协议类型:MIT LicenseStar数量:42421 个Fork数量:2724 次关注人…...

电路研究9.2.6——合宙Air780EP中HTTP——HTTP GET 相关命令使用方法研究
这个也是一种协议类型: 14.16 使用方法举例 根据之前多种类似的协议的相关信息: HTTP/HTTPS:超文本传输协议(HTTP)用于Web数据的传输,而HTTPS是HTTP的安全版本,使用SSL/TLS进行加密。与FTP相比&…...

Java手写简单Merkle树
Java手写Merkle树代码 package com.blockchain.qgy.component;import com.blockchain.qgy.model.MerkleTreeNode; import com.blockchain.qgy.util.SHAUtil;import java.util.*;public class MerkleTree<T> {//merkle树private List<MerkleTreeNode<T>> lis…...

DeepSeek的使用技巧介绍
DeepSeek是一款由杭州深度求索人工智能技术有限公司开发的AI工具,结合了自然语言处理和深度学习技术,能够完成多种任务,如知识问答、数据分析、文案创作、代码开发等。以下将从使用技巧、核心功能及注意事项等方面详细介绍DeepSeek的使用方法…...

19 压测和常用的接口优化方案
高并发的平台应用,项目上线前离不开一个重要步骤就是压测,压测对于编码中的资源是否问题的排查,性能的调优都是离不开的。测试还要做测试报告,出具了测试报告给到运维团队才能上线。 压测的测试报告主要有以下几个方面:1.响应时间…...

AI应用部署——streamlit
如何把项目部署到一个具有公网ip地址的服务器上,让他人看到? 可以利用 streamlit 的社区云免费部署 1、生成requirements.txt文件 终端输入pip freeze > requirements.txt即可 requirements.txt里既包括自己安装过的库,也包括这些库的…...

NLP自然语言处理通识
目录 ELMO 一、ELMo的核心设计理念 1. 静态词向量的局限性 2. 动态上下文嵌入的核心思想 3. 层次化特征提取 二、ELMo的模型结构与技术逻辑 1. 双向语言模型(BiLM) 2. 多层LSTM的层次化表示 三、ELMo的运行过程 1. 预训练阶段 2. 下游任务微调 四、ELMo的…...

C++ 6
C构造函数有几种,分别什么作用 在C中,构造函数有几种不同的类型,每种都有其特定的作用: 默认构造函数:没有参数的构造函数,用于创建对象的默认实例。参数化构造函数:带参数的构造函数…...

使用QSqlQueryModel创建交替背景色的表格模型
class UserModel(QSqlQueryModel):def __init__(self):super().__init__()self._query "SELECT name, age FROM users"self.refresh()def refresh(self):self.setQuery(self._query)# 重新定义data()方法def data(self, index, role): if role Qt.BackgroundRole…...

jinfo命令详解
jinfo [option]option 有以下这些选项参数 -flag : 打印 指定名称的 jvm 参数值;-flag [|-] : 启动或禁用指定名称的 jvm参数;-flag : 设置指定名称的 jvm 参数值;-sysprops: 打印 java 系统属性-h | -help: 打印 jinfo 命令帮助信息 1&…...

如何在 ACP 中建模复合罐
概括 本篇博文介绍了 ANSYS Composite PrepPost (ACP) 缠绕向导。此工具允许仅使用几个条目自动定义高压罐中常见的悬垂复合结构。 ACP 绕线向导 将必要的信息输入到绕组向导中。重要的是要注意“参考半径”,它代表圆柱截面的半径,以及“轴向”&#x…...

【Java】微服务找不到问题记录can not find user-service
一、问题描述 运行网关微服务与用户微服务后,nacos服务成功注册 但是测试接口的时候网关没有找到相关服务 二、解决方案 我先检查了pom文件确定没问题后查看配置文件 最后发现是配置里spring.application.namexxx-user里面服务的名字后面多了一个空格 三、总结…...

基于Hutool的Merkle树hash值生成工具
SHAUtil工具 package com.blockchain.qgy.util;import com.xiaoleilu.hutool.crypto.digest.DigestUtil; import org.apache.commons.codec.binary.Hex;import java.nio.charset.StandardCharsets; import java.security.MessageDigest;/**** 生成SHA-256的工具** author QGY*…...

Windows系统本地部署deepseek 更改目录
本地部署deepseek 无论是mac还是windows系统本地部署deepseek或者其他模型的命令和步骤是一样的。 可以看: 本地部署deepsek 无论是ollama还是部署LLM时候都默认是系统磁盘,对于Windows系统,我们一般不把应用放到系统盘(C:)而是…...

深度学习篇---数据存储类型
文章目录 前言第一部分:C语言中的数据存储类型1. char(通常是8位)优点缺点 2. short(通常是16位)优点缺点 3. int(通常是32位)优点缺点 4. long(通常是32位或64位)优点缺…...

可被electron等调用的Qt截图-录屏工具【源码开放】
1. 工具功能简介: (1)、QT5.15.2截图工具(exe)可单独使用或嵌入IM(嵌入方法参照:https://gitee.com/lykiao/yfscreenshot_release) (2)、支持通过Windows消息通知截图成功或取消 (3)、支持圆形、矩形、线条…...

electron 应用开发实践
参考链接: https://blog.csdn.net/2401_83384536/article/details/140549279...

openssl 生成证书 windows导入证书
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...

程序员学英文之At the Airport Customs
Dialogue-1 Making Airline Reservation预定机票 My cousin works for Xiamen Airlines. 我表哥在厦航上班。I’d like to book an air ticket. 我想预定一张机票。Don’t judge a book by its cover. 不要以貌取人。I’d like to book / re-serve a table for 10. 我想预定一…...

字节iOS面试经验分享:HTTP与网络编程
字节iOS面试经验分享:HTTP与网络编程 🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 目录 字节iOS面试经验分享:HTT…...

游戏引擎 Unity - Unity 启动(下载 Unity Editor、生成 Unity Personal Edition 许可证)
Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...

前端八股CSS:盒模型、CSS权重、+与~选择器、z-index、水平垂直居中、左侧固定,右侧自适应、三栏均分布局
一、盒模型 题目:简述CSS的盒模型 答:盒模型有两种类型,可以通过box-sizing设置 1.标准盒模型(content-box):默认值,宽度和高度只包含内容区域,不包含内边距、边框和外边距。 2.边框盒模型&a…...