DeepSpeed 是什么:一个被名字耽误的训练库
很多人第一次听到 DeepSpeed,会以为它是一款 AI 聊天助手。应用商店里确实有同名 App,但那是另一回事。本文讨论的 DeepSpeed 是微软开源的深度学习优化库,用于大规模模型训练与推理。

该工具的核心不是对话,而是解决「显存不够」的问题。训练 1750 亿参数的 GPT-3 需要数百 GB 显存,单张显卡只有 24GB 或 80GB。该工具通过 ZeRO 技术把模型状态切碎,分散到多张卡上。
根据官网公开数据,该工具已用于训练 Megatron-Turing NLG(5300 亿参数)和 BLOOM(1760 亿参数)。适用人群是有 PyTorch 经验的工程师或研究者。零基础用户会被配置文件和分布式概念挡在门外。
先看限制:新用户最容易踩的 3 个坑
开始之前,先说三个最常被忽略的限制。这些不是缺陷,而是设计取舍。理解它们能避免浪费数小时调试。
限制一:没有 PyTorch 基础寸步难行
DeepSpeed 不是独立软件。它必须配合 PyTorch 使用,代码里先 import torch 再 import deepspeed。模型定义、数据加载、损失函数都写在 PyTorch 里。
官方文档明确说明「基于 PyTorch 构建,只需要简单修改即可迁移」。但「简单修改」的前提是你已经会写 PyTorch 训练循环。如果连 DataLoader 和 optimizer.step() 都不熟悉,这个工具帮不上忙。
限制二:配置文件比代码还难写
训练脚本之外,还要写一个 ds_config.json。里面包含 ZeRO 阶段、offload 开关、混合精度、优化器类型、学习率调度器等十几项参数。
一个典型错误:把 ZeRO Stage 3 和某些自定义优化器混用,导致启动即崩溃。官方文档有数百页,但新手往往不知道该看哪一页。配置错误不会报语法错误,而是训练中途显存溢出或梯度变成 NaN。
限制三:CPU offload 省显存但拖慢 3 倍
ZeRO-Offload 可以把优化器状态和梯度搬到 CPU 内存。代价是 GPU 和 CPU 之间频繁传输数据。
根据公开测试,启用 offload 后训练速度可能下降 2 到 3 倍。对于 7B 模型微调,单卡 24GB 能跑,但每步耗时从约 0.5 秒变成约 1.5 秒。时间换空间,这是硬权衡。
DeepSpeed 功能和体验:ZeRO 才是核心
该工具的功能列表很长,但 80% 的价值集中在 ZeRO 系列。其余功能是锦上添花。
ZeRO 三阶段:显存从 120GB 降到 15GB
ZeRO 是 Zero Redundancy Optimizer 的缩写。核心思想:把优化器状态、梯度、模型参数分片到多张 GPU 上,消除冗余副本。
| ZeRO 阶段 | 切分内容 | 显存占用 |
|---|---|---|
| Stage 1 | 优化器状态 | 约为原来的 1/4 |
| Stage 2 | 优化器状态和梯度 | 约为原来的 1/8 |
| Stage 3 | 优化器状态、梯度和模型参数 | 可降到原来的 1/8 以下 |
以 175B 模型为例,Adam 优化器在混合精度下需要约 120GB 显存。启用 ZeRO-3 后,单卡需求可降到 15GB 左右。这是官方论文给出的数据。
混合精度训练:FP16 计算 FP32 更新
混合精度训练用 FP16(半精度浮点数)做前向和反向计算,速度更快。但参数更新用 FP32(单精度浮点数),保持数值稳定。
该工具内置了 FP16 和 BF16 支持。配置文件里写 "fp16": {"enabled": true} 即可开启。官方测试显示,混合精度在 V100 上可带来 2 到 3 倍吞吐提升。代价是偶尔需要调整损失缩放系数。
3D 并行与推理优化
3D 并行指数据并行、张量并行、流水线并行三者组合。数据并行复制模型到每张卡,张量并行切分单层计算,流水线并行切分层间。
该工具还提供 DeepSpeed-FastGen,用于推理加速。官方称其吞吐比传统 vLLM 高 2 倍以上。但推理优化不是它的主战场,更多用户只用它做训练。
DeepSpeed 怎么用:从安装到跑通第一个模型
安装本身不复杂。难的是写出正确的配置。下面给出最小可运行路径。
安装:一行 pip 命令加 PyTorch
先装 PyTorch,版本需 1.11 以上。然后执行:
pip install deepspeed
如果要用 CPU offload 或 NVMe offload,需要额外编译。普通训练场景,pip 安装足够。
写 ds_config.json:最小可用配置
一个能跑的最小配置如下:
{
"train_batch_size": 4,
"fp16": {
"enabled": true
},
"optimizer": {
"type": "AdamW",
"params": {
"lr": 0.00006
}
}
}
train_batch_size 是全局批量大小,不是单卡。fp16 开启混合精度。optimizer 指定优化器。
启动训练:deepspeed 命令行
不用 python train.py,改用:
deepspeed --num_gpus=2 train.py --deepspeed ds_config.json
--num_gpus=2 指定使用 2 张卡。训练脚本里需要初始化 deepspeed.initialize,替换原来的 optimizer 和 scheduler。
DeepSpeed 同类竞品对比:和 PyTorch DDP、FairScale 差在哪
同类工具不少。这里选三个最常见的对比。
PyTorch DDP:简单但显存不够用
DDP(Distributed Data Parallel)是 PyTorch 原生方案。每张卡复制完整模型,只同步梯度。
优点是代码改动极小,几行就能跑。缺点是显存占用不降,训练 10B 以上模型基本不可能。DDP 适合小模型多卡加速,不适合超大模型。
FairScale:ZeRO 的另一个实现
FairScale 是 Meta 推出的库,也实现了 ZeRO 和 offload。功能上与该工具高度重叠。
但 FairScale 的社区活跃度明显更低。GitHub 上 star 数约为该工具的 1/5,更新频率也慢。遇到问题时,能查到的资料更少。
Megatron-LM:更底层更难用
Megatron-LM 是 NVIDIA 的框架,专注张量并行和流水线并行。它不提供优化器状态分片。
实际上,Megatron-LM 常与该工具配合使用。前者负责模型并行,后者负责 ZeRO 和 offload。单独用 Megatron-LM 需要手写大量分布式代码。
| 特性维度 | 显存优化 | 代码改动量 | 社区活跃度 | 适用模型规模 |
|---|---|---|---|---|
| DeepSpeed | ZeRO 三阶段 | 中等 | 高 | 10B-1T |
| PyTorch DDP | 无 | 极小 | 高 | <10B |
| FairScale | ZeRO 三阶段 | 中等 | 低 | 10B-1T |
| Megatron-LM | 无 | 大 | 中 | 10B-1T |
DeepSpeed 典型应用场景:4 类用户的实际用法
不同用户用它做不同的事。以下四类覆盖了大多数情况。
训练 10B 以上大模型
这是该工具的主场。用 ZeRO-3 训练 175B 模型,单卡显存需求从 120GB 降到 15GB。
实际部署需要至少 16 张 A100(80GB)。成本仍然很高,但相比不用 ZeRO 的 64 张卡,已经大幅降低。
单卡微调 7B 模型
ZeRO-Offload 允许在 24GB 显卡上微调 7B 参数模型。优化器状态放 CPU,模型参数放 GPU。
代价是训练速度慢 2 到 3 倍。但对于个人开发者或学术实验,这是最低成本的可行方案。
推理加速与模型压缩
DeepSpeed-FastGen 提供高吞吐推理。量化感知训练(QAT)可在训练中模拟 INT8 精度,减少部署后的精度损失。
但推理优化不是它的强项。纯推理场景下,vLLM 或 TensorRT-LLM 通常更合适。
DeepSpeed 用户受益点:省下的显存和时间
数字比形容词更有说服力。
显存节省 8 倍:从 120GB 到 15GB
ZeRO-3 对 175B 模型的优化数据来自官方论文。120GB 是 Adam 优化器在混合精度下的原始需求。15GB 是启用 ZeRO-3 后的单卡需求。
8 倍差距意味着原本需要 8 张 A100 的显存,现在 1 张就够。当然,实际训练仍需多卡并行,但单卡门槛大幅降低。
训练速度提升 15 倍:RLHF 场景实测
官方宣称 DeepSpeed-Chat 在 RLHF(基于人类反馈的强化学习)场景下比 SOTA 系统快 15 倍。
这个数据来自 2023 年 4 月的官方博客。测试模型是 66B 参数,硬件为 64 张 A100。15 倍是端到端训练时间对比,不是单步速度。
DeepSpeed 更新日志和新功能:v0.19.1 改了什么
版本更新频繁。这里聚焦最近两个主要版本。
v0.19.1:修复崩溃和内存泄漏
2026 年 5 月 28 日发布。修复了多个 crash、hang、文件描述符泄漏问题。
还优化了 singleton MoE collectives,新增 zero3 SDMA allgather。兼容性方面支持 PyTorch >= v2.11、flash-attn 2.7.0。
v0.18.1:新增异步检查点引擎
2025 年 10 月 23 日发布。引入 DataStates-LLM 异步检查点引擎,支持保存时异步写入,减少训练中断时间。
启用方式是在 ds_config.json 里加:
"datastates_ckpt": {
"host_cache_size": 16
}
如果未安装 datastates-llm 库,会自动回退到 TorchCheckpointEngine。
DeepSpeed 总体评价:适合谁,不适合谁
结论很直接。
谁应该用 DeepSpeed
- 训练 10B 以上模型的团队。ZeRO 是刚需。
- 单卡显存不足但想微调 7B 模型的个人开发者。
- 需要自定义分布式训练策略的研究者。
谁应该远离 DeepSpeed
- 零基础用户。先学 PyTorch,再碰这个工具。
- 纯推理需求。用 vLLM 或 TensorRT-LLM 更简单高效。
替代方案:小模型多卡加速用 DDP,纯推理用 vLLM,NVIDIA 生态用 Megatron-LM。
DeepSpeed 底层技术栈:ZeRO 论文与参数规模
最后看技术细节。
ZeRO 原理:把优化器状态切成 8 份
ZeRO-1 将优化器状态按 GPU 数量均分。8 张卡时,每张卡只存 1/8 的优化器状态。
前向和反向计算仍用完整参数,但更新时只更新自己负责的那部分。通信开销增加,但显存节省显著。
支持万亿参数:从 530B 到 1T
已训练模型包括 Megatron-Turing NLG(530B)和 BLOOM(176B)。官方称支持万亿参数模型,但尚无公开训练实例。
该工具与 PyTorch 深度集成,通过 deepspeed.initialize 包装模型和优化器。底层通信依赖 NCCL 或 MPI。

