DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model

下载 PDF

DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model - 中文验证版

英文原文卡片:deepseek_v2_2024.md

状态:已翻译。

元数据

  • Slug: deepseek_v2_2024
  • 年份: 2024
  • 发表平台: arXiv
  • 作者: DeepSeek-AI
  • 阅读状态: 已读毕
  • 计算范式: 稀疏化与内存高效扩展 (sparse_memory_efficient_scaling)
  • 主要来源: PDF抽取文本
  • 阅读卡创建日期: 2026-06-15

计算设置

论文明确说明了设备类型和互联方式:实验使用 NVIDIA H800 集群;每个节点 8 块 GPU,通过 NVLink 和 NVSwitch 互联,节点间通过 InfiniBand 通信。训练基于内部 HAI-LLM 框架,采用 16 路零气泡流水线并行、8 路专家并行和 ZeRO-1 数据并行。

模型规模为总参数 236B,每个 token 激活 21B 参数,60 层,隐藏维度 5120,128 个注意力头,支持 128K 上下文。预训练使用 8.1T 个 token。批次大小在前 225B 个 token 期间从 2304 逐步增加到 9216,此后保持 9216,最大序列长度 4K。路由专家部署在 8 个设备上,每个 token 最多发送到 3 个设备。推理在一个 8 卡 H800 节点上报告。

瓶颈

DeepSeek-V2 围绕三个计算瓶颈构建。第一个是自回归推理期间的 KV 缓存内存。标准多头注意力为每一层每个生成的 token 缓存键和值,限制了最大批次大小和序列长度。长上下文使这一问题占主导地位:128K 上下文即使模型权重能放下,也会使缓存占用成倍增长。

这一约束在 DeepSeek-V2 中尤为突出,论文直接给出了缓存公式。236B 总参数的 FP8 存储,在计入运行时缓冲区前约为 236 GB,若均匀分片到 8 卡 GPU 推理节点,每卡约 29.5 GB。标准 MHA 每层缓存 2 * n_h * d_h * l 个元素;MLA 则缓存 (d_c + d_h^R) * l 个元素。以 60 层、d_c + d_h^R = 576、128K 上下文和平均 6 位 KV 存储计算,MLA 缓存在批次为 1 时约 3.4 GB,批次为 64 时约 217 GB(跨节点)。这使得缓存压缩和批次大小成为一级推理约束,而非次要细节。

第二个瓶颈是 MoE 通信。稀疏专家减少了每个 token 的激活参数量,但专家并行将路由专家分散到不同设备上。如果选中的专家跨越多个设备,all-to-all 通信将变得昂贵。细粒度专家分割提高了专业化能力,但也增加了可能的路由专家数量和通信压力。

第三个瓶颈是训练成本和负载均衡。稀疏模型只有在专家使用均匀且通信均衡时才能减少每 token FLOPs。论文警告不均衡的路由可能导致路由坍塌、专家训练不足和计算效率降低。在 H800 集群上,这是一个加速器利用率问题。

方法适配

注意力部分的适配方案是多头潜在注意力(Multi-head Latent Attention,MLA)。MLA 不对每个头分别缓存完整的键和值,而是将键和值联合压缩到一个潜在向量中。论文指出 MHA 每个 token 缓存 2 * n_h * d_h * l 个元素,而 MLA 缓存 (d_c + d_h^R) * l 个元素。对于 DeepSeek-V2,d_c 为 512,解耦的 RoPE 键维度为 64,缓存等效于仅有 2.25 组的 GQA,同时保持了比 MHA 更强的性能。MLA 还使用低秩查询压缩来减少训练激活内存。

前馈部分的适配方案是 DeepSeekMoE。每个 MoE 层有 2 个共享专家和 160 个路由专家,每个 token 激活 6 个路由专家。共享专家处理通用知识,路由专家则进行专业化。模型存储大量总参数,但每个 token 仅激活 21B 参数,使计算量接近较小的稠密模型,同时保留了容量。

系统适配与架构适配同等重要。设备限制路由将每个 token 的专家目标绑定到最多 3 个设备。专家级、设备级和通信均衡损失保持计算与通信的平衡。token 丢弃策略加速了过载设备上的训练,而评估时不丢弃任何 token。基础设施避免了张量并行,因为激活参数相对较少,且部分算子被重计算以节省激活内存。作者还将共享专家计算与 all-to-all 通信重叠,并为通信、路由、融合专家计算和 MLA 定制了 CUDA 内核,基于改进的 FlashAttention-2 实现。

在推理服务方面,该方法延续了内存优先的设计思路。参数转换为 FP8,KV 缓存元素平均量化到 6 位。这使得模型能够服务更大的批次,因为权重和每 token 缓存都消耗更少的内存带宽与容量。

证据

主要对比对象是 DeepSeek 67B。DeepSeek-V2 拥有 236B 总参数但每个 token 仅激活 21B,论文报告其性能更强,同时节省了 42.5% 的训练成本,KV 缓存减少 93.3%,最大生成吞吐量提升至 5.76 倍。在 H800 集群上,DeepSeek 67B 每万亿 token 需要 300.6K GPU 小时,而 DeepSeek-V2 需要 172.8K。

推理证据同样具体。在使用 DeepSeek 67B 服务的 prompt 和生成长度分布进行的部署式评估中,单个 8 卡 H800 节点运行 DeepSeek-V2 可达每秒 50K 以上的生成 token 输出和每秒 100K 以上的 prompt 输入 token 处理。论文将此归因于 MLA、FP8 参数和 KV 缓存量化,这些措施共同使服务能够承载更大的批次。

长上下文证据来自 128K 扩展。论文在解耦的 RoPE 上使用 YaRN,并报告了最高至 128K 的 Needle-in-a-Haystack 测试,DeepSeek-V2 在所有测试长度上表现良好。计算事实是,128K 推理不仅仅是位置编码的问题;它之所以变得可行,是因为 MLA 和低位缓存存储降低了每 token 的内存增长斜率。

能力表格显示稀疏计算结构不仅仅是更便宜。以 21B 激活参数,DeepSeek-V2 被报告处于开源模型的顶级水平,尽管作者承认由于英语 token 较少,相比 LLaMA 3 70B 存在轻微的基础英语差距。

历史影响

DeepSeek-V2 作为一个由系统塑造的 LLM 架构具有历史意义。它将长上下文推理、稀疏专家容量、路由均衡和低位部署视为一个统一的计算结构。早期的 MoE 成果通常强调参数数量;本文则强调激活参数、每 token KV 缓存元素、all-to-all 边界、每万亿 token 的 GPU 小时成本以及节点级吞吐量。这里的经济性缩放意味着同时降低训练 FLOPs 和推理内存流量:MLA 解决每 token 缓存问题,DeepSeekMoE 解决激活 FLOPs 问题,设备限制路由解决集群通信模式问题。

局限

  • 报告的优势依赖于特定的 H800 集群、自定义框架、自定义 CUDA 内核以及计算与通信的精细重叠。
  • MoE 路由仍然对实现敏感;负载不均衡可能降低利用率或破坏专家学习稳定性。
  • 论文自身指出相比 LLaMA 3 70B 存在轻微的基础英语能力差距。
  • 主要的推理吞吐量是在服务所用的 prompt/生成长度分布上测量的,不同长度或批次模式的工作负载可能获得不同的增益。

链接