当前位置: 首页 > news >正文

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

  1. 路由规则与文本的语义主题无关,这意味着专家并不专门精通某一领域的知识。
  2. 路由规则展示出了一定的语法特性,例如,某些关键词经常被分配给同一位专家。
  3. 路由规则还展示了位置的局部性,相邻的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工具&#xff0c;结合了自然语言处理和深度学习技术&#xff0c;能够完成多种任务&#xff0c;如知识问答、数据分析、文案创作、代码开发等。以下将从使用技巧、核心功能及注意事项等方面详细介绍DeepSeek的使用方法…...

19 压测和常用的接口优化方案

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

AI应用部署——streamlit

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

NLP自然语言处理通识

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

C++ 6

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

使用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 参数值&#xff1b;-flag [|-] : 启动或禁用指定名称的 jvm参数&#xff1b;-flag : 设置指定名称的 jvm 参数值&#xff1b;-sysprops: 打印 java 系统属性-h | -help: 打印 jinfo 命令帮助信息 1&…...

如何在 ACP 中建模复合罐

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

【Java】微服务找不到问题记录can not find user-service

一、问题描述 运行网关微服务与用户微服务后&#xff0c;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时候都默认是系统磁盘&#xff0c;对于Windows系统&#xff0c;我们一般不把应用放到系统盘&#xff08;C:&#xff09;而是…...

深度学习篇---数据存储类型

文章目录 前言第一部分&#xff1a;C语言中的数据存储类型1. char&#xff08;通常是8位&#xff09;优点缺点 2. short&#xff08;通常是16位&#xff09;优点缺点 3. int&#xff08;通常是32位&#xff09;优点缺点 4. long&#xff08;通常是32位或64位&#xff09;优点缺…...

可被electron等调用的Qt截图-录屏工具【源码开放】

1. 工具功能简介&#xff1a; (1)、QT5.15.2截图工具&#xff08;exe&#xff09;可单独使用或嵌入IM&#xff08;嵌入方法参照&#xff1a;https://gitee.com/lykiao/yfscreenshot_release&#xff09; (2)、支持通过Windows消息通知截图成功或取消 (3)、支持圆形、矩形、线条…...

electron 应用开发实践

参考链接&#xff1a; https://blog.csdn.net/2401_83384536/article/details/140549279...

openssl 生成证书 windows导入证书

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;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面试经验分享&#xff1a;HTTP与网络编程 &#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 目录 字节iOS面试经验分享&#xff1a;HTT…...

游戏引擎 Unity - Unity 启动(下载 Unity Editor、生成 Unity Personal Edition 许可证)

Unity Unity 首次发布于 2005 年&#xff0c;属于 Unity Technologies Unity 使用的开发技术有&#xff1a;C# Unity 的适用平台&#xff1a;PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域&#xff1a;开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...

前端八股CSS:盒模型、CSS权重、+与~选择器、z-index、水平垂直居中、左侧固定,右侧自适应、三栏均分布局

一、盒模型 题目&#xff1a;简述CSS的盒模型 答&#xff1a;盒模型有两种类型&#xff0c;可以通过box-sizing设置 1.标准盒模型&#xff08;content-box&#xff09;:默认值&#xff0c;宽度和高度只包含内容区域&#xff0c;不包含内边距、边框和外边距。 2.边框盒模型&a…...