Incident Library

IL-0427 BigScience · 2021-08-12ai-infra

tr1-13B 학습이 고장 난 GPU 가 있는 노드에서 연달아 두 번 죽었다

tr1-13B 학습은 JZ 에서 Slurm job array 로 돌았다. job array 의 작업 하나가 여러 시간 학습한 뒤 iteration 43680 에서 역전파 도중 `cudaErrorECCUncorrectable: uncorrectable ECC error encountered` 로 죽었다.

그때 아무도 지켜보지 않았고, Slurm 스케줄러는 job array 의 다음 학습 작업을 띄웠다. 스케줄러가 같은 노드를 다시 배정해서 이 작업은 2021-08-12 08:19 에 시작하자마자 `torch.distributed.barrier()` 에서 `RuntimeError: CUDA error: out of memory` 로 죽었다.

팀은 GPU 하나에 하드웨어 문제가 있다고 보고 JZ 관리자에게 연락했고, 관리자는 노드 하나가 고장 난 것을 확인했다. 그다음 학습 작업은 그 노드에 배정되지 않아 학습이 이어졌다. 당시에는 예외가 난 노드의 호스트 이름을 알 방법이 없었다. 그래서 팀은 `#SBATCH --output` 에 `%N` 을 넣어 노드마다 로그 파일을 따로 남기기로 했다.

심각도
–
영향 범위
The tr1-13B training run crashed twice in a row on the same faulty node and stopped until the next job landed on other nodes
영향 사용자
–
지역
–
감지까지
–
복구까지
–

증상

tr1-13B 학습이 여러 시간 돌다가 iteration 43680 에서 죽었고, Slurm 이 이어서 띄운 다음 작업도 시작하자마자 죽었다.

첫 충돌은 DeepSpeed 파이프라인 엔진의 `_exec_backward_pass` 에서 역전파를 하던 중에 났다. 로그에는 `RuntimeError: transform: failed to synchronize: cudaErrorECCUncorrectable: uncorrectable ECC error encountered` 가 찍혔고, 이어서 `terminate called after throwing an instance of 'c10::Error'` 와 `what(): CUDA error: uncorrectable ECC error encountered` 가 찍혔다.

두 번째 작업은 2021-08-12 08:19 에 시작해 퓨즈드 커널을 컴파일하고 불러오는 단계의 `torch.distributed.barrier()` 에서 `RuntimeError: CUDA error: out of memory` 로 죽었다.

팀은 두 번 연달아 죽은 것을 보고 GPU 하나에 하드웨어 문제가 있다고 봤다. 하지만 예외를 그 예외가 난 노드의 호스트 이름과 이어 볼 방법이 없어서 로그만으로는 어느 노드가 고장인지 알 수 없었다.

증상 학습 작업 실패GPU 인식 불가

원인

촉발
학습에 배정된 노드 하나의 GPU 에 하드웨어 문제가 생겨 정정할 수 없는 ECC 오류가 났다.

감지

첫 충돌 때는 아무도 지켜보지 않았고, 스케줄러가 띄운 다음 작업도 죽은 뒤에야 문제를 알았다. 팀은 두 번의 실패를 보고 GPU 하드웨어 문제를 의심했고, JZ 관리자에게 물어 노드 하나가 고장 난 것을 확인했다.

조치

후속 조치

교훈

예외가 난 노드의 호스트 이름을 알 수 없으면, 다음 작업이 고장 난 노드에 다시 배정돼 학습이 거듭 죽는다. 호스트 이름을 알면 `sbatch --exclude` 로 그 노드를 뺄 수 있으므로, 예외와 노드를 이어 주는 수단이 꼭 있어야 한다.

출처

관련 사례

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

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

AI 도구와 스크립트용

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