第4章 环境搭建与安装:硬件要求、软件依赖、pip安装、源码编译、验证安装
DeepSpeed 的安装并不复杂,但它对硬件、驱动、CUDA 版本和 Python 环境有比较明确的依赖关系。很多初学者在安装阶段就遇到“编译失败”“找不到 CUDA”“版本不匹配”等问题,根本原因往往不是 DeepSpeed 本身,而是环境没有对齐。本章按照“先确认硬件,再对齐软件,最后选择安装方式并验证”的顺序,把安装过程拆成可复现的步骤。
一、硬件要求:先确认你的机器能跑什么
DeepSpeed 的核心能力是分布式训练与显存优化,因此硬件决定了你能使用哪些特性。最基础的判断维度是:是否有 NVIDIA GPU、GPU 数量、单卡显存、GPU 之间的互联方式,以及是否具备 NVMe SSD。
- GPU 型号:建议使用 Volta 架构及以上的 NVIDIA GPU(如 V100、A100、H100、RTX 30/40 系列)。DeepSpeed 的 ZeRO-Offload、FP16/BF16 等特性对计算能力有要求,过老的架构可能无法启用。
- 显存容量:单卡 16GB 以上可以较顺畅地体验 ZeRO-2;若要做 7B 以上模型训练,通常需要 24GB 或 40GB/80GB 显存,并配合 ZeRO-3 与 CPU Offload。
- 多卡互联:多卡训练时,NVLink 的带宽远高于 PCIe,能显著减少通信瓶颈。若没有 NVLink,也可用 PCIe,但需要关注梯度通信开销。
- NVMe SSD:当启用 ZeRO-Infinity 或参数 Offload 到磁盘时,NVMe 的顺序读写速度直接影响训练吞吐。
二、软件依赖:版本对齐是成功的关键
DeepSpeed 依赖 PyTorch、CUDA、Python 和编译器。最常见的失败原因是 PyTorch 自带的 CUDA 版本与系统 CUDA 版本不一致,导致编译扩展时找不到头文件或链接库。安装前建议先执行以下命令确认现状:
nvidia-smi
python --version
python -c "import torch; print(torch.__version__, torch.version.cuda)"
nvcc --version
gcc --version
推荐的环境组合如下表所示。注意:torch.version.cuda 才是 PyTorch 编译时使用的 CUDA 版本,它必须与 nvcc --version 一致或兼容。
| 组件 | 推荐版本 | 说明 |
|---|---|---|
| Python | 3.8 – 3.11 | 3.12 部分依赖尚未完全适配 |
| PyTorch | 2.0 及以上 | 建议使用官方预编译 CUDA 版本 |
| CUDA | 11.7 / 11.8 / 12.1 | 与 PyTorch 的 CUDA 版本保持一致 |
| GCC | 7.5 – 11 | 过高版本可能触发编译警告或错误 |
| NCCL | 随 PyTorch 安装 | 多卡通信依赖,通常无需单独安装 |
三、pip 安装:最快捷的入门方式
对于大多数用户,pip 安装是最省事的方式。DeepSpeed 在 PyPI 上提供源码包,安装时会根据当前环境编译部分扩展。若只想快速使用,可以只安装纯 Python 部分:
# 基础安装(会尝试编译扩展)
pip install deepspeed
# 仅安装纯 Python 部分,跳过 CPU 优化扩展编译
DS_BUILD_CPU_ADAM=0 pip install deepspeed
# 指定版本
pip install deepspeed==0.14.0
如果安装过程中出现编译错误,通常是因为缺少 CUDA 工具链或 GCC 版本不匹配。此时可以先设置环境变量,再重新安装:
export CUDA_HOME=/usr/local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
pip install deepspeed --no-cache-dir
四、源码编译:需要定制或调试时的选择
当你需要启用特定加速算子(如 CPU Adam、Fused Adam、稀疏注意力)或修改源码时,应从 GitHub 克隆并本地编译。源码编译能让你精确控制编译哪些扩展,减少不必要的依赖。
git clone https://github.com/microsoft/DeepSpeed.git
cd DeepSpeed
pip install -r requirements/requirements.txt
# 只编译需要的算子,加快安装速度
DS_BUILD_CPU_ADAM=1 DS_BUILD_FUSED_ADAM=1 pip install -e .
# 查看可用的编译选项
DS_BUILD_HELP=1 pip install -e .
源码编译的核心流程可以用下面的示意图理解:环境检查决定能否编译,编译选项决定生成哪些算子,最终安装到当前 Python 环境。
五、验证安装:确认 DeepSpeed 真正可用
安装完成后,必须做两步验证:一是确认版本与导入正常,二是确认分布式通信与加速算子可用。只看到 pip install 成功并不代表 DeepSpeed 能正常工作。
# 1. 查看版本与基本信息
ds_report
# 2. Python 中导入并检查
python -c "import deepspeed; print(deepspeed.__version__)"
# 3. 运行官方自检(单卡)
deepspeed --num_gpus=1 -m deepspeed.launcher.runner --help
# 4. 多卡通信自检
deepspeed --num_gpus=2 -m deepspeed.launcher.runner --help
ds_report 会输出一张环境报告表,重点看 torch、cuda、nccl 和各个 op 的状态。如果某个算子显示 NO,说明该算子未编译成功,但不影响基础训练;若 torch 或 cuda 显示不匹配,则需要回到第二步重新对齐版本。
1.
ds_report 中 CUDA 与 PyTorch 版本一致;2.
import deepspeed 无报错;3. 单卡能启动一个最小训练脚本;
4. 多卡时 NCCL 能正常初始化,无超时或连接错误。
六、常见误区与复盘
- 误区一:只看 nvidia-smi 的 CUDA 版本。nvidia-smi 显示的是驱动支持的最高 CUDA 版本,不是实际安装的 CUDA 工具链版本,必须用
nvcc --version确认。 - 误区二:在同一个环境里反复 pip 与 conda 混装。这会导致 CUDA 运行时冲突,建议用 conda 创建干净环境后,统一用 pip 安装 PyTorch 与 DeepSpeed。
- 误区三:忽略 GCC 版本。GCC 过高(如 12 以上)可能编译失败,可通过
conda install gcc=10或系统包管理器降级。 - 误区四:安装完不验证。很多问题在真正启动训练时才暴露,提前用
ds_report和最小脚本验证,能节省大量排障时间。
整体来看,DeepSpeed 的安装可以归纳为一条清晰的主线:先确认 GPU 与显存是否满足目标场景,再对齐 Python、PyTorch、CUDA、GCC 的版本,然后根据需求选择 pip 安装或源码编译,最后用 ds_report 和最小训练脚本完成验证。把这条主线走通,后续的 ZeRO 配置与训练调优才有稳定的基础。