Incident Library

IL-0238 DeepSeek · 2024-08-31 (게시일)ai-infra

PCIe A100 1만 장 규모의 Fire-Flyer 2 학습 클러스터에서 GPU Xid 오류와 InfiniBand 링크의 순간 끊김으로 학습 작업이 끊기고 실패했다

DeepSeek-AI 는 PCIe A100 GPU 1만 장으로 Fire-Flyer 2 학습 클러스터를 지었다. 노드마다 PCIe A100 여덟 장과 200Gbps InfiniBand NIC 한 장이 CPU 에 바로 연결되어 있고, LLM 학습을 위해 PCIe 카드 사이에 NVLink Bridge 를 더했다. DeepSeek-AI 가 낸 논문의 VII-C 절은 이 클러스터의 지난 1년 하드웨어 장애 통계를 실었다.

Xid 오류는 NVIDIA 드라이버가 운영체제 로그에 남기는 GPU 오류 메시지다. 지난 1년 동안 12970건이 났고, NVLink 오류인 Xid 74 가 42.57% 로 가장 많았다. Xid 74 는 주로 두 GPU 를 잇는 NVLink Bridge 에서 났고, 발생 빈도가 다른 하드웨어 장애보다 몇 자릿수 높았다. 커넥터 자체의 고장률이 수천 장의 GPU 로 커진 결과였다. 되풀이되는 오류를 스트레스 테스트로 걸러 내는 것 말고는 막을 방법이 마땅치 않았다. 잘못된 메모리 접근인 Xid 43 이 33.48% 였다. 이런 소프트웨어 쪽 오류도 메모리 데이터 손상에서 생길 수 있었다. GPU 메모리 ECC 오류는 약 2% 였고, 여섯 달 동안 CPU 메모리 ECC 오류보다 훨씬 많았다. 실제로 ECC 가 잡지 못한 계산 오류와 GPU 메모리 오류 때문에 모델의 gradnorm 이 치솟고 손실이 폭발하며 수렴하지 않은 일이 있었다.

네트워크 장비 고장도 하드웨어 문제에서 큰 몫을 차지했다. InfiniBand 링크 장애는 Xid 74 를 뺀 하드웨어 장애의 30% 였다. 링크가 순간적으로 끊기면 애플리케이션 통신이 끊기고 작업이 실패하기도 했다. 작업 대부분이 여러 노드에서 돌아 한 노드의 문제가 많은 노드에 번졌고 클러스터 사용률이 떨어졌다. 이 장애는 운영 기간 내내 아무 때나 났다.

DeepSeek-AI 는 장애를 줄이고 견디려고 두 장치를 두었다. 체크포인트 관리자는 파라미터와 옵티마이저 상태를 GPU 에서 CPU 메모리로 비동기로 옮긴 뒤, 보통 5분마다 3FS 에 몇 초 만에 저장했다. 그래서 학습이 끊겨도 마지막 5분의 진행만 잃었다. validator 는 매주 노드를 검사해 고장 난 노드를 스케줄링에서 뺐다. 검사 항목은 하드웨어 주파수, 링크 속도, 링크 상태, CPU 부하 시험, 메모리 대역폭, GPU 메모리의 바이트별 검사, GPU 메모리를 가득 채운 GEMM, NVLink 대역폭을 보는 노드 안 allreduce, 스토리지 대역폭이었다. 그래도 운영 팀에게 하드웨어 장애의 근본 원인을 찾기는 여전히 어려웠다.

심각도
–
영향 범위
Training tasks on the Fire-Flyer 2 cluster were interrupted or failed, losing up to 5 minutes of progress per interruption; undetected memory errors caused gradnorm spikes, loss explosions and non-convergence; cluster utilization fell
영향 사용자
DeepSeek-AI model training
지역
–
감지까지
–
복구까지
–

증상

DeepSeek-AI 의 Fire-Flyer 2 학습 클러스터에서 NVIDIA 드라이버가 운영체제의 커널 로그나 이벤트 로그에 GPU Xid 오류를 남겼다. 지난 1년 동안 Xid 오류는 12970건이었고, 그중 NVLink 오류인 Xid 74 가 5521건으로 42.57% 였다. InfiniBand 링크가 순간적으로 끊겨 애플리케이션 통신이 끊기고 작업이 실패하기도 했다.

Xid 74 는 NVLink 오류를 뜻하며, PCIe A100 에서는 주로 두 GPU 를 잇는 NVLink Bridge 에서 났다. 발생 빈도가 다른 하드웨어 장애보다 몇 자릿수 높았다. 커넥터 자체의 고장률에 수천 장의 GPU 가 곱해진 결과였다.

소프트웨어 쪽 Xid 오류도 많았다. Xid 43 이 4342건으로 33.48%, Xid 31 이 2487건으로 19.18%, Xid 45 가 240건, Xid 13 이 45건이었다. 이 오류들은 사용자 코드의 잘못된 메모리 접근이나 명령을 가리킬 수 있지만, 메모리 데이터 손상에서 생길 수도 있다.

GPU 메모리 ECC 오류인 Xid 63, Xid 64, Xid 94, Xid 95 는 전체의 약 2% 였다. 2023년 10월부터 2024년 3월까지 여섯 달 동안 GPU 메모리 관련 Xid 오류는 CPU 메모리 ECC 오류 54건보다 훨씬 많았다. 고칠 수 없는 GPU 오류인 Xid 44, Xid 48, Xid 61, Xid 62, Xid 69, Xid 79 는 사용자 애플리케이션에도 보고되었다. GPU GSP 모듈이 실패했다는 Xid 119 도 1건 있었다.

ECC 가 잡지 못한 계산 오류와 GPU 메모리 오류는 로그가 아니라 학습 자체에서 드러났다. 모델의 gradnorm 이 치솟고 손실이 폭발했으며, 끝내 수렴하지 않기도 했다.

InfiniBand 링크 장애는 Xid 74 를 뺀 하드웨어 장애의 30% 를 차지했다. 2023년 4월부터 2024년 3월까지 날짜별 기록을 보면 순간 끊김은 클러스터 운영 기간 내내 아무 때나 났다. 가장 많은 날은 하루 10건으로, 2023-05-28, 2023-07-07, 2023-07-12 이었다. 작업 대부분이 여러 노드에서 돌기 때문에 한 노드의 링크 문제가 다른 많은 노드에 영향을 주었고 클러스터 사용률이 떨어졌다.

증상 GPU 인식 불가링크 플래핑학습 작업 실패학습 발산과 손실 급등

원인

촉발
–

감지

Xid 오류는 NVIDIA 드라이버가 운영체제의 커널 로그나 이벤트 로그에 남긴 메시지로 잡았다. 플랫폼의 자동 운영 시스템은 매주 노드에서 validator 를 돌려 하드웨어 이상을 찾았다. ECC 가 잡지 못한 계산 오류와 GPU 메모리 오류는 모델의 gradnorm 급등과 손실 폭발로 드러났다.

조치

후속 조치

–

교훈

장치를 안정되게 하려면 문제가 터지기 전에 찾는 것이 가장 좋다. 하드웨어 장애를 빨리 찾아 분류하는 것이 클러스터 노드의 가동률과 사용률을 높이는 핵심이다. 애플리케이션의 성능과 정확도를 지키려면 GPU ECC 오류를 곧바로 처리해야 한다.

Xid 74 는 되풀이되는 오류를 스트레스 테스트로 걸러 내는 것 말고는 막을 방법이 마땅치 않다. 소프트웨어 쪽 Xid 오류도 메모리 데이터 손상에서 생길 수 있으므로, 소프트웨어 버그가 아니라면 하드웨어 고장을 의심해야 한다. NVLink 는 단점도 있으므로 실제로 필요할 때 설치해야 한다.

출처

참고 문서

관련 사례

내 클러스터에도 있는지 확인하기

kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이 사례와 같은 상태를 점검합니다. 이 사례의 구성 요소: GPU 하드웨어·메모리, InfiniBand 패브릭. 점검 항목의 근거는 이 사례 같은 공개 보고서입니다.

AI 도구와 스크립트용

API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.