用途:当需要把 Isaac Lab 强化学习任务扩展到多块 GPU 或多节点,或分布式运行出现挂起、死锁、NCCL 失败时使用。单 GPU 训练配置、框架选择、智能体配置接线应使用 isaaclab-training-rl-agents;任务能跑完但奖励曲线或指标异常应使用 isaaclab-debugging-rl-training。
主要能力与用法:先用单 GPU 确认同一任务、后端和预设组合可正常训练,再调试分布式问题。启动命令为 uv run isaaclab train_multigpu,它封装 torchrun 并自动注入 --distributed,训练参数与 uv run isaaclab train 一致。用 --num_gpus 选择 rank 数量,默认 gpu 使用所有可见设备;--dry_run 只打印解析后的启动命令而不执行。skrl 配合 JAX 时 --num_gpus 必须为整数,且不接受仅 torchrun 的选项,改用 --coordinator_address。默认只显示每个节点本地 rank 0 的控制台输出,可用 --log_all_ranks 或 --tee 3 --log_dir <dir> 保留各 rank 日志。
排查与限制:先区分启动器问题与通信问题;所有参与 GPU 占用 100% 且无报错的挂起属于 NCCL 停滞。挂起时先换 world size 并用独立 NCCL 探针复现,world size 2 在无 NVLink 系统上最常见。NCCL 环境变通应逐条应用并先用探针验证,且视为机器特定配置,不要直接写入提交的配置或脚本。多节点需用 --nnodes、--node_rank 以及 --master_addr/--master_port 或 --rdzv_* 建立 rendezvous,先验证两节点再扩展。验证清单包括:单 GPU 可训练、每个 rank 都到达参数同步、运行报告训练时间并以状态 0 退出、扩展确实改变吞吐而非静默单 rank 运行。技能变更需运行 uv run --no-project python tools/skills/cli.py check。该技能需与 docs/source/features/multi_gpu.rst、docs/source/refs/troubleshooting.rst 及 scripts/reinforcement_learning/train_multigpu.py 保持同步,NCCL 变通列表维护在多 GPU 功能文档中。