Skip to content

feat: support SSH-based multi-node training launch - #260

Open
JYMiracle305 wants to merge 4 commits into
masterfrom
feat/ssh-multinode-launcher
Open

JYMiracle305 wants to merge 4 commits into
masterfrom
feat/ssh-multinode-launcher

Conversation

@JYMiracle305

@JYMiracle305 JYMiracle305 commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

说明

  • 支持从控制节点通过 SSH 一次启动多节点 InfiniTrain 训练,无需逐节点手工执行命令。
  • 多进程统一通过 TCP Rendezvous 交换 CCL Unique ID,不依赖 NFS 或共享文件。
  • 单机多进程默认绑定 127.0.0.1 临时端口,支持同机并发任务;多机由 node rank 0 监听显式的 MASTER_ADDR:MASTER_PORT。
  • 增加启动预检、每 rank 独立日志、任务超时、节点异常退出和 SIGINT/SIGTERM 清理。
  • Rendezvous 服务端作为独立的 InfiniTrain::rendezvous 基础库,协议由服务端和 CCL 客户端共享。

使用方式

控制节点通过 scripts/multinode_ssh/launch_multinode_ssh.sh 启动任务,可使用 --hosts 或 hostfile 指定节点顺序。常用参数包括:

  • --nproc-per-node:每节点进程数。
  • --master-addr/--master-port:多机 Rendezvous 地址。
  • --rdzv-timeout/--job-timeout:初始化及任务超时。
  • --local-host:指定控制节点直接本地执行。
  • --remote-docker-container:在远程容器中执行。
  • --env/--check-path:透传环境变量并检查数据或权重路径。
  • --follow-output:在控制端持续显示最后一个 global rank 的 stderr。

启动前会检查代码 Git SHA、训练程序和 infini_run 的 SHA-256、数据路径、GPU 可见数量及 NVIDIA 环境。控制日志记录完整命令、元数据和预检结果,rank 日志写入:

REMOTE_LOG_ROOT/JOB_ID/node-N/rank-R.stdout.log
REMOTE_LOG_ROOT/JOB_ID/node-N/rank-R.stderr.log

本地回归测试位于:

tests/distributed/test_launch_multinode_ssh.sh

验证结果

已在两个训练节点、每节点 8 张 NVIDIA A100-SXM4-80GB 的环境完成验证:

  • 两节点单进程 SSH smoke test 通过。
  • 两节点 16 rank 启动通过,global rank 唯一,本地设备覆盖 0-7。
  • GPT2、Qwen3 BF16、Llama3 BF16 均完成 TP4 × PP2 × DP2、20 step 训练。
  • 最终 loss 分别为 4.468029、2.951596、3.553573。
  • 与单节点参考结果的最大绝对 loss 差分别为 0.000001、0.004184、0.002242。
  • NCCL 日志确认验证任务使用 NET/IBext_v10 和 GDRDMA。
  • 本地回归覆盖参数解析、转义、hostfile、正常退出、节点失败、任务超时和信号清理,验证退出码 0/17/124/130。
  • infini_run、infini_train 构建、分布式 rank 测试、clang-format 和全量 IWYU 检查通过。

已知限制

  • PP2 训练需要省略 --tokenizer_bin,当前文本生成路径要求 pipeline parallel size 为 1。
  • Rendezvous 未提供鉴权,应部署在可信训练网络。
  • GPU 预检只检查可见数量,不检查显存空闲量或 GPU 独占状态。
  • 真实 GPU rank 故障、初始化超时和 Ctrl-C 的完整实机故障注入矩阵尚未完成;当前对应路径已通过本地模拟验证。
  • 尚未建立吞吐性能基线及更多节点规模的 Rendezvous 压力测试。

@JYMiracle305 JYMiracle305 changed the title feat: 支持 SSH 多节点 NVIDIA 训练启动与验证 feat: support SSH-based multi-node training launch Nov 2, 2026
@JYMiracle305
JYMiracle305 force-pushed the feat/ssh-multinode-launcher branch 2 times, most recently from af20bc2 to e473e35 Compare November 3, 2026 13:28
@JYMiracle305
JYMiracle305 force-pushed the feat/ssh-multinode-launcher branch from e473e35 to b33bf43 Compare November 3, 2026 14:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant