### [DeepSpeed](https://hello123.com/) **Published:** 2026-11-01T08:12:00 **Author:** hello123 **Excerpt:** DeepSpeed 是微软开源深度学习优化库,通过 ZeRO 技术将 1750 亿参数模型训练显存需求降低 8… ## DeepSpeed 是什么:一个被名字耽误的训练库 很多人第一次听到 **DeepSpeed**,会以为它是一款 AI 聊天助手。应用商店里确实有同名 App,但那是另一回事。本文讨论的 DeepSpeed 是微软开源的**深度学习**优化库,用于大规模模型训练与推理。 ![DeepSpeed截图](https://cdn.hello123.com/wp-content/uploads/2026/09/deepspeed.jpg) 该工具的核心不是对话,而是解决「显存不够」的问题。训练 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,用于推理加速。官方称其吞吐比传统 v**LLM** 高 2 倍以上。但推理优化不是它的主战场,更多用户只用它做训练。 ## DeepSpeed 怎么用:从安装到跑通第一个模型 安装本身不复杂。难的是写出正确的配置。下面给出最小可运行路径。 ### 安装:一行 pip 命令加 PyTorch 先装 PyTorch,版本需 1.11 以上。然后执行: ```bash pip install deepspeed ``` 如果要用 CPU offload 或 NVMe offload,需要额外编译。普通训练场景,pip 安装足够。 ### 写 ds\_config.json:最小可用配置 一个能跑的最小配置如下: ```json { "train_batch_size": 4, "fp16": { "enabled": true }, "optimizer": { "type": "AdamW", "params": { "lr": 0.00006 } } } ``` `train_batch_size` 是全局批量大小,不是单卡。`fp16` 开启混合精度。`optimizer` 指定优化器。 ### 启动训练:deepspeed 命令行 不用 `python train.py`,改用: ```bash 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` 里加: ```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。 ## 参考资料 - [CSDN](https://xfyun.csdn.net/68abe2184e4959284dac51d5.html)(2025-06-11)— DeepSpeed 支持的模型规模与功能概述 - [CSDN文库](https://wenku.csdn.net/answer/4y8zwsp2q9)(2025-02-21)— ZeRO 技术与混合精度训练说明 - [网易](https://www.163.com/dy/article/JTCSLISK05563UC5.html)(2025-04-18)— DeepSpeed v0.16.6 更新内容解析 ---