Chapter 02

安装:Docker 是首选

📌 commit 2ea3e0fNeMo 装机为啥这么麻烦

NeMo 跟 Apex、TransformerEngine、Megatron-Core、PyTorch 强绑定,原生 pip 装常常装不对。本章给三条路径,按"对自己环境的掌控力"排序。

2.1三条安装路径

方式难度推荐场景
NGC 官方 Docker★ 99% 用户的选择
conda + pip★★★不能用 Docker 的环境
源码 + pip -e★★★★★改源码 / 提 PR

2.2方式 A:NGC Docker(首选)

# 拉镜像(约 30GB)
docker pull nvcr.io/nvidia/nemo:25.05

# 跑容器(挂载本地代码 + 数据)
docker run --gpus all -it --rm \
    --shm-size=16g --ulimit memlock=-1 --ulimit stack=67108864 \
    -v $PWD:/workspace \
    nvcr.io/nvidia/nemo:25.05 bash

# 验证
python -c "import nemo; print(nemo.__version__)"

NGC 镜像把 CUDA / PyTorch / Apex / TransformerEngine / Megatron-Core / FlashAttention 都预装好了,开箱即用。版本号 25.05 = 2025 年 5 月发布的稳定版。

2.3方式 B:conda + pip

conda create -n nemo python=3.10
conda activate nemo
pip install Cython packaging
pip install nemo_toolkit['all']

# 装 Apex(CUDA 扩展)
git clone https://github.com/NVIDIA/apex
cd apex && pip install -v --disable-pip-version-check --no-cache-dir \
    --no-build-isolation \
    --config-settings "--build-option=--cpp_ext" \
    --config-settings "--build-option=--cuda_ext" ./

# 装 TransformerEngine
pip install --no-build-isolation transformer-engine[pytorch]

# 装 Megatron-Core(NeMo 依赖)
pip install megatron-core

这一路坑非常多:Apex 编译动辄 30 分钟、TransformerEngine 要匹配 CUDA 版本、Megatron-Core 跟 NeMo 的 API 兼容窗口很窄。没特别理由别走这条路

2.4方式 C:源码安装

git clone https://github.com/NVIDIA-NeMo/NeMo.git
cd NeMo
git checkout 2ea3e0f          # 本书基线
pip install -e ".[all]"

建议在 NGC Docker 内做这件事,能省掉 80% 装机时间。

2.5版本矩阵

NeMo 版本NGC 镜像PyTorchMegatron-CoreTE
2.024.072.40.81.10
2.124.102.50.101.11
2.225.012.50.111.13
2.4(本书)25.052.60.132.0

查最新对照:https://docs.nvidia.com/nemo-framework/user-guide/latest/softwarecomponentversions.html

2.6验证

python -c "
import nemo
from nemo.collections.llm.gpt.model import GPTConfig, GPTModel
print('NeMo:', nemo.__version__)
print('ok')
"

2.7常见装机问题

现象处理
Apex 编译失败 (gcc / nvcc 版本)用 NGC 镜像
TransformerEngine import 报错装的 TE 版本和 NeMo 不匹配;看 NeMo release notes
Docker 启动 GPU 不可见装 NVIDIA Container Toolkit;nvidia-smi 在容器内可见才算成功
NeMo 提示 "no module megatron"装 megatron-core 包:pip install megatron-core
shm_size 不够,DataLoader OOMDocker run 加 --shm-size=16g

2.8这章你需要带走的