EROICA: Online Performance Troubleshooting for Large-scale Model Training

本文介绍了 EROICA,这是首个面向大规模模型训练的在线性能故障诊断系统,它通过在线剖析和差异可观测性技术,在几乎不影响生产环境的前提下,实现了对涵盖约 10 万张 GPU 集群中软硬件混合故障的细粒度、全覆盖诊断,并在实际部署中取得了 97.5% 的成功率。

Yu Guan, Zhiyu Yin, Haoyu Chen, Sheng Cheng, Chaojie Yang, Kun Qian, Tianyin Xu, Pengcheng Zhang, Yang Zhang, Hanyu Zhao, Yong Li, Wei Lin, Dennis Cai, Ennan Zhai

发布于 Tue, 10 Ma
📖 2 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一个名为 EROICA 的系统,它的任务是给正在“疯狂学习”的超级人工智能(大模型)做在线体检和故障诊断

为了让你更容易理解,我们可以把训练一个大模型想象成指挥一支拥有 10 万人的超级交响乐团进行一场史无前例的演奏。

1. 为什么需要 EROICA?(之前的困境)

场景
想象一下,10 万名乐手(GPU 显卡)在演奏一首极其复杂的交响曲(大模型训练)。如果演奏变慢了,或者有人跑调了,指挥家(工程师)该怎么办?

以前的方法有两个,但都有大毛病

  • 方法 A:看宏观仪表盘(在线监控)
    • 做法:指挥家只看大屏幕上显示的整体音量(硬件指标,如温度、电流)。
    • 缺点:太粗糙了!如果整体音量低了,你只知道“出问题了”,但不知道是哪一把小提琴(某个具体的代码函数)拉错了,还是哪根琴弦(某根网线)断了。就像你知道乐团慢了,但不知道是第 3 排第 5 个乐手在发呆。
  • 方法 B:给每个人发录音笔(离线分析)
    • 做法:让每个乐手都带上高精度的录音笔,记录每一秒的演奏细节。
    • 缺点:数据量太大了!10 万人同时录音,产生的数据会把指挥部的电脑撑爆。而且,录音笔本身很重,戴上后乐手演奏会变慢(产生性能开销),甚至没法在正式演出(生产环境)中使用。通常只能在排练室(小测试环境)用,但排练室的问题往往和正式演出不一样。

结果:工程师们经常面对“乐团变慢了”的警报,却找不到具体是谁在拖后腿,只能干着急,浪费昂贵的算力资源。


2. EROICA 是怎么工作的?(核心魔法)

EROICA 的聪明之处在于它发明了一种"智能摘要法",既不用给每个人发笨重的录音笔,又能精准定位问题。

第一步:只在大脑“卡壳”时启动(按需触发)

EROICA 平时不工作,它像一个敏锐的哨兵。只有当它发现乐团演奏速度突然变慢(比如原本 3 秒一个乐章,突然变成了 5 秒)时,它才会瞬间启动。

第二步:收集“行为指纹”而非“原始录音”(核心创新)

这是 EROICA 最厉害的地方。它不需要记录每个人每一秒的原始动作(那样数据量太大)。

  • 传统做法:记录“乐手 A 在 10:00:01 拉了 A 弦,力度 50,持续 0.5 秒..."。
  • EROICA 做法:它只记录行为模式摘要
    • 比如:“乐手 A 在演奏时,平均用了 80% 的力气,波动很小。”
    • 或者:“乐手 B 在演奏时,平均只用了 20% 的力气,但波动很大(一会儿用力,一会儿停)。”

比喻:这就好比你要检查 10 万个学生的作业。

  • 传统方法:把 10 万本作业本全部复印下来,堆成山,然后慢慢看。
  • EROICA 方法:只让每个学生写一行字总结:“我这道题平均用了 5 分钟,最慢用了 10 分钟,最快用了 2 分钟。”
    • 这行字(摘要)只有 30KB 大小,而原始作业本(原始数据)有 3GB。
    • 好处:数据量缩小了 10 万倍!而且不需要大家的时间完全同步(不需要大家手表时间分秒不差),只要看“平均”和“波动”就能对比。

第三步:找“害群之马”(差异定位)

系统把所有乐手的“行为指纹”放在一起对比:

  • 正常情况:大家的“平均用力”和“波动”应该差不多。
  • 异常情况
    • 如果所有人都慢了:可能是指挥(代码逻辑)有问题,或者舞台灯光(硬件配置)太暗。
    • 如果只有几个人慢了:
      • 有人“用力”但“波动大”:可能是网线(网络)接触不良,一会儿通一会儿断。
      • 有人“用力”但“平均很低”:可能是他的琴弦(显卡)坏了,或者他在发呆(代码死锁)。

EROICA 能在几分钟内,从 10 万个乐手中精准指出:“第 7 号乐手,你的琴弦松了”或者“第 3 排所有乐手,你们的乐谱(代码)写错了”。


3. 实际效果如何?(实战案例)

论文中提到,EROICA 已经在阿里巴巴的 10 万张显卡集群上运行了 1.5 年,解决了 97.5% 的疑难杂症。

案例 1:代码写得烂

  • 现象:乐团演奏太慢。
  • EROICA 发现:大部分乐手在“等待数据”时, CPU 占用率异常高。
  • 真相:乐手们在等外卖(数据加载),但外卖员(代码逻辑)走错了路,或者在门口吵架(垃圾回收机制乱跑)。
  • 解决:换了个外卖平台(并行文件系统),并让乐手们统一时间吃饭(同步垃圾回收),速度立刻提上去了。

案例 2:硬件坏了 + 代码不平衡

  • 现象:演奏时断时续,甚至经常崩溃。
  • EROICA 发现
    1. 有 40 个乐手的声音特别小(网卡坏了)。
    2. 有 3 个乐手在疯狂整理乐谱(内存操作),导致其他人干等。
    3. 有的乐手要拉 10 分钟,有的只拉 1 分钟(负载不均)。
  • 解决:拔掉坏掉的网线,调整乐谱分配,让每个人工作量均衡。

案例 3:AI 自动修 Bug

  • 现象:乐团突然停摆,卡住了。
  • EROICA 发现:有一个乐手在“锁门”(死锁),导致大家进不去。
  • 解决:EROICA 把“锁门”的代码片段直接发给一个 AI 助手(Cursor)。AI 一看就懂:“哦,这里有个打印语句触发了死锁,我帮你改好。”
  • 结果:代码自动修复,乐团继续演奏。

4. 总结:EROICA 的三大优点

  1. :不需要等演出结束,演出过程中就能实时诊断。
  2. :能精准定位到是“哪根网线”、“哪行代码”还是“哪个显卡”出了问题,而不是只告诉你“系统慢了”。
  3. :对正在演奏的乐团几乎没有干扰(开销极低),因为它只收集“摘要”,不收集“原始录音”。

一句话总结
EROICA 就像是一个拥有上帝视角的超级乐评人,它不需要听每个人演奏的每一秒,只需要听每个人演奏的“节奏感”和“用力程度”,就能在一秒钟内从 10 万人的乐团中,揪出那个拖后腿的“捣蛋鬼”,让 AI 的训练像丝滑的交响乐一样顺畅。