当前位置: 首页 > news >正文

分布式训练(二): DeepSpeed 知识总结

目录

  • 一、DeepSpeed 简介
    • 1.1 核心特性
    • 1.2 典型使用场景
    • 1.3 如果已经有 PP、TP,为什么还需要 DeepSpeed
      • 1.3.1 PP / TP 解决的与未解决的
      • 1.3.2 DeepSpeed 在其中的作用
      • 1.3.3 关键结论
    • 1.4 混合精度训练详解
      • 1.4.1 不同张量的精度分工
      • 1.4.2 训练流程示意
  • 二、ZeRO 原理与阶段对比
    • 2.1 ZeRO 定义
    • 2.2 ZeRO-1:分片优化器状态
    • 2.3 ZeRO-2:分片优化器状态 + 梯度
    • 2.4 ZeRO-3:分片优化器状态 + 梯度 + 参数
    • 2.5 显存对比(以 7.5B 模型、64 卡为例)
    • 2.6 扩展能力
    • 2.7 三个阶段优缺点与使用场景对比
    • 2.8 选择建议
  • 三、DeepSpeed 配置示例
    • 3.1 ZeRO-1 配置
    • 3.2 ZeRO-2 配置(推荐中等规模模型)
    • 3.3 ZeRO-3 配置(大模型)
    • 3.4 配置参数说明
    • 3.5 启动命令

一、DeepSpeed 简介

DeepSpeed 是微软开源的深度学习优化库,主要用于大规模模型训练

1.1 核心特性

  • ZeRO (Zero Redundancy Optimizer):将优化器状态、梯度、参数分片到多个 GPU,大幅降低单卡显存占用,可训练千亿/万亿参数模型
  • 3D 并行:原生支持数据并行 (DP) 与流水线并行 (PP);张量并行 (TP) 主要通过与 Megatron-LM 集成(Megatron-DeepSpeed)实现,从而组合出完整的 3D 并行
  • 混合精度训练(1.4 详细介绍):训练中同时使用低精度 (FP16/BF16) 和 FP32——前向/反向计算、激活和梯度用低精度以省显存、加速计算,而 master 权重和优化器状态保留 FP32 以保证参数更新的数值精度
  • CPU/NVMe Offload:将参数和优化器状态卸载到 CPU 内存或 NVMe,进一步突破显存限制
  • DeepSpeed-MoE:稀疏专家模型支持

1.2 典型使用场景

  • 大模型训练:训练 LLM、视觉大模型、MoE 模型等(如 BLOOM、MT-NLG)
  • 显存受限训练:单卡/多卡显存不足时,借助 ZeRO 与 Offload 训练更大模型
  • 框架集成:可与 HuggingFace Transformers、PyTorch Lightning、Accelerate 等无缝配合

1.3 如果已经有 PP、TP,为什么还需要 DeepSpeed

PP(流水线并行)和 TP(张量并行)只是「怎么切模型」的两种方法,而 DeepSpeed 是「怎么训模型」的完整训练引擎。两者层次不同,不是替代关系。

1.3.1 PP / TP 解决的与未解决的
  • PP / TP 解决:模型切分(按层切 / 按矩阵切),让超大模型能放进多卡
  • PP / TP 未解决:DP 维度冗余、显存进一步压缩(Offload)、混合精度、训练工程细节、通信优化、分布式 checkpoint、并行调度策略等
1.3.2 DeepSpeed 在其中的作用
组件提供能力
ZeRO在 DP 维度上分片优化器状态/梯度/参数,消除冗余
PP 引擎实现 1F1B 等流水线调度策略
混合精度一行配置启用 BF16/FP16
Offload把状态卸载到 CPU/NVMe,突破显存限制
Checkpoint自动处理分布式状态的保存与恢复
通信优化overlap_comm、contiguous_gradients 等
1.3.3 关键结论
  • PP / TP 是切分策略,DeepSpeed 是训练框架
  • 真实训练几乎都是TP + PP + DP 组合,DP 维度需要 ZeRO 去冗余
  • DeepSpeed 让用户只写 config,不必手撸分布式细节

1.4 混合精度训练详解

"混合精度"指的是训练中同时使用 FP16/BF16 和 FP32:低精度负责计算,FP32 负责关键的累加和参数更新。

1.4.1 不同张量的精度分工
用途精度原因
前向/反向计算FP16 / BF16计算快、显存省
激活值 (activations)FP16 / BF16占大头,省显存
梯度 (gradients)FP16 / BF16通信快
Master 权重FP32保证参数更新精度
优化器状态 (m, v)FP32数值稳定性
loss / 梯度累加FP32防止精度损失
1.4.2 训练流程示意
FP32 master weights │ 转 FP16/BF16 ▼ 低精度权重 ─► forward ─► loss ─► backward ─► 低精度梯度 │ 转 FP32 ▼ 优化器更新 (FP32) │ ▼ FP32 master weights(更新)

补充:为什么必须保留 FP32 主权重?FP16 只有约 3-4 位有效数字,若直接累加小的更新量(如W=1.0lr*grad=0.0001)会被精度"吞掉"导致更新丢失,所以必须在 FP32 上做累加,再把更新后的权重转回低精度用于下一轮 forward。这里的"FP32 主权重"是训练时的内存策略,与模型保存到磁盘的格式无关——训练 checkpoint 通常存 FP32 便于恢复训练,而对外发布的权重(如 LLaMA、Qwen)大多是 BF16。


二、ZeRO 原理与阶段对比

2.1 ZeRO 定义

ZeRO全称Zero Redundancy Optimizer(零冗余优化器),是 DeepSpeed 中的核心显存优化技术,由微软在论文《ZeRO: Memory Optimizations Toward Training Trillion Parameter Models》中提出。

在传统的数据并行(Data Parallelism, DP)训练中,每张 GPU 都会保存一份完整的模型参数、梯度和优化器状态,存在大量冗余。ZeRO 的核心思想是:将这些训练状态在数据并行的 GPU 之间进行分片(partition),每张卡只保存自己负责的那一部分,从而消除冗余、大幅降低单卡显存占用,使得在有限显存下能训练更大的模型。

训练状态分为三类:

  • 优化器状态 (Optimizer States):如 Adam 的 momentum、variance,通常占用最多显存
  • 梯度 (Gradients):反向传播得到的梯度
  • 参数 (Parameters):模型权重本身

根据分片的范围不同,ZeRO 划分为三个递进的阶段:ZeRO-1、ZeRO-2、ZeRO-3。

2.2 ZeRO-1:分片优化器状态

  • 分片内容:仅优化器状态(如 Adam 的 momentum、variance)
  • 显存节省:约 4 倍(相比传统 DP)
  • 通信开销:与传统 DP 基本相同
  • 原理:每张卡只保存 1/N 的优化器状态,参数更新后通过 all-gather 同步

2.3 ZeRO-2:分片优化器状态 + 梯度

  • 分片内容:优化器状态 + 梯度
  • 显存节省:约 8 倍
  • 通信开销:与传统 DP 基本相同(reduce-scatter 替代 all-reduce)
  • 原理:每张卡只保留自己负责更新的那部分参数的梯度

2.4 ZeRO-3:分片优化器状态 + 梯度 + 参数

  • 分片内容:全部三类状态
  • 显存节省:与 GPU 数量 N 成线性关系(理论上 N 倍)
  • 通信开销:约为传统 DP 的 1.5 倍
  • 原理:参数也分片存储,前向/反向计算时按需 all-gather,用完即释放

2.5 显存对比(以 7.5B 模型、64 卡为例)

阶段单卡显存占用
传统 DP~120 GB
ZeRO-1~31 GB
ZeRO-2~16 GB
ZeRO-3~1.9 GB

2.6 扩展能力

  • ZeRO-Offload:在 ZeRO-2 基础上把优化器状态和梯度卸载到 CPU
  • ZeRO-Infinity:在 ZeRO-3 基础上把参数卸载到 CPU/NVMe,可训练万亿参数模型

2.7 三个阶段优缺点与使用场景对比

阶段优点缺点适用场景
ZeRO-1- 实现简单,对训练流程影响最小
- 通信开销与传统 DP 相当
- 训练速度快
- 显存节省有限(约 4 倍)
- 梯度和参数仍有冗余
- 中小模型(< 1B 参数)
- 显存比较宽裕
- 追求最快训练速度
ZeRO-2- 显存节省较大(约 8 倍)
- 通信开销仍与传统 DP 相当
- 性价比高,工业界使用最广
- 参数仍未分片,单卡需存完整模型权重
- 模型大小受单卡显存限制
- 中等规模模型(1B ~ 10B 参数)
- 主流大模型微调场景
- 显存与速度需平衡时的首选
ZeRO-3- 显存节省最大(随 GPU 数线性增长)
- 可训练超大模型(百亿/千亿级)
- 可结合 Offload 突破显存上限
- 通信开销增加约 50%
- 训练速度变慢
- 实现复杂,调试较困难
- 对网络带宽要求高
- 超大模型(> 10B 参数)训练
- 单卡放不下完整模型时
- 显存极度受限(配合 Offload)

2.8 选择建议

  • 显存够用→ ZeRO-1 或 ZeRO-2(通信少,速度快)
  • 显存不够→ ZeRO-3
  • 极端显存受限→ ZeRO-3 + Offload(CPU/NVMe)
  • 建议优先级:ZeRO-2 → ZeRO-3 → ZeRO-3 + Offload(按需逐级升级,避免过度牺牲速度)

三、DeepSpeed 配置示例

3.1 ZeRO-1 配置

{"train_batch_size":32,"optimizer":{"type":"AdamW","params":{"lr":1e-4,"weight_decay":0.01}},"bf16":{"enabled":true},"zero_optimization":{"stage":1}}

3.2 ZeRO-2 配置(推荐中等规模模型)

{"train_batch_size":32,"optimizer":{"type":"AdamW","params":{"lr":1e-4,"weight_decay":0.01}},"bf16":{"enabled":true},"zero_optimization":{"stage":2,"overlap_comm":true,"contiguous_gradients":true}}

3.3 ZeRO-3 配置(大模型)

{"train_batch_size":32,"optimizer":{"type":"AdamW","params":{"lr":1e-4,"weight_decay":0.01}},"bf16":{"enabled":true},"zero_optimization":{"stage":3,"overlap_comm":true,"contiguous_gradients":true,"stage3_gather_16bit_weights_on_model_save":true}}

3.4 配置参数说明

顶层参数
参数含义
train_batch_size全局训练 batch size(= 单卡 batch × GPU 数 × 梯度累积步数),DeepSpeed 会据此校验配置
optimizer.type优化器类型,常用AdamWAdamLamb
optimizer.params.lr学习率
optimizer.params.weight_decay权重衰减系数,用于正则化,防止过拟合
bf16.enabled启用 BF16 混合精度训练。相比 FP16 数值范围更大、无需 loss scaling,适合 A100/H100 等新硬件
zero_optimization参数
参数含义
stageZeRO 阶段:1分片优化器状态;2加上梯度;3再加上参数
overlap_comm通信与计算重叠执行,隐藏通信延迟、加速训练(推荐开启)
contiguous_gradients将梯度复制到连续的显存块中,减少反向传播时的内存碎片,提升性能
stage3_gather_16bit_weights_on_model_save仅 ZeRO-3 适用。保存模型时把分片的参数 all-gather 成完整权重再落盘,便于后续加载

3.5 启动命令

deepspeed--num_gpus=8train.py--deepspeed--deepspeed_configds_config.json
http://www.gsyq.cn/news/1436585.html

相关文章:

  • 5.31 沈阳黄金回收实测 靠谱商家对比与变现指南 - 速递信息
  • CentOS 7.6最小化安装后,必装的5个基础软件包清单(附yum命令详解)
  • 123云盘免费会员解锁终极指南:3步告别下载限制的完整解决方案
  • Gemini社交媒体运营全链路拆解(2024最新算法适配版)
  • 基于Arduino Leonardo的自制头控游戏控制器:硬件设计与软件实现
  • 郑州市 巩义市 上门安装、维修维保|维小达 开关插座/灯具/门窗/柜体/锁具/卫浴/龙头/洗菜盆/踢脚线一站式家装安装服务 - 维小达科技
  • 基于PIC单片机的多参数空气质量监测系统设计与实现
  • 仿生优化群算法及应用方案【附代码】
  • 必应推广行业百科:实力服务商甄选及核心价值解析
  • Kling AI 视频生成能力深度评测报告
  • 2026终极测评:16款降AI率网站实测,这款神器让论文秒过检测!
  • 内河小型射吸抽沙船直销 - 舒雯文化
  • 抖音下载神器:3步搞定无水印视频批量下载完整教程
  • 为跳舞机器人添加无障碍开关:辅助技术入门实践
  • 免费解锁Windows远程桌面限制:RDP Wrapper终极实战手册
  • iPaaS平台核心能力解读:五款产品功能与数据实录
  • zteOnu:解锁ZTE光猫工厂模式的命令行工具
  • 基于NodeMCU与MQ135的物联网空气质量监测系统搭建指南
  • 广州小程序平台推荐:2026年本地商家数字化选型深度测评
  • 均场扩散器:将离线多代理强化学习扩展至数千个代理
  • 3分钟开启AI姿态识别:pose-search让计算机看懂人体动作
  • 如何在5分钟内完成GTNH整合包完整中文汉化:实用指南
  • 【AI视频生成未来5大颠覆性趋势】:20年CV专家独家预测,错过将淘汰下一代内容创作者
  • Vin象棋:基于YOLOv5的终极免费中国象棋AI分析工具
  • 界首市26年最新奢侈品名包名表专业回收权威店铺推荐 - 莘州文化
  • 崩坏3扫码登录神器:9大渠道服一键登录的终极解决方案
  • 不只是编译:手把手教你配置OSG+osgEarth开发环境后的第一件事——验证与调试
  • 清流县26年最新奢侈品名包名表专业回收权威店铺推荐 - 莘州文化
  • 数据分析入门:用Python爬取的斗鱼直播数据,我们能看出哪些行业趋势?
  • 阜南县26年最新奢侈品名包名表专业回收权威店铺推荐 - 莘州文化