NeMo MBridge CPU Offload
为 Megatron Bridge 配置、验证并排查 CPU 卸载,以缓解 GPU 显存压力。
技能仅指导 CPU/GPU 内存 offload 配置,没有恶意行为、凭据窃取或隐蔽外传;权限范围主要是训练配置,但示例命令会启动实际训练且未要求用户确认、未说明数据流、资源成本或回滚方式,因此扣分。官方 NVIDIA 来源和 Apache-2.0 标注提供了归属依据,但仓库许可证元数据为 NOASSERTION,故未满分。
文档提供两类机制、约束、配置、故障症状和修复路径,关键代码锚点基本自洽;但 cpu_offloading_num_layers 的范围表述存在不一致(num_layers-1 与小于 num_layers),依赖、版本和环境前置条件不完整,测试命令也未覆盖主要 offloading 路径。静态校准限制分数不超过10。
目标用户、触发词、PP/recompute/CUDA graph 等适用边界较清楚,并区分 activation 与 optimizer offloading;但主要依据 Qwen3-30B-A3B、H100 和特定并行配置,缺少小模型、非 NVIDIA 环境及中文使用说明,语义触发和跨环境适配仍有限。
SKILL.md 有决策表、参数表、兼容性、最小命令、验证、故障诊断和限制,card.yaml 提供结构化元数据与实测摘要;但缺少标准 Instructions/Examples 部分,缺少明确维护责任人、更新路径和 changelog,版本信息与评估文件存在时间/SHA 不一致,故扣分。
配置片段、命令和故障处理可直接支持核心判断:需要 PP>1 的大型 MoE 应优先使用 optimizer offloading;card.yaml 还记录了内存和速度变化。但效果数据主要是作者报告,静态阅读无法确认复现,且命令依赖未说明、结果需结合具体硬件调参,因此按静态上限给6分。
文档包含 Megatron-Core/Bridge 代码锚点、结构化验证状态、提交作业编号和基准结果,具备一定审计线索;但本评估未执行,作业编号和实测声明缺少可直接核验的提交测试、CI 覆盖或固定证据链接,无法达到更高静态分数。
- 不要直接执行最小命令:先确认环境、依赖、GPU/CPU 内存、并行配置和训练数据边界,并由用户确认训练成本。
- 修正并统一 cpu_offloading_num_layers 的合法范围说明,避免配置边界误导。
- 将基准中的作业编号、损失一致性和性能数据与修订固定的日志或可复现实验材料关联;当前仅能视为作者声明。
- optimizer offloading 与 CUDA graphs 的兼容性应单独验证;activation offloading 明确不能与 CUDA graphs、重计算或 PP>1 组合。
这个 Skill 能做什么,适合哪些场景?
该技能面向 NeMo MBridge 和 Megatron-Core 训练场景,指导用户在激活卸载与优化器卸载之间进行选择。它覆盖逐层激活卸载,以及通过 HybridDeviceOptimizer 实现的优化器状态卸载和分数卸载。技能提供配置示例、CLI 覆盖参数、可运行训练命令、单元测试和故障诊断路径。它尤其适合需要降低显存占用、调查 OOM 或排查 CPU offload 配置变更导致崩溃的用户。
检查两种 CPU 卸载机制的配置约束,比较 pipeline parallelism、重计算、CUDA graphs 和模型规模对方案选择的影响;提供 Python 配置与 CLI 参数示例;给出 Qwen3-30B-A3B 训练配方的最小运行命令;提供 pytest 验证命令、成功判据和基于错误信息、显存占用及迭代时间的故障诊断建议。
- 训练大型 MoE 模型且需要 pipeline parallelism 大于 1 时,选择优化器卸载以降低 GPU 显存占用。
- 中小型模型在 pipeline parallelism 为 1 时激活显存成为瓶颈,需要配置逐层激活卸载。
- 希望在显存节省与训练速度之间调节时,使用不同的 optimizer_offload_fraction。
- CPU offload 配置变更后出现 OOM、NCCL 错误或训练崩溃时,定位冲突参数。
- 需要验证卸载训练的损失是否与未卸载基线一致时,执行指定单元测试和成功标准检查。
这个 Skill 有哪些优点和局限?
- 同时覆盖激活卸载与优化器状态卸载,并明确两者的适用条件。
- 提供可复制的 Python 配置、CLI 覆盖参数、训练命令和 pytest 命令。
- 包含 PP、重计算、CUDA graphs、细粒度激活卸载等关键兼容性限制。
- 给出 OOM、NCCL 错误和性能下降的具体确认方式与修复方向。
- 激活卸载要求 pipeline parallelism 为 1,不适合需要更高 PP 的大型模型。
- 所有卸载都会增加开销;文档给出的 Qwen3-30B-A3B 数据显示,优化器卸载比例越高吞吐损失越明显。
- 技能未提供完整环境安装、硬件兼容矩阵或独立基准数据集。
- 优化器卸载要求 use_distributed_optimizer=True。
如何安装这个 Skill?
使用默认 skills CLI 安装指定技能:npx skills add nvidia/skills --skill nemo-mbridge-perf-cpu-offloading --agent codex。也可以将 --agent codex 替换为其他受支持的 Agent Skills 客户端。源材料未说明手动复制后的具体目录结构。
如何使用这个 Skill?
在已加载该技能的代理中提出与 CPU offloading 相关的任务,例如“为 NeMo MBridge 训练配置 optimizer_cpu_offload 并排查 OOM”。随后可按技能提供的配置运行:uv run python scripts/training/run_recipe.py --recipe qwen3_30b_a3b_pretrain_config optimizer.optimizer_cpu_offload=True optimizer.optimizer_offload_fraction=0.5 train.train_iters=20 train.global_batch_size=8 train.micro_batch_size=1。验证时可运行技能列出的 pytest 命令,并检查配置验证、训练稳定性、损失差异和显存下降情况。
这个 Skill 与同类方案有什么区别?
技能明确比较两种方案:激活卸载按 Transformer 层移动激活及可选权重,但要求 PP=1;优化器卸载通过 HybridDeviceOptimizer 移动 Adam 动量和方差状态,没有 PP、重计算或 CUDA graph 限制。fine_grained_activation_offloading 是另一种可与 PP 配合的模块级方案,但不能与 layer-level cpu_offloading 同时启用。