显存纠错(ECC)

AI TERM术语词条

GPU Memory ECC

硬件设施 可靠性显存纠错训练稳定性

术语释义

显存纠错用额外校验位实时发现并修正显存位翻转,开销取决于具体实现,长周期大规模训练里它基本是必选项。

显存纠错是在存储单元之外额外保存校验信息,读写时顺带检查数据有没有被宇宙射线、电压波动或老化翻转掉某一位。对跑几周的大规模训练来说,位翻转不是小概率意外,而是长时间累积下迟早会遇到的常态,纠错能力决定了训练能否顺利跑到收敛。它属于那种平时看不见、出问题时才被想起的机制;校验带来的开销因实现而异,换来的是一整轮训练不至于白跑。

常见的几种纠错层次

  • 单错纠正双错检测:用附加校验位纠正单个位翻转并发现双位错误,是最基础的显存纠错方式。
  • 片上链路重传:针对芯片内部与封装间高速链路的传输错误,用重传机制保证到达的数据正确。
  • 巡检与坏行隔离:后台定期扫描显存,把反复出错的存储区域标记出来不再使用,避免故障扩散。
  • 端到端校验:在关键数据结构上加校验和,用来发现纠错机制覆盖不到的静默错误。
  • 训练侧兜底:定期保存检查点并校验,配合自动重启,把偶发故障的损失压到最小。
  • 错误计数与告警:把可纠正错误的发生频率记录下来,计数持续升高往往预示硬件即将失效。

代价与权衡

纠错不是免费的,但开销取决于实现:HBM 多用独立附加校验位,可用容量基本不受影响;部分 GDDR 显存采用内联纠错,会牺牲一部分可用容量与带宽,个别实现对访问粒度还有限制。因此在显存紧张的推理场景里,有时会关掉纠错换取更大的可用容量;而在长周期训练中,省下的那点容量远不值得用一次训练失败来换。是否开启应当按任务的容错能力决定。另一个常见取舍是纠错粒度:粒度越细越省容量,但实现与访问路径更复杂,实际可用容量还要看厂商的具体实现。

容易混淆的地方

  • 与主机内存纠错的区别:两者纠错的对象不同,主机内存带纠错不代表显存也有。
  • 与静默错误的区别:纠错能处理可检测的位翻转,检不出来的静默错误要靠端到端校验发现。
  • 与检查点的区别:纠错降低出错概率,检查点降低出错后的损失,两者互补而非替代。
  • 与性能开关的区别:纠错带来的容量与带宽开销是持续的,不是只在出错时才付出。
  • 与冗余的区别:纠错在单份数据上加校验位,冗余靠多份副本,两者的空间开销与恢复能力不同。

排查训练异常时,显存错误往往表现为损失突然跳变或进程直接退出,日志里能看到对应的纠错计数。把纠错计数纳入集群监控,能在故障扩大前就发现某张卡在持续恶化。在集群层面,把纠错计数与任务失败日志关联起来,能更快区分是硬件故障还是软件缺陷。

查看全部 55 条 →
共 9 条