MoE新范式?解析DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models24

摘要

在大型语言模型时代,混合专家(Mixture-of-Experts, MoE)架构是一种有前途的架构,用于在扩展模型参数时管理计算成本。然而,传统的MoE架构如GShard,激活前𝐾个专家中的𝑁个,面临着确保专家专业化的问题,即每个专家获得非重叠且专注的知识。为此,我们提出了DeepSeekMoE架构,旨在实现最终的专家专业化。它涉及两个主要策略:
(1)将专家精细划分为𝑚𝑁个,并从中激活𝑚𝐾个,从而实现更灵活的激活专家组合;
(2)隔离𝐾𝑠个专家作为共享专家,旨在捕捉共同知识并减少路由专家的冗余。
从2B参数的适度规模开始,我们展示了DeepSeekMoE 2B在性能上与拥有1.5倍专家参数和计算量的GShard 2.9B相当。此外,DeepSeekMoE 2B几乎接近其密集对应模型在相同总参数数量下的性能,这为MoE模型设定了上限。随后,我们将DeepSeekMoE扩展到16B参数,并显示其性能与LLaMA2 7B相当,仅使用了约40%的计算量。进一步,我们初步将DeepSeekMoE扩展到145B参数,并持续验证其相对于GShard架构的显著优势,并显示其性能与DeepSeek 67B相当,仅使用了28.5%(甚至可能18.2%)的计算量。

1. 介绍

最近的研究和实践经验表明,在有足够训练数据的情况下,通过增加参数和计算预算来扩展语言模型可以显著提升模型性能。然而,必须承认,将模型扩展到极大规模的努力也伴随着极高的计算成本。考虑到这些高昂的成本,混合专家(Mixture-of-Experts, MoE)架构已成为一种流行的解决方案。它能够在保持计算成本适中的同时,实现参数扩展。最近在Transformer中应用MoE架构的成功尝试,已经将语言模型扩展到相当大的规模,并取得了显著的性能提升。这些成就突显了MoE语言模型巨大的潜力和前景。

尽管MoE架构具有巨大的潜力,但现有的MoE架构可能存在知识混合和知识冗余的问题,这限制了专家的专业化,即每个专家获得非重叠且专注的知识。传统的MoE架构用MoE层替代Transformer中的前馈网络(FFN)。每个MoE层由多个专家组成,每个专家在结构上与标准FFN相同,每个token被分配给一个或两个专家。这种架构存在两个潜在问题:(1)知识混合:现有的MoE实践通常使用有限数量的专家(例如,8或16),因此分配给特定专家的token可能会涵盖多种知识。因此,指定专家将试图在其参数中整合大量不同类型的知识,这些知识难以同时利用。(2)知识冗余:分配给不同专家的token可能需要共同知识。结果是,多个专家可能会在其各自的参数中收敛于获取共享知识,从而导致专家参数的冗余。这些问题共同阻碍了现有MoE实践中的专家专业化,阻止它们达到MoE模型的理论性能上限。

为了解决上述问题,我们引入了DeepSeekMoE,这是一种创新的MoE架构,旨在实现最终的专家专业化。我们的架构涉及两个主要策略:(1)细粒度专家分割:在保持参数数量不变的情况下,我们通过分割FFN中间隐藏维度将专家划分为更细的粒度。相应地,在保持恒定计算成本的同时,我们也激活更多细粒度的专家,以实现更灵活和适应性更强的激活专家组合。细粒度专家分割允许将多样化的知识更精细地分解,并更精确地学习到不同的专家中,每个专家将保持更高水平的专业化。此外,增加激活专家组合的灵活性也有助于更准确和有针对性的知识获取。(2)共享专家隔离:我们将某些专家隔离为始终激活的共享专家,旨在捕捉和整合跨不同上下文的共同知识。通过将共同知识压缩到这些共享专家中,可以减少其他路由专家之间的冗余。这可以提高参数效率,并确保每个路由专家通过专注于独特方面来保持专业化。这些架构创新为训练参数高效的MoE语言模型提供了机会,其中每个专家都高度专业化。

从2B参数的适度规模开始,我们验证了DeepSeekMoE架构的优势。我们在涵盖多种任务的12个零样本或少样本基准上进行了评估。实证结果表明,DeepSeekMoE 2B大幅超越了GShard 2B,甚至与拥有1.5倍专家参数和计算量的更大MoE模型GShard 2.9B相当。值得注意的是,我们发现DeepSeekMoE 2B几乎接近其密集对应模型在相同参数数量下的性能,这为MoE语言模型设定了严格的性能上限。为了深入了解,我们对DeepSeekMoE进行了详细的消融研究和分析,验证了细粒度专家分割和共享专家隔离的有效性,并提供了实证证据支持DeepSeekMoE能够实现高水平的专家专业化。

利用我们的架构,我们随后将模型参数扩展到16B,并在包含2T token的大规模语料库上训练DeepSeekMoE 16B。评估结果显示,仅使用约40%的计算量,DeepSeekMoE 16B的性能与在相同2T语料库上训练的密集模型DeepSeek 7B相当。我们还与开源模型进行了比较,评估结果表明,DeepSeekMoE 16B在激活参数数量相似的模型中持续大幅领先,并实现了与LLaMA2 7B相当的性能,后者激活参数数量约为前者的2.5倍。图1展示了在Open LLM Leaderboard上的评估结果。此外,我们还进行了有监督微调(SFT)以实现对齐,将模型转化为聊天模型。评估结果显示,DeepSeekMoE Chat 16B在聊天设置中也实现了与DeepSeek Chat 7B和LLaMA2 SFT 7B相当的性能。受到这些结果的鼓舞,我们进一步进行了将DeepSeekMoE扩展到145B的初步努力。实验结果仍然验证了其相对于GShard架构的显著优势,并显示其性能与DeepSeek 67B相当,仅使用了28.5%(甚至可能18.2%)的计算量。

我们的贡献总结如下:
• 架构创新。我们引入了DeepSeekMoE,这是一种旨在实现最终专家专业化的创新MoE架构,采用了细粒度专家分割和共享专家隔离两个主要策略。
• 实证验证。我们进行了广泛的实验,以实证验证DeepSeekMoE架构的有效性。实验结果验证了DeepSeekMoE 2B中高水平专家专业化的有效性,并表明DeepSeekMoE 2B几乎接近MoE模型的性能上限。
• 可扩展性。我们将DeepSeekMoE扩展到训练16B模型,并显示仅使用约40%的计算量,DeepSeekMoE 16B的性能与DeepSeek 7B和LLaMA2 7B相当。我们还进行了将DeepSeekMoE扩展到145B的初步努力,突显了其相对于GShard架构的持续优势,并显示其性能与DeepSeek 67B相当。
• 对齐MoE。我们成功地对DeepSeekMoE 16B进行了有监督微调,创建了一个对齐的聊天模型,展示了DeepSeekMoE 16B的适应性和多功能性。
• 公开发布。本着开放研究的精神,我们将DeepSeekMoE 16B的模型检查点公开发布。值得注意的是,该模型可以在单个40GB内存的GPU上部署,无需量化。

2. 前置知识:Transformers架构下的MoE

以下是所给内容的翻译,已去除引用部分,并使用适合CSDN识别的公式格式:


首先,我们介绍一种在Transformer语言模型中常用的通用MoE(Mixture of Experts,专家混合)架构。一个标准的Transformer语言模型是通过堆叠 L L L层标准的Transformer块构建的,每个块可以表示如下:

u 1 : T l = Self-Att ( h 1 : T l − 1 ) + h 1 : T l − 1 \mathbf{u}_{1:T}^{l} = \text{Self-Att}\left( \mathbf{h}_{1:T}^{l-1} \right) + \mathbf{h}_{1:T}^{l-1} u1:Tl=Self-Att(h1:Tl1)+h1:Tl1

h t l = FFN ( u t l ) + u t l \mathbf{h}_{t}^{l} = \text{FFN}\left( \mathbf{u}_{t}^{l} \right) + \mathbf{u}_{t}^{l} htl=FFN(utl)+utl

其中, T T T表示序列长度,Self-Att(·) 表示自注意力模块,FFN(·) 表示前馈神经网络 (Feed-Forward Network)。 u 1 : T l ∈ R T × d \mathbf{u}_{1:T}^{l} \in \mathbb{R}^{T \times d} u1:TlRT×d表示经过第 l l l层注意力模块后的所有token的隐藏状态,而 h t l ∈ R d \mathbf{h}_{t}^{l} \in \mathbb{R}^{d} htlRd则是第 l l l层Transformer块中第 t t t个token的输出隐藏状态。为简洁起见,我们在上述公式中省略了层归一化。

一种构建MoE语言模型的典型方法是在Transformer中按照指定的间隔,用MoE层替换FFN层。一个MoE层由多个专家组成,每个专家的结构与标准的FFN层相同。然后,每个token将被分配到一个或两个专家。若将第 l l l层的FFN替换为MoE层,则其输出隐藏状态的计算表示如下:

h t l = ∑ i = 1 N ( g i , t FFN i ( u t l ) ) + u t l \mathbf{h}_{t}^{l} = \sum_{i=1}^{N} \left( g_{i, t} \text{FFN}_{i}\left( \mathbf{u}_{t}^{l} \right) \right) + \mathbf{u}_{t}^{l} htl=i=1N(gi,tFFNi(utl))+utl

g i , t = { s i , t , s i , t ∈ Topk ( { s j , t ∣ 1 ≤ j ≤ N } , K ) 0 , otherwise g_{i, t} = \begin{cases} s_{i, t}, & s_{i, t} \in \text{Topk}\left(\{s_{j, t} | 1 \le j \le N\}, K\right) \\ 0, & \text{otherwise} \end{cases} g

### DeepSeekMoE 实现极致专家专业化 在 Mixture-of-Experts (MoE) 语言模型中,DeepSeekMoE 致力于实现专家的极致专业化。为了达到这一目标,该研究引入了一种颖的方法来处理专家之间的知识共享和隔离问题。 #### 共享专家隔离机制 分配给不同专家的 token 可能需要一些共同的知识,这可能导致多个专家在其参数中收敛于相同的共享知识,进而造成专家参数的冗余[^2]。为了避免这种冗余并提高参数效率,DeepSeekMoE 设计了一个特殊的共享专家子集。这些共享专家始终处于激活状态,负责捕捉和整合跨上下文的通用知识。因此,其他路由专家可以专注于更特定的任务,减少了重复学习的可能性,提升了整体模型性能和资源利用效率。 #### 极致专家专业化策略 除了上述提到的共享专家外,DeepSeekMoE 还采用了多种技术手段促进各领域内专家的专业化程度: - **动态调整门控网络**:通过优化门控函数的设计,使得每个输入样本能够被最合适的少数几个专家处理,而不是平均分布到所有可用专家上; - **自适应训练方案**:根据不同阶段的学习需求灵活改变损失权重以及正则项强度等因素; - **多任务联合训练框架**:鼓励各个专精方向上的专家不仅要在单一目标任务上有出色表现,在辅助任务方面也需具备一定能力,以此增强泛化性和鲁棒性。 ```python def dynamic_gating_network(input_tensor, expert_weights): """ 动态调整门控网络示例 参数: input_tensor: 输入张量 expert_weights: 各位专家对应的权值向量 返回: selected_experts_indices: 被选中的几位专家索引列表 """ scores = tf.matmul(input_tensor, expert_weights) top_k_values, top_k_indices = tf.nn.top_k(scores, k=3) return top_k_indices.numpy().tolist() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青云遮夜雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值