1. DeepSpeed 3D并行技术概述
第一次听说DeepSpeed 3D并行技术时,我正被一个百亿参数模型的训练问题困扰。当时单卡显存根本装不下整个模型,多卡数据并行又遇到了严重的通信瓶颈。直到尝试了DeepSpeed的3D并行方案,才真正解决了这个难题。
DeepSpeed 3D并行本质上是一种"分而治之"的分布式训练策略。想象一下,你要处理一个巨型披萨(千亿参数模型),一个人吃不完(单卡显存不足),直接分给几个人各自吃完整披萨(数据并行)又太浪费。3D并行的做法是:先把披萨切成几层(流水线并行),每层再切成小块(张量并行),最后让多组人同时处理不同批次的披萨(数据并行)。这种三维切分方式,让超大规模模型训练成为可能。
在实际项目中,我发现3D并行最惊艳的地方在于它的灵活性。去年训练一个175B参数的类GPT-3模型时,我们团队尝试了多种配置组合:
- 纯数据并行:直接OOM(显存不足)
- 数据+模型并行:显存够了但计算效率低下
- 3D并行(DP=8, TP=4, PP=4):最终稳定运行,GPU利用率保持在75%以上
2. 3D并行的三大支柱技术
2.1 数据并行(DP)的进化:ZeRO优化器
传统数据并行就像让每个工人复制完整的生产线。我在早期项目中用PyTorch DDP时就发现,当模型超过10亿参数时,每个GPU上重复存储的优化器状态会吃掉大量显存。
DeepSpeed的ZeRO(零冗余优化器)彻底改变了这个局面。它像精明的仓库管理员,把优化器状态、梯度和参数分区域存放。具体来说:
- ZeRO-1:只分区优化器状态,节省4倍内存
- ZeRO-2:额外分区梯度,节省8倍内存
- ZeRO-3:全参数分区,节省内存与GPU数量成正比
实测案例:在32卡A100上训练13B模型时,ZeRO-3将单卡显存从48GB降到了惊人的9GB。配置示例:
{
"zero_optimization"


2282

被折叠的 条评论
为什么被折叠?



