EROICA: Online Performance Troubleshooting for Large-scale Model Training

EROICA 는 대규모 GPU 클러스터에서 발생하는 하드웨어 및 소프트웨어 성능 문제를 실시간으로 진단하고 근본 원인을 규명하기 위해 프로파일링 기반의 미세 관찰과 차등 관측성을 활용한 최초의 온라인 문제 해결 시스템입니다.

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
📖 4 분 읽기☕ 가벼운 읽기

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

🎵 제목의 의미: '에로이카'는 왜 이 이름인가요?

논문 제목인 EROICA는 베토벤의 3 번 교향곡 '에로이카'에서 따왔습니다. 이 곡이 고전주의를 넘어 낭만주의의 시작이 된 것처럼, 이 시스템도 기존에 쓰이던 단순한 모니터링 방식을 넘어 차세대 AI 운영 (AIOps) 의 시작이 되기를 바라는 마음을 담고 있습니다.

🏭 배경: 거대한 AI 공장에서의 혼란

현대 AI 모델 (예: 챗봇, 이미지 생성기) 을 훈련시키려면 **수만 개의 그래픽카드 (GPU)**가 한꺼번에 작동해야 합니다. 이는 마치 10 만 명의 요리사들이 동시에 거대한 식당에서 요리를 하는 상황과 같습니다.

  • 문제: 요리사 중 한 명이 칼을 잘못 쓰거나, 식재료가 늦게 오거나, 배관 (네트워크) 이 막히면 전체 식당의 요리 속도가 느려집니다.
  • 기존 방식의 한계:
    1. 대략적인 감시 (모니터링): "요리 속도가 느려졌네?" 정도는 알 수 있지만, 누가 왜 느린지는 모릅니다. (예: "3 번 테이블이 느려요"까지는 알려주지만, "3 번 테이블의 소스 통이 막혔어요"까지는 모릅니다.)
    2. 정밀한 조사 (오프라인 프로파일링): 모든 요리사의 손동작을 1 초 1 초 기록하면 원인을 찾을 수 있지만, 데이터가 너무 방대해서 실시간으로 처리할 수 없습니다. 게다가 기록하는 동안 요리 속도가 느려져서 실제 식당에서는 쓸 수 없습니다.

💡 EROICA 의 핵심 아이디어: "비교를 통한 추리"

EROICA 는 이 두 가지 단점을 모두 해결합니다. **"모든 요리사의 행동을 기록하되, 기록된 데이터는 아주 간결하게 요약해서 비교한다"**는 아이디어입니다.

1. "이상한 냄새"를 맡는 감지기 (자동 감지)

EROICA 는 평소에는 조용히 있다가, 훈련 속도가 갑자기 느려지면 순간적으로 모든 요리사 (GPU) 의 행동을 기록하기 시작합니다. (이때는 20 초만 기록하므로 식당 운영에 큰 지장을 주지 않습니다.)

2. "요리 패턴" 요약 (데이터 압축)

기록된 방대한 데이터 (수 GB) 를 그대로 분석하면 시간이 너무 걸립니다. 대신 EROICA 는 각 요리사의 행동을 3 가지 숫자로 요약합니다.

  • 얼마나 중요한 일을 했나? (전체 시간 중 몇 % 를 썼나?)
  • 자원을 얼마나 썼나? (전기나 물 사용량 평균)
  • 얼마나 들쑥날쑥했나? (사용량의 변동 폭)

이 요약된 데이터는 원본보다 10 만 배나 작아져서 (3GB → 30KB), 모든 요리사의 데이터를 한눈에 비교할 수 있습니다.

3. "남들과 다른 사람" 찾기 (차이점 분석)

이제 EROICA 는 10 만 명의 요리사 데이터를 비교합니다.

  • "대부분의 요리사는 소스 준비에 1 초 걸렸는데, A 요리사만 10 초 걸렸네?"
  • "B 요리사는 네트워크 사용량이 유난히 낮아."

이렇게 **남들과 다른 패턴 (이상치)**을 가진 요리사를 찾아내면, 그 사람이 왜 느린지 (네트워크 끊김, 코드 버그, 하드웨어 고장 등) 쉽게 파악할 수 있습니다.

🛠️ 실제 사례: EROICA 가 해결한 문제들

  1. 데이터 로딩 병목:

    • 상황: 모든 요리사가 재료를 가져오는 데 시간이 걸림.
    • EROICA 발견: "재료를 가져오는 함수 (recv_into) 가 비정상적으로 오래 걸리고 있어."
    • 해결: 저장소 (데이터 소스) 를 더 빠른 곳으로 변경.
  2. 하드웨어 고장 + 코드 문제:

    • 상황: 3,400 개의 GPU 중 일부가 유난히 느림.
    • EROICA 발견: "네트워크 카드 (NIC) 가 고장 난 1 대의 컴퓨터가 있고, 그걸로 인해 다른 컴퓨터들도 대기하고 있어. 또 어떤 컴퓨터는 메모리 정리 (Garbage Collection) 를 하느라 멈춰 있어."
    • 해결: 고장 난 컴퓨터 제거, 메모리 정리 타이밍 조정.
  3. AI 가 직접 버그 수정:

    • 상황: 훈련이 멈춤.
    • EROICA 발견: "어떤 요리사가 데이터를 가져오는 도중 '로그'를 찍느라 멈춰 있어."
    • 해결: EROICA 가 찾은 문제 코드를 AI 코딩 도구에 보여주니, AI 가 **"아, 이 부분에서 모든 요리사가 기다려야 하는 '잠금' 상태가 발생했네요. 고쳐드릴게요"**라고 바로 수정 코드를 만들어냈습니다.

🚀 왜 이것이 혁신적인가요?

  • 실시간성: 훈련을 멈추지 않고 (또는 아주 짧은 시간만 멈추고) 문제를 찾습니다.
  • 정밀성: 하드웨어 문제 (네트워크 끊김) 와 소프트웨어 문제 (나쁜 코드) 를 동시에 찾아냅니다.
  • 확장성: 10 만 개 GPU 가 있어도 3 분 만에, 100 만 개 GPU 가 있어도 7 분 만에 진단이 끝납니다.

📝 한 줄 요약

"거대한 AI 공장 (GPU 클러스터) 에서 속도가 느려지면, EROICA 는 모든 기계의 행동을 '간단한 요약본'으로 만들어 서로 비교하고, '남들과 다른 이상한 기계'를 찾아내어 고장 원인 (하드웨어 고장이나 나쁜 코드) 을 정확히 짚어주는 똑똑한 감시관입니다."

이 시스템은 현재 알리바바 클라우드의 10 만 개 GPU 클러스터에서 1 년 반 동안 운영되며, 97.5% 의 성공률로 어려운 성능 문제를 해결해 왔습니다.