所有文章 > AI驱动 > DeepSeek 技术分析 — (1) 混合专家
DeepSeek 技术分析 — (1) 混合专家

DeepSeek 技术分析 — (1) 混合专家

背景

DeepSeek LLM 模型在不影响准确率的情况下,显著提高了训练成本和推理效率,吸引了大量关注和眼球。作为一名对新技术有着强烈好奇心的工程师,我想揭示几个问题:

  • 1)哪些特殊的技术促成了DeepSeek模型的显著提升?
  • 2)哪些技术是颠覆性创新,哪些技术是工程优化?
  • 3)这种改进是否还有更好的空间?

在开始技术分析之前,我想先对 DeepSeek 的开源精神表示赞赏,分享了如此多的技术资料和有价值的细节。

DeepSeek 模型的基本架构

DeepSeek(v2&v3&r1)模型的基本架构

DeepSeek 沿用了 GPT、LLaMA 和其他 LLM 所使用的 Transformer 架构(如果你不熟悉 Transformer,请参考我的上一篇博客“ Transformer 简明解释:注意力就是你所需要的”)。Transformer 中有L 个堆叠的相同层,每层都有一个 Masked 多头注意力层和一个前馈网络层。对于多头注意力层,DeepSeek(从 V2 开始)采用了低秩键值联合压缩技术来减少 KV 缓存大小(请参考我上一篇 Transformer 博客中关于注意力机制中查询、键和值的概念)。对于前馈网络层,DeepSeek 采用了 Mixture-of-Experts(MoE)技术,通过稀疏计算以经济的成本训练出强大的模型。

在这篇博客中,我将重点关注混合专家 (MoE) 部分。

混合专家(MoE)

利用训练数据和模型规模一直是深度学习成功的关键。当数据集足够大时,增加神经网络的容量(参数数量)可以提高预测准确率。

LLM’s Scaling Law

但随着模型规模的扩大,训练成本和推理成本也会相应增加。因为随着模型参数数量的增加,在训练和推理过程中处理每个 token 所需的激活参数也会增加。

为了扩大模型规模,同时保持训练和推理成本处于恒定水平,ML 中引入了条件计算。超大型神经网络:稀疏门控混合专家层 — 2017 年 1 月,谷歌为其语言模型引入了MoE 层。MoE 的基本思想是将 FFN 分成多个子网络(专家),对于每个输入标记,只有部分子网络(专家)被激活。不同的子网络表现为不同的“专家”,在训练期间,它们从数据集中吸收不同的信息和知识,在推理期间,只有部分专家根据输入标记被激活。

神经网络中的 MoE 层

MoE 层有两个关键组件:门控网络和专家网络。门控网络决定应为输入标记激活哪些“专家”,然后这些专家在训练和推理期间处理输入标记并为下一层生成输出。门控网络将为每个输入标记选择要激活的 TopK 专家,这称为“ TopK 门控”。门控网络和专家网络均通过简单的反向传播进行训练。本文还分享了如何处理不同专家之间的工作量平衡问题、解决批量缩小问题以及其他实际问题的解决方案。

DeepSeekMoE

DeepSeek 从 V2 开始在其 FFN 部分采用了 DeepSeekMoE 层。DeepSeekMoE 是 MoE 的一个变体,有 2 处变化:

  • 将专家细分为N个,并从中激活mK,从而可以更灵活地组合激活专家;
  • 将Ks专家隔离为共享专家,旨在获取共同知识并减轻路由专家的冗余。

DeepSeekMoE:迈向混合专家语言模型的终极专家专业化——2024 年 1 月,本文描述了有关 DeepSeekMoE 的更多细节。

DeepSeekMoE 的架构

本文提到,传统的TopK MoE存在知识混合性知识冗余性知识混合性:现有的MoE实践往往只使用有限数量的专家(如8位或16位),因此分配给特定专家的token可能会涵盖不同的知识。因此,指定的专家会试图在其参数中汇集截然不同类型的知识,这些知识很难同时利用。(2)知识冗余:分配给不同专家的token可能需要共同的知识。因此,多个专家可能会在各自的参数中聚集在一起获取共享知识,从而导致专家参数的冗余。这些问题共同阻碍了现有MoE实践中的专家专业化,使其无法达到MoE模型的理论上限性能。通过细分为更多专家并引入共享专家,DeepSeekMoE缓解了以上两个问题。

上图显示 DeepSeekMoE 16B(带有 DeepSeekMoE 的 DeepSeek V1)实现了与 LLaMa2 7B 相当的性能,但 LLaMA2 7B 的激活参数是其 2.5 倍。

总结

混合专家是一种很好的方法,可以让 LLM 的不同子网络吸收和学习不同领域的知识,模型中的每个参数都针对特定领域高度专业化,并且每个激活的参数都对问题/问题有很高的贡献。这就像我们的大脑如何工作,不同的神经元处理不同的任务。

DeepSeekMoE 架构是否已经将 MoE 的潜力发挥到了极致?论文中说“在约 2B 参数和 100B 训练 token 的规模下,DeepSeekMoE 的性能与 MoE 模型的理论上限非常接近。”这个结论是基于与密集模型(密集模型意味着每个输入 token 都会激活所有模型参数)的比较得出的。我相信存在一种比当前精细分割 + 共享专家 MoE 更高效的 MoE 架构,因为我认为 1)密集模型不是边界;2)目前每个专家的参数数量相同,但不同领域的知识容量和复杂性可能不同,选择相同数量的专家和相同数量的参数来相同地处理这些不同的问题并不是效率最优的方式。我们的大脑使用不同部分的神经元和不同数量的神经元来处理不同类型的任务,随着我们对大脑工作原理的了解越来越多,我认为我们可能会推出更多优化来提高 MoE 的效率。

最后,LLM 效率的提升必将促进 AI 的繁荣。从模型角度来看,将会有更多的公司和组织为 LLM 的改进做出贡献。LLM API 成本的降低将使应用程序受益,我们将看到越来越多的 AI 应用程序出现在不同行业中,帮助我们提高效率并处理知识任务。

#你可能也喜欢这些API文章!