用途:把单节点 uv run python -m torch.distributed.run 命令转换为多节点 Slurm sbatch 脚本(支持 Enroot 容器),并调试常见多节点失败。
两种方式:srun 原生(推荐,--ntasks-per-node=8,由 Slurm 直接派生进程,避免 TRAIN_CMD 转义问题)与 uv run torch.distributed(旧方式,--ntasks-per-node=1,由 torchrun 每节点派生 8 进程;若设为 8 会因 8×8 进程导致 EADDRINUSE 端口冲突)。Megatron Bridge 会通过 initialize.py 调用 common_utils.py,从 SLURM_PROCID、SLURM_NTASKS、SLURM_LOCALID、SLURM_NODELIST 自动推导 RANK、WORLD_SIZE、LOCAL_RANK、MASTER_ADDR、MASTER_PORT,无需手动设置。
主要能力:提供 SBATCH 头、两阶段 srun(先单进程 uv sync 预热共享缓存,再全量多节点运行)、TRAIN_CMD 封装、交互式 salloc+srun 三步流程,以及多节点故障排查清单(退出码 1/9/143、首个崩溃 rank、NCCL 超时、MoE OOM 的 EP 配置、FP8 权重不匹配、WORLD_SIZE 未设置等)。
关键限制与注意:NEMO_HOME 必须指向共享文件系统(如 Lustre),否则多节点 SFT/PEFT 的 packed 数据不可见,报 TypeError: 'NoneType' object is not an iterator;--no-container-mount-home 是 srun 参数而非 SBATCH 指令;TRAIN_CMD 内 Slurm 变量需转义 ${...};MoE 中 TP 不减少专家内存,仅 EP 拆分专家;FP8 模型 roundtrip 权重不匹配属预期。
适用场景:Megatron Bridge 的转换、推理、SFT/PEFT 与 MLM pretrain_gpt.py 多节点训练。具体集群路径、账号、分区等需按实际环境替换。