SageMaker HyperPod 静默数据损坏检测与恢复
Silent data corruption is a GPU fault that returns wrong but plausible numbers with no error, quietly poisoning distributed training. This post adds three checks to a PyTorch DDP l
ガイド一覧 · 本文は主に簡体字中国語です。国際向けの要点は English summary をご利用ください。
SageMaker HyperPod 静默数据损坏检测与恢复
静默数据损坏(Silent Data Corruption, SDC)在分布式训练中悄然发生:GPU 返回错误但看似合理的数值,却无任何错误提示。训练损失可能看起来正常数小时,直到模型质量下降或出现不一致时才发现。RooHome 提供的 SageMaker HyperPod 静默数据损坏检测与恢复指南,帮助分布式训练团队在 PyTorch DDP 循环中加入三个检查点,及时定位并隔离损坏节点。
谁适用?在大规模 GPU 集群(如 ml.p5.48xlarge)上进行预训练或微调的用户,尤其当你需要确保训练过程无任何数据毒化。如何决策?优先在集群节点数达到 3 台以上时启动这些检查——这是官方推荐的最小配置,能有效覆盖数据并行复制。
理解问题核心
SDC 主要来自 GPU 张量核心的边际缺陷或硅老化。它在乘加运算中计算出错误结果(如 4.0001 而非 4.0000),却不触发 ECC 或错误标志。错误通过梯度和权重扩散到每个复制体(replica),所有副本权重最终一致,但模型已受损。
传统检查(如 ECC 内存校验、Xid 错误、DCGM 健康检查)无法捕捉它,因为它们 guard 不同的边界:内存位翻转、驱动故障或空闲节点诊断,而非训练过程中的实际计算。
核心机制:三重检测循环
在 PyTorch DDP 训练循环中加入以下检查,按固定顺序执行:
1. 非有限梯度检查(NaN/Inf 检查):前向/后向传递或 all-reduce 中捕捉 NaN、Inf 或溢出。检查前 all-reduce 后的 reduced gradient 是否也非有限。
2. 环路重放审计(Ring Replay Audit):仅在审计步骤(audit steps)执行。每个 GPU 重放其他节点微批次,逐位对比损失并使用指纹对比梯度。
3. 权重指纹对比(Weight Fingerprint Comparison):优化器步后每 N 步或检查点前执行。比较每个复制体权重指纹,命名与严格多数不同的 rank。
这些检查由官方提供的 GitHub 示例代码实现(搜索「PyTorch DDP SDC detection」)。测试显示,在注入故障的 4 实例集群中,所有检查均有效捕获。
完整检测流程
1. 检测阶段:训练循环中运行三个检查,命名可疑 rank。
2. 定位阶段:利用 SageMaker HyperPod EKS 节点名称(包含实例 ID)将 rank 映射到节点。
3. 隔离与关联:停止训练、封锁节点,在 HyperPod 可观测性仪表板查看 GPU 指标。
4. 确认与恢复:人工审核后,使用 sagemaker:BatchReplaceClusterNodes 替换节点,从检查点前状态恢复训练。
实际使用示例
在你的 DDP 脚本中添加以下结构(简化版,基于官方示例):
import torch.distributed as dist
from your_sdc_module import attach, train, Schedule
stats = attach(ddp_model, dp_group)
sched = Schedule(audit_every=10, deterministic_audits=True, check_every=10)
def compute_loss(model, batch):
# ... 你的损失计算,含 autocast 等
alarm = train(ddp_model, stats, optimizer, batches, compute_loss, rebuild_batch, save_checkpoint, sched)
if alarm:
# 报告并处理
report_sdc(alarm)
设置 deterministic_audits=True 以启用完整指纹对比。成本在 953M 参数模型上,每 100 步审计约增加 10% 时间。
风险与边界
RooHome 提醒:SDC 是硬件级问题,即使检查 100% 触发,根因仍可能为长期老化或特定操作数模式。升级至最新 DLAMI 后仍需持续监控——历史案例显示,未及时隔离的节点可能导致批量任务中断。
非法律意见声明:本文基于 2026 年 11 月 11 日 AWS 官方博客内容,仅供技术参考,不构成法律或专业诊断意见。实际应用请遵循 AWS 条款与许可。