
弹性训练常被概括为“节点故障后自动补一个 worker”,但成员变化并不是简单的进程管理。World size 改变后,数据采样、梯度缩放、学习率策略、优化器分片和并行拓扑都可能需要重新构建;rendezvous 只负责让新成员形成组,并不能保证应用状态语义正确。如果旧进程仍持有网络连接或共享资源,还可能出现两个成员组同时认为自己有效。
设计应明确弹性边界:哪些故障只允许同规模重启,哪些场景允许改变 world size,状态从最近检查点还是内存快照恢复,数据是否允许重放或跳过。每次成员变化都生成新的运行世代,日志、指标和检查点绑定世代号。网络层要验证旧连接释放、端口与身份不冲突,调度层则保证一组资源满足并行策略,而不是零散加入。
先规定可接受的成员变化
按训练算法、并行方式和业务目标列出最小/最大 worker、是否允许跨节点类型以及改变规模后的超参数处理。张量或流水并行通常对组规模更敏感,不能套用纯数据并行的弹性假设。超出允许范围时明确失败退出,而不是无限等待。
Rendezvous 服务本身需要容错
记录端点、租约、超时、世代和访问权限,避免单点或网络分区让组无法形成。演练服务重启、短时不可达和过期成员重新加入。只有当前世代可以写入有效状态,旧世代的迟到请求应被拒绝。
数据进度要定义重放语义
成员变化会重建 sampler 与数据分片,必须决定最近一批是否重放、样本是否允许重复以及 epoch 统计如何延续。保存数据游标或可推导种子,并通过小数据集核对覆盖率。吞吐恢复不能掩盖样本遗漏或重复导致的训练偏差。
检查点需要匹配新拓扑
验证模型、优化器、混合精度状态和分片制品能否被新 world size 加载。若框架只支持同规模恢复,就把它作为硬限制。检查点发布采用完成标记与摘要,成员故障期间产生的不完整版本不可进入恢复候选。
故障演练覆盖网络残留
分别终止单进程、整节点、交换路径和 rendezvous 服务,观察旧 RDMA/TCP 连接、端口、GPU 资源与作业记录是否清理。记录恢复时间、重新训练步数和结果连续性。多次连续故障触发熔断,避免作业长期循环重启消耗集群。
可执行的验收动作
- 定义允许的 worker 范围、节点类型和并行组变化。
- 验证 rendezvous 的租约、世代、权限、重启和网络分区。
- 规定数据重放、样本覆盖、游标和随机种子语义。
- 确认检查点可被目标 world size 正确加载。
- 演练进程、节点、网络和服务故障及连续失败熔断。
当前能力如何确认
PyTorch Elastic 文档说明了弹性启动、rendezvous 和 worker group 重启等运行语义。
训练正确性、成员变化支持与状态恢复仍取决于应用、框架、数据管道和检查点实现。
文中机制与配置边界依据PyTorch Elastic 文档的当前版本核对;官方说明用于确定候选条件,实际部署仍需结合完整料号、服务器支持清单、软件组合与现场测试。
从验证结论进入交付
中科新远是 NVIDIA Networking Elite 合作伙伴。中科新远可结合 GPU 集群、InfiniBand 或 AI 以太网与调度平台协助构建成员变化、网络残留和检查点恢复演练,让弹性范围可验证。具体合作范围和项目交付内容以当前有效资质、官方目录及书面确认结果为准。
训练进程在节点故障后自动重启,是否说明弹性训练已经有效?
不够。还要验证成员世代、数据进度、优化器与检查点状态、旧连接清理,以及结果在允许的语义范围内连续。
WeChat
Profile