NeMo MBridge 训练韧性
为 Megatron Bridge 分布式训练启用故障恢复与挂起检测。
技能明确限定 Slurm、ft_launcher、环境变量和不兼容组合,并未要求凭据、秘密或外部数据传输;但涉及分布式作业重启、终止训练、信号处理和检查点写入,缺少执行前确认、最小权限说明、数据流披露及明确回滚方案,因此扣分。
配置示例、参数表、陷阱、代码锚点和验证命令较完整,且说明了 torchrun、NCCL watchdog、异步检查点等关键失败条件;但本次仅静态阅读,依赖版本和运行环境约束未完全复现,错误输出与异常输入处理说明有限,因此按静态上限保守扣分。
目标用户、触发词、Slurm fault tolerance、straggler、preemption、restart 和 checkpoint 场景清楚,也声明了多项不兼容和实验性边界;但未定义更多非适用范围,未提供中文指导,且对不同集群、版本和非 Slurm 环境的适配证据有限,因此扣分。
文档按功能、配置、陷阱、代码锚点和验证组织,包含依赖约束、示例、限制、版本信息和 NVIDIA 归属;但缺少推荐的 Instructions/Examples 章节、metadata.author/tags,维护更新路径和变更记录不充分,且许可证元数据显示 NOASSERTION 与局部 Apache/仓库双许可证信息存在治理不一致,因此扣分。
技能覆盖故障容错、慢卡检测、抢占、进程内重启、重跑状态机及检查点恢复,并给出可直接改写的 Python、shell 配置和验证入口;但未在本次审查中执行,基准仅为单个正向任务且部分效率/发现性指标有限,复杂环境中的直接可用性仍需人工验证,因此按静态上限计分。
代码路径、测试路径、示例路径和验证命令提供了可审计线索,BENCHMARK.md 还记录了有限评估结果;但 card.yaml 的验证主要是 file_existence_only,基准覆盖仅一个任务,缺少独立第三方复现和真实端到端恢复证据,因此扣分。
- 执行会影响分布式训练作业,尤其是自动重启、stop_if_detected、信号处理和检查点写入;应先人工确认集群权限、检查点可恢复性和终止策略。
- 直接 FaultToleranceConfig 必须使用 ft_launcher;IPR 与 NeMo-Run/Slurm preemption 不兼容,且需要匹配的 PyTorch/NCCL 版本和环境变量。
- 文档中的验证主要是路径存在性、示例命令和单任务基准,不能替代目标集群上的端到端故障恢复测试。
- 未提供中文说明;核心运行功能不是完全依赖海外在线服务,但依赖包、文档或镜像获取可能受网络和版本可达性影响。
这个 Skill 能做什么,适合哪些场景?
该技能为 NeMo MBridge(Megatron Bridge)提供分布式训练韧性配置与排障指导。它覆盖 Slurm 环境中的容错、GPU 失速检测、抢占处理、进程内重启和实验性的重运行状态机,并补充异步及本地检查点配置。内容包含 Python 配置、启动命令、环境变量、代码锚点、常见陷阱和验证方式。它适合需要减少训练因节点故障、GPU 失速或进程挂起而中断的 Megatron Bridge 用户,但部分功能依赖特定 PyTorch/NCCL 版本或运行环境。
指导用户通过 FaultTolerancePlugin 或 FaultToleranceConfig 配置故障容错和分段超时,使用 ft_launcher 启动任务并设置 GROUP_RANK;配置 NVRxStragglerDetectionConfig 生成 GPU 相对及单卡性能报告;配置 Slurm 抢占插件或 SIGTERM 退出处理;设置实验性的重运行状态机以检查 NaN 和尖峰损失;配置 InProcessRestartConfig、必要的 NCCL/PyTorch 环境变量和直接 srun 启动方式;启用 torch_dist 格式的异步检查点保存及 NVRx 本地检查点;提供 pytest、示例脚本和日志关键字用于验证。
- 负责 Slurm 多节点训练的工程师希望在 rank 心跳超时或故障后自动重启任务。
- 排查训练偶发挂起或单个 GPU 性能下降的用户需要启用 NVRx 失速检测并查看各 rank 分数。
- 运行受限时长 Slurm 作业的用户需要在作业结束前接收信号并保存可恢复状态。
- 希望从节点或 rank 故障中恢复而无需完全退出训练的用户需要评估进程内重启。
- 需要让训练继续运行同时写入检查点的用户可以配置异步检查点保存。
这个 Skill 有哪些优点和局限?
- 覆盖容错、失速检测、抢占、进程内重启和检查点等多个训练恢复环节。
- 提供可复制的 Python 配置、Shell 启动命令、参数默认值和验证命令。
- 明确列出 ft_launcher、NCCL watchdog 和异步检查点等容易出错的配置关系。
- 提供配置、运行时代码、测试和示例的代码锚点,便于继续排查。
- 故障容错和抢占部分标明为 Slurm 场景;进程内重启不支持 NeMo-Run 或 Slurm Executor。
- 进程内重启要求兼容的 PyTorch/NCCL 版本,并要求设置特定环境变量。
- 重运行状态机仍属 alpha,完整重运行工作流不应被视为稳定能力。
- SKILL.md 没有给出具体版本矩阵、硬件覆盖范围或完整端到端测试结果。
如何安装这个 Skill?
从 NVIDIA/skills 集合安装此技能:
npx skills add nvidia/skills --skill nemo-mbridge-resiliency --yes
也可以指定 Codex:
npx skills add nvidia/skills --skill nemo-mbridge-resiliency --agent codex --yes
README 未说明单独手动复制后的具体目录规则;它说明技能加载后,代理遇到相关任务即可使用。
如何使用这个 Skill?
在已加载技能的代理中提出明确任务,例如:“为我的 Megatron Bridge Slurm 训练启用故障容错、NVRx 失速检测和抢占处理,并检查启动命令是否正确。”随后根据环境选择 NeMo Run 插件或 FaultToleranceConfig;直接配置故障容错时使用 ft_launcher 而不是 torchrun。启用进程内重启时设置文档列出的环境变量,并直接使用 srun --kill-on-bad-exit=0;验证时运行对应示例或 pytest 命令并检查指定日志。
这个 Skill 与同类方案有什么区别?
相较于直接使用 torchrun,FaultToleranceConfig 的启动方式要求使用 ft_launcher,否则故障容错可能被静默禁用。相较于 NeMo Run FaultTolerancePlugin,直接配置方式需要手动设置 FaultToleranceConfig、启动器和环境变量;进程内重启则不能与 NeMo-Run 或 Slurm 抢占插件组合使用。NVRx 失速检测也应与旧版失速检测二选一。