问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

DeepSeek模型训练中的GPU内存消耗分析

创作时间:
作者:
@小白创作中心

DeepSeek模型训练中的GPU内存消耗分析

引用
CSDN
1.
https://deepseek.csdn.net/67aea30cc8869b4726b4a1eb.html

在当今的深度学习领域,大规模语言模型(如 GPT、DeepSeek 等)的训练已经成为研究和应用的热点。然而,训练这些模型时面临的最大挑战之一就是 GPU 内存管理。最近,Baichuan-Inc 的研究人员 Ping Zhang 和 Lei Su 发布了一篇论文《Memory Analysis on the Training Course of DeepSeek Models》,详细分析了 DeepSeek-v2 和 DeepSeek-v3 模型在训练过程中的 GPU 内存消耗。这篇文章不仅揭示了影响内存使用的关键因素,还提供了优化内存占用的实用策略。

DeepSeek 模型架构概览

DeepSeek-v3 是一种基于 Transformer 的混合专家模型(Mixture-of-Experts, MoE),其架构包含 61 层,每层包括两个 RMSNorm 操作、一个多头潜在注意力(MLA)模块和一个线性层。与传统的 Transformer 不同,DeepSeek-v3 的大部分层(58 层)采用了 MoE 线性层,这种设计在提高模型性能的同时,也对内存管理提出了更高的要求。

模型参数与内存占用分析

2.1 模型参数统计

DeepSeek-v3 的参数量庞大,总共有约 671B 参数。论文详细分析了每一层的参数分布,并计算了在 FP16/BF16 精度下的内存占用。例如,MLA 模块的参数占用约 11.5GB,而 MoE 部分的参数占用则高达 21.44GB。这些参数的分布和内存占用是理解整个模型内存需求的基础。

2.2 管道并行(Pipeline Parallelism)

为了量化每个 GPU 设备的峰值内存使用量,论文以 PP16(16 路管道并行)为例进行了分析。在这种配置下,每个阶段(Stage)包含 4 层,其中 MLA 和 MoE 模块的参数分布对内存占用影响最大。例如,Stages 1-14 每个阶段的静态参数存储需求为 86GB,这为全局峰值内存需求提供了重要参考。

静态参数分析

静态参数的内存占用主要受三种并行策略的影响:张量并行(Tensor Parallelism, TP)、专家并行(Expert Parallelism, EP)和专家张量并行(Expert Tensor Parallelism, ETP)。论文以 PP16@TP2@EP8@ETP1 的配置为例,详细分析了不同模块的内存占用情况。

3.1 RMSNorm

在 PP16@TP2 配置下,RMSNorm 的参数在所有 TP 排名中都有副本,每个 TP 排名维护 4 层的完整参数。这些参数的总内存占用为 131,072 字节。

3.2 MLA

MLA 模块的参数在 TP 排名中进行了分区,部分参数(如 WUQ、WUK、WUV 和 WO)被分割,而其他参数(如 WDQ、WKR 等)则在每个排名中复制。这种分区策略使得 MLA 模块的内存占用在每个 GPU 上约为 859MB。

3.3 MoE

MoE 模块的内存占用最为显著。每个 EP 排名存储 4 层的 132 个专家(包括共享专家),总参数量为 5,820,645,376,内存占用为 11.64GB。

DeepSpeed ZeRO 优化

为了进一步降低内存占用,论文还探讨了 DeepSpeed ZeRO 的三种优化策略:os(优化器状态分片)、os+g(优化器状态和梯度分片)和 os+g+params(优化器状态、梯度和模型权重分片)。这些策略通过在数据并行组中分片存储,显著减少了每个设备的内存需求。例如,os+g+params 策略将内存占用从 81.54GB 降低到 9.66GB。

激活内存分析

激活内存的占用取决于重计算策略。论文分析了两种情况:无重计算(所有中间激活都存储在内存中)和完全重计算(所有中间激活在反向传播中重新计算)。例如,在 MLA 模块中,无重计算时每层的激活内存占用为 10bsh + 8bs(dcq + dc) + 16bsdh * nh + 8bsdhrnh + 10bnhs²,而完全重计算时每层的内存占用仅为 4bsh。

临时缓冲区和内存碎片

实际训练中,内存碎片化(通常占总分配内存的 5%-30%)和临时通信缓冲区(每设备占用 0.8GB-2GB)也会对内存需求产生影响。这些因素需要在训练分析中加以考虑。

总结

通过对 DeepSeek-v3 模型的深入分析,我们可以看到,大规模 MoE 模型的训练对 GPU 内存管理提出了极高的要求。然而,通过合理的并行策略(如 TP、EP 和 ETP)和优化技术(如 DeepSpeed ZeRO),我们可以在有限的硬件资源上高效地训练这些模型。此外,激活重计算策略的选择也在内存占用和计算开销之间提供了重要的权衡。

如果你对 DeepSeek 模型的训练感兴趣,或者正在寻找优化大规模模型内存占用的方法,这篇论文无疑是一个宝贵的资源。它不仅提供了详细的理论分析,还为实际应用提供了实用的指导。

论文链接:[2502.07846] Memory Analysis on the Training Course of DeepSeek Models

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号