新闻中心

弹性分布式训练成员变化怎么管:扩缩容必须先定义状态边界 NEWS DETAIL

资讯分类 · AI 集群架构 作者 · 中科新远技术编辑部 审核人 · 中科新远 发布时间 · 2026-08-02 更新时间 · 2026-08-02 来源 · PyTorch Elastic 文档
弹性分布式训练成员变化怎么管:扩缩容必须先定义状态边界
场景示意图,不对应具体设备型号、端口布局或技术拓扑。

弹性训练常被概括为“节点故障后自动补一个 worker”,但成员变化并不是简单的进程管理。World size 改变后,数据采样、梯度缩放、学习率策略、优化器分片和并行拓扑都可能需要重新构建;rendezvous 只负责让新成员形成组,并不能保证应用状态语义正确。如果旧进程仍持有网络连接或共享资源,还可能出现两个成员组同时认为自己有效。

设计应明确弹性边界:哪些故障只允许同规模重启,哪些场景允许改变 world size,状态从最近检查点还是内存快照恢复,数据是否允许重放或跳过。每次成员变化都生成新的运行世代,日志、指标和检查点绑定世代号。网络层要验证旧连接释放、端口与身份不冲突,调度层则保证一组资源满足并行策略,而不是零散加入。

先规定可接受的成员变化

按训练算法、并行方式和业务目标列出最小/最大 worker、是否允许跨节点类型以及改变规模后的超参数处理。张量或流水并行通常对组规模更敏感,不能套用纯数据并行的弹性假设。超出允许范围时明确失败退出,而不是无限等待。

Rendezvous 服务本身需要容错

记录端点、租约、超时、世代和访问权限,避免单点或网络分区让组无法形成。演练服务重启、短时不可达和过期成员重新加入。只有当前世代可以写入有效状态,旧世代的迟到请求应被拒绝。

数据进度要定义重放语义

成员变化会重建 sampler 与数据分片,必须决定最近一批是否重放、样本是否允许重复以及 epoch 统计如何延续。保存数据游标或可推导种子,并通过小数据集核对覆盖率。吞吐恢复不能掩盖样本遗漏或重复导致的训练偏差。

检查点需要匹配新拓扑

验证模型、优化器、混合精度状态和分片制品能否被新 world size 加载。若框架只支持同规模恢复,就把它作为硬限制。检查点发布采用完成标记与摘要,成员故障期间产生的不完整版本不可进入恢复候选。

故障演练覆盖网络残留

分别终止单进程、整节点、交换路径和 rendezvous 服务,观察旧 RDMA/TCP 连接、端口、GPU 资源与作业记录是否清理。记录恢复时间、重新训练步数和结果连续性。多次连续故障触发熔断,避免作业长期循环重启消耗集群。

可执行的验收动作

  1. 定义允许的 worker 范围、节点类型和并行组变化。
  2. 验证 rendezvous 的租约、世代、权限、重启和网络分区。
  3. 规定数据重放、样本覆盖、游标和随机种子语义。
  4. 确认检查点可被目标 world size 正确加载。
  5. 演练进程、节点、网络和服务故障及连续失败熔断。

当前能力如何确认

PyTorch Elastic 文档说明了弹性启动、rendezvous 和 worker group 重启等运行语义。

训练正确性、成员变化支持与状态恢复仍取决于应用、框架、数据管道和检查点实现。

文中机制与配置边界依据PyTorch Elastic 文档的当前版本核对;官方说明用于确定候选条件,实际部署仍需结合完整料号、服务器支持清单、软件组合与现场测试。

从验证结论进入交付

中科新远是 NVIDIA Networking Elite 合作伙伴。中科新远可结合 GPU 集群、InfiniBand 或 AI 以太网与调度平台协助构建成员变化、网络残留和检查点恢复演练,让弹性范围可验证。具体合作范围和项目交付内容以当前有效资质、官方目录及书面确认结果为准。

训练进程在节点故障后自动重启,是否说明弹性训练已经有效?

不够。还要验证成员世代、数据进度、优化器与检查点状态、旧连接清理,以及结果在允许的语义范围内连续。

本场景涉及的基础设施