DeepSeek大模型技术解析:低成本高效的秘密武器

4

DeepSeek 大模型的技术深度解析:架构、训练与低成本之道

本文深入探讨了 DeepSeek 大模型背后的核心技术,从公司概况、模型能力、训练推理成本,再到关键技术细节进行了全方位的剖析,力求揭示其在 AI 大模型领域的独特之处。

一、DeepSeek 公司及其大模型概况

1.1 公司概况

DeepSeek 成立于 2023 年 7 月,总部位于杭州,是幻方量化旗下的子公司,全称是杭州深度求索人工智能基础技术研究有限公司。这家成立仅一年多的公司,凭借其卓越的大模型技术,迅速在行业内崭露头角。其最新推出的 V3 模型,性能直逼 OpenAI 的 GPT-4o,而训练成本却远低于行业平均水平,API 定价更是极具竞争力,其 APP 也在各大应用商店名列前茅,引发了广泛关注。

从 DeepSeek 官网可以了解到,该公司在近半年内陆续推出了 DeepSeek V2.5、DeepSeek V3 和 DeepSeek-R1 等多个大模型版本,这些模型均采用了 MoE(Mixture of Experts)架构。此外,DeepSeek 还推出了 DeepSeek-VL、DeepSeek Coder 和 DeepSeek Math 等专门用途的模型,进一步拓展其在大模型领域的应用。

1.2 模型能力

DeepSeek 的目标是与国内的 Qwen、以及海外的 Llama、GPT-4o 等顶尖模型相媲美。从已公布的榜单评测来看,DeepSeek-V3 在开源模型中名列前茅,性能已与世界领先的闭源模型不相上下。

DeepSeek-V3 性能评测

1.3 训练推理成本

DeepSeek 在降低推理和训练成本方面取得了显著成果。

  • 推理成本 (API 报价):百万 Token 输入的价格仅为 1 元人民币,远低于国内其他头部厂商。
  • 训练成本:根据技术报告显示,DeepSeek 使用 H800 GPU 进行了训练,且仅使用了约 2000 张 H800 GPU,整个 V3 模型的正式训练成本不超过 600 万美元。

技术报告还披露了以下数据:

  • 预训练阶段,每万亿 Token 的 V3 模型训练使用 2048 个 H800 GPU 集群,仅需 180K 个 H800 GPU 小时,约 3.7 天 (180000/2048/24)。
  • 整个预训练总耗时 2664K GPU 小时(不到 2 个月),加上上下文扩展和后训练,总耗时约为 2788K GPU 小时。
  • 按照 H800 每小时 2 美元的租赁价格计算,总的训练成本不超过 600 万美元。

DeepSeek-V3 Technical Report 公布的这些数据引发了一系列问题:DeepSeek 究竟采用了什么样的网络架构?其训练精度、框架和并行策略是怎样的?模型的部署和优化方案又是什么?在硬件层的计算和通信上做了哪些优化?

二、DeepSeek 训练推理核心技术

2.1 DeepSeek-V3 模型网络架构

DeepSeekV3 整体预训练使用了 14.8 万亿的高质量 Token,并在后期进行了 SFT(Supervised Fine-tuning)和 RL(Reinforcement Learning),模型参数量达到了 671B,但每个 Token 仅激活 37B 参数。为了实现高效的推理和训练,DeepSeekV3 自研了 MLA(Multi-head Latent Attention)注意力机制和无辅助损失负载均衡策略的 MoE 架构。

从技术报告可以看出,DeepSeek-V3 采用了经典的 Transformer 架构,其中前馈网络使用了 DeepSeekMoE 架构,Attention 机制使用了 MLA 架构。事实上,这两种架构已经在 DeepSeekV2 模型中得到了验证和应用。

与 DeepSeek-V2 相比,V3 额外引入了一种无辅助损失的负载均衡策略,用于 DeepSeekMoE,以减轻因需要保证 Expert 负载均衡而导致的性能下降。

2.1.1 DeepSeekMoE

GShard 架构率先将 MoE 架构引入 Transformer 网络。与传统大模型架构相比,MoE 架构在数据流转过程中集成了一个专家网络层。

传统的 MoE 架构主要由两部分组成:Gating 门控网络和稀疏 MoE 层。

  • 稀疏 MoE 层:这些层取代了传统 Transformer 模型中的前馈网络 (FFN) 层。MoE 层包含若干“专家”(例如 8 个),每个专家本身是一个独立的神经网络。在实际应用中,这些专家通常是前馈网络 (FFN),但它们也可以是更复杂的网络结构,甚至可以是 MoE 层本身,从而形成层级式的 MoE 结构。
  • 门控网络或路由:这个部分用于决定哪些 Token 被发送到哪个专家。Token 的路由方式是 MoE 使用中的一个关键点,因为路由器由学习的参数组成,并且与网络的其他部分一同进行预训练。

与传统的 MoE 架构相比,DeepSeekMoE 使用更细粒度的专家,并将一些专家隔离为共享专家,从而减少专家间的知识冗余。

在门控网络路由策略方面,TopK 表示第 t 个 Token 和所有路由专家计算出的亲和力分数中 K 个最高分数的集合。在 DeepSeekV3 中,使用 sigmoid 函数计算亲和力分数,然后在所有选择的亲和力分数中应用归一化来生成门控值。

通常,在 MoE 模型的训练过程中,不同专家因为路由策略的因素会导致接收的训练数据分布不均。例如,所有的 Token 都被发送到只有少数几个受欢迎的专家,那么有些专家就可能没有被训练到。

业界通用的解决方案是引入辅助损失,但是,过大的辅助损失有时会损害模型性能。

为了在负载均衡和模型性能之间取得更好的平衡,DeepSeek 开创了一种无辅助损失的负载均衡策略:为每个专家引入一个偏差项,并将其添加到相应的亲和力分数中以确定 top-K 路由。具体来说:如果其对应的专家过载,则将偏差项减少 γ;如果其对应的专家负载不足,则将偏差项增加 γ,其中 γ 是一个称为偏差更新速度的超参数。

门控网络本质上就是一个 softmax 叠加一个分类网络,那么辅助 loss 往往就是添加一个惩罚项,对输出过大的 logits 进行惩罚,鼓励模型生成更加适度的 logits 值,防止模型生成过于极端的输出。

2.1.2 MLA 多头潜在注意力

在大模型推理过程中,KV Cache 机制通常是限制推理效率的一大瓶颈。标准的 Transformer 架构里面的 MHA 架构会产生大量的 KV Cache。为了减少对应的 KV Cache,业界实践过很多方案,例如 PagedAttention、多查询注意力(MQA)和分组查询注意力(GQA),但这些方案的性能相比原生的 MHA 仍有一定差距。

DeepSeek-V2 提出了一种创新的注意力机制:多头潜在注意力(MLA)。

相比 MQA 的 KV 共用和 GQA 的 KV 分组,MLA 的核心是注意力键和值的低秩联合压缩,以减少推理过程中的键值 (KV) 缓存。相比 MHA,MLA 具有更好的性能,但需要的 KV 缓存量要少得多。

低秩矩阵是指其秩(rank)远小于其行数和列数的矩阵。 假设我们有一个矩阵,其实际结构允许它被分解为两个较小的矩阵的乘积。这种情况通常意味着原矩阵是低秩的。 假设我们有一个4×5的矩阵A,这个矩阵可以通过两个更小的矩阵的乘积来表示,比如一个4×2的矩阵B和一个2×5的矩阵C。这意味着原始矩阵A的信息可以通过这两个较小的矩阵来捕捉,表明A是一个低秩矩阵。

低秩压缩计算核心过程:

MLA 低秩压缩计算

MLA 低秩压缩计算公式

MLA 计算过程

这里的表示第 t 个 Token 的输入,表示 KV 的向下投影矩阵,将做降维压缩表示,实际得到就是要缓存的 KV 压缩隐向量;是向上做升维的投影矩阵,将 Token 的压缩隐向量复原为原始 KV 矩阵;

MLA 模块架构图

具体的 Attention 计算推导过程可以参考:MLA 的推导细节

2.2 训练推理核心技术

2.2.1 训练框架 HAI-LLM

DeepSeek-V3 在一个配备了 2048 个 NVIDIA H800 GPU 的集群上进行训练,使用的是自研的 HAI-LLM 框架。该框架实现了四种并行训练方式:ZeRO 支持的数据并行、流水线并行、张量切片模型并行和序列并行。

这种并行能力支持不同工作负载的需求,可以支持数万亿规模的超大模型并扩展到数千个 GPU。同时,DeepSeek 还自研了一些配套的高性能算子 haiscale,可以帮助 HAI-LLM 极大优化大模型训练的显存效率和计算效率。

2.2.2 核心算法 DualPipe-创新流水线并行算法

i. 通信计算重叠优化

DeepSeek-V3 应用了 16 路流水线并行(PP),跨越 8 个节点的 64 路专家并行(EP),以及 ZeRO-1 数据并行(DP)。

与现有的流水线并行方法相比,DualPipe 的流水线气泡更少。同时,DualPipe 还重叠了前向和后向过程中的计算和通信阶段,解决了跨节点专家并行引入的沉重通信开销的挑战。

DualPipe 的关键思想是重叠一对单独的前向和后向块中的计算和通信:将每个块划分为四个组件:注意力、all-all 调度、MLP 和 all-all 组合。

例如,假设我们有两个计算块,A 和 B:

  1. 在块 A 进行前向传播计算时,可以同时进行块 B 的后向传播通信过程。
  2. 当块 A 完成前向传播计算后,开始它的通信过程;而块 B 则开始它的前向传播计算。

通过优化排列这些功能模块,并精确调控用于通信和计算的 GPU SM 资源分配比例,系统能够在运行过程中有效隐藏全节点通信和 PP 通信开销。

可以看出,DeepSeek 在 PP 这块做了大量的通信计算重叠优化。从技术报告中可以看出,即使是细粒度的 all-all 专家通信,all-all 的通信开销几乎为 0。

  • 计算通信重叠 在深度学习大规模分布式训练过程中,通信的速度往往落后于计算的速度。如何在通信的 gap 期间内并行做一些计算就是高性能计算和通信重叠,是实现高效训练的关键因素。
  • 流水线并行气泡问题 一些大的模型会采用流水线并行策略,将模型的不同层放在不同的 GPU 上,但是不同层之间有依赖关系,后面层需要等前面的计算完才能开始计算,会导致 GPU 在一段时间是闲置的,如下图所示:

ii. 跨节点全对全通信

DeepSeek 还专门定制了高效的跨节点 all-all 通信内核(包括调度和组合)。

具体来说:跨节点 GPU 通过 IB 完全互连,节点内通信通过 NVLink 处理,每个 Token 最多调度到 4 个节点,从而减少 IB 通信量。同时,使用 warp 专业化技术做调度和组合的优化。

在调度过程中,(1) IB 发送,(2) IB 到 NVLink 转发,以及 (3) NVLink 接收分别由各自的 warp 处理。分配给每个通信任务的 warp 数会根据所有 SM 上的实际工作负载动态调整。 在合并过程中,(1) NVLink 发送,(2) NVLink 到 IB 的转发和累积,以及 (3) IB 接收和累积也由动态调整的 warp 处理。

通过这种方式,IB 和 NVLink 的通信实现完全重叠,每个 Token 能够在不产生 NVLink 额外开销的情况下,在每个节点上平均高效选择 3.2 个专家。这意味着,虽然 DeepSeek-V3 实际只选择 8 个路由专家,但它可以将这个数字扩展到最多 13 个专家(4 个节点 × 3.2 个专家/节点),同时保持相同的通信成本。

DSV3 采用了 1 个共享专家和 256 个路由专家的 MoE 架构,每个 token 会激活 8 个路由专家。

2.2.3 用于 FP8 训练的混合精度框架

DeepSeek 并未将全量参数进行 FP8 量化训练,而是选择在大多数计算密集型操作中使用 FP8 精度,而将一些关键操作保留其原始数据格式,以平衡训练效率和数值稳定性。

那么,哪些算子启用了 FP8 量化进行计算?其取舍逻辑是什么?

  • 大多数核心计算过程,即 GEMM 运算,都以 FP8 精度实现。
  • 涉及对低精度计算的敏感性的算子,仍然需要更高的精度。
  • 一些低成本算子也可以使用更高的精度。

以下组件保留了原始精度(例如,BF16 或 FP32):Embedding 模块、输出头、MoE 门控模块、Normalization 算子以及 Attention 算子。

如何提高低精度训练的精度?

  • 细粒度量化

对激活,在 token 维度采用 group-wise 的量化 (1128);对权重,采用 128 128 的 block-wise 量化。

  • 提高累加精度

在 TensorCore 上执行矩阵 MMA(矩阵乘法累加)操作时,每当累加达到一个间隔时,这些部分结果会被传输到 CUDA Cores 上的 FP32 寄存器中,并在那里进行 FP32 精度的累加计算。

2.2.4 MTP 的训练目标

DeepSeekV3 训练过程设置了多 Token 预测的目标。从技术报告的消融实验可以看出,这种做法确实提高了模型在大多数评估基准上的性能,而且 MTP 模块还可以用于推理加速。

2.2.5 推理部署方案

DeepSeek-V3 整体参数量达到了 671B,如此庞大的参数量,其部署方案如何呢?

DeepSeek 的推理部署采用了预填充 (Prefilling) 和解码 (Decoding) 分离的策略,确保了在线服务的高吞吐量和低延迟。通过冗余专家部署和动态路由策略,模型在推理时保持了高效的负载均衡。

整套部署方案基本是跨机分布式推理。

2.2.5.1 Prefill 阶段

这个阶段简单来说就是并行处理用户的 Prompt,将其转为 KV Cache。

预填充阶段的最小部署单元由 4 个节点组成,每个节点配备 32 个 GPU。注意力部分采用 4 路张量并行(TP4)和序列并行(SP),并结合 8 路数据并行(DP8)。其较小的 TP 规模(4 路)限制了 TP 通信的开销。对于 MoE 部分,我们使用 32 路专家并行(EP32)。

2.2.5.2 Decoder 阶段

这个阶段就是做自回归的每个 Token 的输出。

解码阶段的最小部署单元由 40 个节点和 320 个 GPU 组成。注意力部分采用 TP4 和 SP,结合 DP80,而 MoE 部分使用 EP320。对于 MoE 部分,每个 GPU 只承载一个专家,64 个 GPU 负责承载冗余专家和共享专家。

总结:为什么 DeepSeekV3 训练成本这么低?

训练成本主要由模型架构以及训练架构所决定,而且两者一定是相辅相成的。从报告中可以看出以下几个原因:

I. MLA 机制:通过对 KV 做联合低秩压缩大幅减少 KV Cache,相比业界从 KV 数量角度做 KV Cache 的减少,MLA 的压缩实现很考验研究团队的基本功。

II. FP8 训练:通过低精度计算减少了 GPU 内存使用和计算开销,技术报告中也提到 FP8 混合精度训练框架是首次在一个极大规模的模型上验证了其有效性,这一点也看出 DeepSeek 的 Infra 工程团队的底蕴。

III. MoE 架构:通过 MoE 稀疏激活机制大幅减少了计算量,相比 Qwen 和 Llama 的 Dense 架构有很大的训练推理先天优势,不过难题 (专家的负载、通信、路由) 也给到了 Infra 工程团队。

三、为什么是 DeepSeek?

在硅谷,类似 DeepSeek 这样的 AI 创新并不少见,只是这次是一家中国公司做出了这个动作,相比传统的‘美国创新、中国应用’的模式显得格外的让人兴奋。

从最近的一些访谈以及 DeepSeek 的技术报告中也能看出以下几点:

1、大模型是一个知识密集型产业,如何组织高密度人才?显然 DeepSeek 做到了。

2、大模型技术没有魔法,更多时候就是考验基本功和驱动力。

3、不以商业化为第一要义,很多时候能轻装上阵。

四、一些个人思考

1、长远来看,后续可能会有专门的适配 Transformer 架构的芯片,就像为卷积设计了 ASIC 芯片。

2、多 Token 预测、MoE 架构可能很长一段时间都是大模型训练推理架构的热门研究方向。

3、在国内做 AI,应用始终会比基础研究有市场,更有话语权,但是基础创新和海外的代际差距会越来越小。

4、大模型训练和推理,软硬件是一个协同的生态,DeepSeek 的出现将会促进 AI 全行业的更加快速且低成本的迭代。

5、时间比较仓促,很多技术细节问题值得学习深究。