news 2026/9/3 13:38:55

DeepSpeed ZeRO-Offload与ZeRO-Infinity:单卡训练1000亿参数大模型的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSpeed ZeRO-Offload与ZeRO-Infinity:单卡训练1000亿参数大模型的完整指南

DeepSpeed ZeRO-Offload与ZeRO-Infinity:单卡训练1000亿参数大模型的完整指南

【免费下载链接】DeepSpeedDeepSpeed is a deep learning optimization library that makes distributed training and inference easy, efficient, and effective.项目地址: https://gitcode.com/GitHub_Trending/de/DeepSpeed

🎯 本文带你完整解析DeepSpeed(微软开源的深度学习优化库)的两大核心内存优化技术——ZeRO-OffloadZeRO-Infinity。它们让大模型分布式训练和推理变得简单、高效:零代码修改,仅修改几行 JSON 配置,即可用单张 GPU 训练 100B(1000亿)参数的 GPT-2 大模型。文章面向新手,图解原理 + 配置实操 + 进阶路线,一文掌握。

一、为什么大模型训练会"爆显存"?

训练一个 1000 亿参数的大模型,显存里装的不只是权重。以 FP16 训练 + Adam 优化器为例,每个参数背后还藏着 32 位权重副本、动量和二阶矩等状态:

状态单参数占用100B 模型总量
模型参数(FP16)2 字节~200 GB
梯度(FP16)2 字节~200 GB
优化器状态(FP32 权重 + m/v)12 字节~1200 GB
合计~16 字节~1.6 TB

一张 32GB 的 V100 显然装不下。传统方案是模型并行——但需要大改模型代码,复杂且通信开销高。而 DeepSpeed 的ZeRO(Zero Redundancy Optimizer,零冗余优化器)思路完全不同:

数据并行的每张卡上都有一份冗余的优化状态?那就把它们切分到所有设备上,各存各的、各算各的,用时再聚合。

这样不仅省显存,还不需要修改任何模型代码——只需在 DeepSpeed 的 JSON 配置中加几行参数即可,这是 ZeRO 相比模型并行的最大吸引力。

二、ZeRO 三级进阶:从 Stage 1 到 Stage 3

ZeRO 以渐进阶段(stage)实现优化,后期阶段包含前期全部优化(详见官方教程 docs/_tutorials/zero.md):

  • Stage 1 — 切分优化器状态:每张卡只保存并更新自己那一份优化器状态。官方实测:1.5B 参数 GPT-2 的 Adam 状态从 18GB 降到 2.25GB(8 卡);
  • Stage 2 — 再切分梯度:16 位梯度也按卡切分,每卡只保留自己负责部分的梯度;
  • Stage 3 — 连参数也切分:16 位模型权重同样切分到所有卡上,前向/反向传播时自动聚合与释放,单卡显存占用降至极限。

实现位于 deepspeed/runtime/zero/ 模块,其中 stage_1_and_2.py 负责前两级,stage3.py 负责第三级的参数切分与通信。

三、ZeRO-Offload:把优化器"搬"到 CPU 上

单卡训练时没有"其他卡"可分摊,怎么办?ZeRO-Offload 的答案是:利用主机 CPU 的内存和算力

它把优化器的状态与计算从 GPU 卸载到 CPU,由 DeepSpeed 高度优化的 CPU 版 Adam(DeepSpeedCPUAdam,源码见 csrc/adam/cpu_adam.cpp)接管更新——比 PyTorch 标准实现快 5~7 倍,避免 CPU 成为瓶颈。

官方教程实测:单张 32GB V100 + 32GB 内存的机器,成功训练100 亿参数 GPT-2。下面是真实训练日志截图:

配置方法极其简单,在 DeepSpeed JSON 配置中开启zero_optimization并将优化器设备指定为cpu

{ "zero_optimization": { "stage": 2, "offload_optimizer": { "device": "cpu" }, "contiguous_gradients": true, "overlap_comm": true } }

就这几行,无需任何代码修改。多卡训练时还可在deepspeed启动命令中加--bind_cores_to_rank,把物理 CPU 核均匀分配给各 rank,让 CPU 优化器性能接近最优。完整实操步骤见 docs/_tutorials/zero-offload.md。

四、ZeRO-Infinity:GPU → CPU → NVMe 三级存储,突破内存天花板

如果 CPU 内存也不够呢?ZeRO-3 内置了infinity offload 引擎(实现见 deepspeed/runtime/zero/offload_config.py),构成ZeRO-Infinity

它把模型状态扩展到GPU 显存 → CPU 内存 → NVMe SSD三级存储层级,通过**智能调度(Smart Scheduling)决定哪些状态驻留在哪一层,并支持预取(Prefetch)**提前把下一层数据搬上来、内存池管理保证连续大块显存、通信优化隐藏传输延迟。最终结果:内存需求无限逼近"理论下限",模型规模不再受任何单一硬件限制——这正是官方宣传的"解锁前所未有的模型规模"。

配合 blogs/deepspeed4science/ 中介绍的科学大模型实践,以及 DeepNVMe(教程见 docs/_tutorials/deepnvme.md)基于 NVMe SSD + libaio + GPUDirect Storage 的高吞吐异步 I/O 加速,NVMe 层不再是性能短板。

💡 想更进一步?DeepSpeed 还推出了ZeRO-PP(流水线-参数并行双切分,详见 blogs/zeropp/)与DeepSpeed-FP6(用 FP6 低精度压缩状态),可继续把单卡可训练的模型规模推高。

五、快速上手三步走

  1. 安装pip install deepspeed(含 CPU Adam、异步 I/O 等算子,可用ds_report检查环境);
  2. 包装模型:调用deepspeed.initialize(model=..., config=配置json),几行代码接入任意 PyTorch 模型(入门教程见 docs/_tutorials/getting-started.md);
  3. 调配置:按上文 JSON 模板设置stageoffload_optimizer/offload_param(ZeRO-Infinity 需 stage 3 + 参数卸载),跑起来。

六、总结:选型建议一览

场景推荐方案单卡可训规模参考
多卡、显存中等紧张ZeRO Stage 1/210B+
单卡或 CPU 内存充裕ZeRO-Offload(本教程核心)10B~数十 B
超大规模、显存+内存都吃紧ZeRO-Infinity(Stage 3 + CPU/NVMe 卸载)100B~1T

核心关键词回顾:DeepSpeed、ZeRO-Offload、ZeRO-Infinity、ZeRO Stage 3、大模型分布式训练、单卡训练、GPU 显存优化、CPU 卸载、NVMe 卸载。

从零冗余思想到三级存储层级,DeepSpeed 用"切分 + 卸载 + 预取"三板斧,把 1000 亿参数大模型的训练门槛从"超算集群"拉低到"一张显卡"。修改几行 JSON 即可上车的易用性,让它成为新手进阶大模型训练的首选工具。🚀

【免费下载链接】DeepSpeedDeepSpeed is a deep learning optimization library that makes distributed training and inference easy, efficient, and effective.项目地址: https://gitcode.com/GitHub_Trending/de/DeepSpeed

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 13:38:42

ElasticSearch知识点总结

倒排索引:当用户输入查询内容,利用分词器对用户输入的内容分词,然后取倒排索引库中匹配,拿到文档id,然后根据文档id查询文档内容(Elasticsearch 默认会返回文档的 _source 字段(原始 JSON 内容&…

作者头像 李华
网站建设 2026/9/3 13:34:06

行业收缩期如何转型?先判断风险,再迁移能力

如果所在行业开始收缩,你的第一反应是什么?我见过不少人的第一反应不是分析风险,而是怀疑自己是不是不够努力。真实情况往往是相反的。行业一旦进入调整期,大量岗位消失和个体能力没有直接关系。我更想聊一个可执行的问题&#xf…

作者头像 李华
网站建设 2026/9/3 13:32:21

MATLAB小波图像融合工程实践:灰度与彩色双模GUI系统

简介:本资源是一套面向本硕博教研学习者的基于小波变换的图像融合算法MATLAB实践方案,聚焦多源图像信息互补融合的核心问题,适用于遥感、医学影像、目标识别等需提升图像细节与对比度的实际场景。压缩包共31个文件(7.63MB&#xf…

作者头像 李华
网站建设 2026/9/3 13:31:28

去中心化KYC:从“平台保管数据”到“凭证随人走”

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 13:31:16

基于STM32F103C8T6的三相SPWM逆变电源设计与实现

简介:本资源是一套基于STM32F103C8T6单片机实现的三相SPWM逆变电源完整开发套件,面向电力电子、嵌入式控制方向的本科生、研究生及硬件工程师,解决三相正弦波调制、IGBT驱动、闭环电压/频率控制等核心工程问题,适用于课程设计、毕…

作者头像 李华
网站建设 2026/9/3 13:29:06

SolidWorks 2020 三维模型实战:ZT420 多功能施肥播种机完整设计解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华