IL-0411 Meta · 2024-10-29 (게시일)ai-infra
헬스 체크를 통과하는 레몬 노드가 Meta 연구 클러스터의 학습 작업을 거듭 실패시켰다
Meta FAIR 의 엔지니어들이 자사 연구 클러스터 RSC-1 과 RSC-2 의 11개월치 데이터를 분석한 논문이다. RSC-1 은 범용 ML 클러스터로 GPU 16k 규모이고, RSC-2 는 비전 작업 위주로 GPU 8k 규모이며, 데이터는 작업 400만 개와 A100 GPU 시간 1억 5천만 시간이 넘는다. 두 클러스터는 Slurm 으로 작업을 스케줄하고, 작업 전후와 5분마다 도는 헬스 체크로 고장 난 노드를 찾아 뺀다. 노드가 노드 안에서 도는 다른 헬스 체크에 응답하지 않으면 마지막 장치인 Slurm heartbeat 가 이를 NODE_FAIL 로 잡는다. 논문은 실패 원인이 작업 수명의 마지막 10분 안이나 끝난 뒤 5분 안에 감지되면 그 원인을 작업 실패의 원인으로 보았다.
헬스 체크는 무작위로 나는 노드 고장을 잘 찾았지만, 잘못된 설정이나 노화나 하드웨어 결함 때문에 실패가 특정 노드에 몰리는 경우가 있었다. 논문은 이런 노드를 레몬 노드라고 부르고, 작업을 거듭 실패시키지만 헬스 체크나 수리 절차 같은 기존 장치로는 찾지 못하는 서버라고 정의했다. 이런 노드는 실패한 작업이 다시 스케줄될 때마다 새 작업을 받아 다시 실패시켜 ETTR 을 떨어뜨렸다. ETTR 은 Effective Training Time Ratio 로, 쓸 수 있었던 실제 시간 가운데 작업이 의미 있게 진행된 시간의 비율이다. 연구자들이 경험으로 노드를 손으로 빼는 방식은 규모가 커지면 버티지 못했다. 논문은 학습 작업 실패의 가장 중요한 요인 가운데 하나가 NODE_FAIL 이므로 레몬 노드를 미리 다루는 일이 중요하다고 밝혔다.
팀은 노드마다 있는 수십 가지 신호 가운데 레몬 노드와 상관관계가 가장 큰 일곱 가지를 골랐고, RSC-1 의 28일치 데이터로 기준값을 정했다. 기준값은 예측한 레몬 노드의 정확도와 오탐률을 보며 손으로 조정했다. 이 탐지로 RSC-1 에서 24대, RSC-2 에서 16대, 모두 40대의 결함 노드를 85% 넘는 정확도로 찾았다. 찾은 레몬 노드는 RSC-1 전체 규모의 1.2%, 일일 작업의 13%, RSC-2 전체 규모의 1.7% 였다. 찾은 레몬 노드 가운데 85% 넘는 노드가 테스트 하나에서 실패했고, 원인은 GPU 28.2%, DIMM 20.5%, PCIE 15.4%, EUD 10.3%, NIC 7.7%, BIOS 7.7%, PSU 5.1%, CPU 2.6%, Optics 2.6% 였다. 레몬 노드 탐지로 512개 이상의 GPU 를 쓰는 대형 작업의 실패가 14% 에서 4% 로 10%포인트 줄었다.
- 심각도
- –
- 영향 범위
- Jobs placed on lemon nodes in RSC-1 and RSC-2; before lemon detection 14% of jobs on 512+ GPUs failed
- 영향 사용자
- Researchers running ML jobs on RSC-1 and RSC-2
- 지역
- –
- 감지까지
- –
- 복구까지
- –
증상
헬스 체크에 걸리지 않는 특정 노드들에서 학습 작업이 평균보다 자주 실패했다. 작업이 실패해 다시 스케줄되면 이 노드들이 새 작업을 또 받았고, 그 작업도 결국 실패했다. 논문은 이런 노드를 레몬 노드라고 불렀다.
레몬 노드와 상관관계가 가장 큰 노드 신호는 excl_jobid_count, xid_cnt, tickets, out_count, multi_node_node_fails, single_node_node_fails, single_node_node_failure_rate 였다. 각각 그 노드를 제외하도록 지정한 서로 다른 작업의 수, 노드가 겪은 서로 다른 XID 오류 수, 노드에 열린 수리 티켓 수, 스케줄러가 노드를 가용 상태에서 뺀 횟수, 노드 때문에 실패한 다중 노드 작업 수, 노드 때문에 실패한 단일 노드 작업 수, 노드의 단일 노드 작업 실패율이다.
피해는 큰 작업에서 컸다. 레몬 노드 탐지를 넣기 전에는 512개 이상의 GPU 를 쓰는 대형 작업의 14% 가 실패했다.
이런 노드는 빨리 찾기 어려웠다. 통계적으로 의미 있는 판단을 하려면 오랜 기간의 실패 기록을 봐야 했다. 실패율이 특정 노드에 몰려 있었기 때문에 팀은 하드웨어가 낡아 가거나 노드에 잘못 설정된 소프트웨어가 돌고 있다고 의심했다.
처음에는 연구자들이 경험에 기대 작업을 실패시키는 노드를 손으로 제외했다. 이 방식은 규모가 커지면 버티지 못했고, 노드를 너무 많이 빼면 용량이 모자랄 수 있었다. RSC-1 의 28일치 데이터를 보니 적지 않은 노드가 적어도 한 작업에서 제외됐지만, 사용자가 남긴 excl_jobid_count 신호는 노드 실패와 상관관계가 강하지 않았다.
증상 학습 작업 실패
원인
- 촉발
- –
감지
팀은 일부 노드의 작업 실패율이 평균보다 높다는 것을 보고 문제를 알았다. 실패율이 특정 노드에 몰려 있었지만, 통계적으로 의미 있게 판단하려면 오랜 기간의 실패 기록을 봐야 해서 빨리 찾기는 어려웠다.
조치
- 레몬 노드를 미리 찾아 Slurm 에서 격리하고 교체하는 레몬 노드 탐지를 설계해 넣었다.
- 레몬 노드 탐지로 RSC-1 의 24대와 RSC-2 의 16대, 모두 40대의 결함 노드를 찾아냈다.
후속 조치
–
교훈
논문은 결함 있는 노드를 찾으려면 과거 기록이 꼭 필요하다고 밝혔다. 레몬 노드 탐지를 넣으면 대형 작업의 완료율을 30% 넘게 높일 수 있다. 결함 있는 노드에 작업이 거듭 스케줄되면 실패가 잇따르므로, 그런 노드를 확실히 빼낼 수 있어야 무작위 고장에서 회복하는 장치도 제대로 효과를 낸다. 노드를 빼는 부담을 ML 개발자에게 맡기지 않고 레몬 노드를 미리 찾아야 한다.
출처
- https://arxiv.org/abs/2410.21680 · paper · 보관본
관련 사례
같은 원인 · 공통 GPU 하드웨어·메모리, Slurm 작업 스케줄러
같은 원인 · 공통 GPU 하드웨어·메모리
IL-0415Delta 의 A100 GPU 에서 GSP 오류, GPU Fallen Off the Bus 오류, NVLink 오류가 나 GPU 가 오류 상태에 빠지고 그 위의 작업이 실패했다NCSA · 2025같은 원인 · 공통 GPU 하드웨어·메모리
같은 원인 · 공통 GPU 하드웨어·메모리
IL-0421Alibaba 의 LLM 학습 클러스터에서 GPU 결함을 비롯한 오류로 작업이 거듭 죽어 2023년 6월 한 작업이 시간의 31.19% 를 잃었다Alibaba Group · 2025같은 원인 · 공통 GPU 하드웨어·메모리
IL-0414NCSA Delta 의 H100 GPU 에서 uncorrectable 메모리 오류가 A100 보다 잦게 나 사용자 작업이 실패하고 노드가 내려갔다NCSA · 2025같은 원인 · 공통 GPU 하드웨어·메모리
IL-0238PCIe A100 1만 장 규모의 Fire-Flyer 2 학습 클러스터에서 GPU Xid 오류와 InfiniBand 링크의 순간 끊김으로 학습 작업이 끊기고 실패했다DeepSeek · 2024같은 원인 · 공통 GPU 하드웨어·메모리
같은 원인 · 공통 GPU 하드웨어·메모리
IL-0239LLM 개발 클러스터 Acme 의 Seren 과 Kalos 에서 사전 학습 작업이 하드웨어, 네트워크, 프레임워크 오류로 자주 실패해 학습 진행을 잃었다Shanghai AI Laboratory · 2024같은 원인 · 공통 GPU 하드웨어·메모리
IL-0125Jean Zay 에서 진행한 176B 다국어 모델 학습에서 GPU 가 고장 나도 학습 작업이 끝나지 않고 멈춰 버려 SLURM 이 작업을 자동으로 재시작하지 못했다.BigScience · 2022같은 원인 · 공통 Slurm 작업 스케줄러
같은 원인 · 공통 GPU 하드웨어·메모리
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0411
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0411/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.