{"id":"IL-0127","org":"Meta","date":"2024-07-23","docs":[],"title":{"en":"Llama 3 405B pre-training on 16K H100 GPUs was interrupted 419 times unexpectedly in 54 days, mostly by faulty GPUs, HBM3 memory and other hardware","ko":"Llama 3 405B 사전 학습 54일 동안 학습 작업이 예기치 않게 419번 중단되었고, 주된 원인은 GPU 와 HBM3 메모리 고장이었다"},"domain":["ai-infra"],"impact":{"scope":"the Llama 3 405B pre-training job on up to 16K H100 GPUs; 419 unexpected job interruptions in a 54-day snapshot","users":"unknown","region":"unknown"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":{"en":"Training on 16K GPUs has more failure modes than Meta's much larger CPU clusters, and because training is synchronous a single GPU failure can force a restart of the whole job. Meta raised effective training time by cutting job startup and checkpoint time and by building tools for fast diagnosis, and kept it above 90% while automated firmware and kernel maintenance caused at least one interruption a day.","ko":"동기식 학습은 GPU 하나의 고장에도 작업 전체가 멈출 수 있어 고장에 약하다. 하드웨어 고장은 멈춤으로만 나타나지 않고 느린 straggler 로도 나타나며, straggler 하나가 GPU 수천 개를 느리게 만들 수 있다. 이 규모에서는 기온과 전력망 같은 환경 요인도 학습 성능과 운영에 영향을 준다."},"related":[],"sources":[{"url":"https://arxiv.org/abs/2407.21783","kind":"paper","license":"unknown","archived":null}],"summary":{"en":"Meta trained Llama 3 405B on up to 16K H100 GPUs, each at 700W TDP with 80GB of HBM3, on Grand Teton servers with eight GPUs joined by NVLink and two CPUs per server. Jobs were scheduled by MAST, the large model used a RoCE network fabric, and collectives ran on NCCLX, Meta's fork of NCCL. The paper says the failure modes of 16K-GPU training exceed those of the much larger CPU clusters Meta runs, and synchronous training makes the job less tolerant of faults.\n\nIn a 54-day snapshot the job stopped 419 times without warning. About 78% of those stops came from confirmed hardware faults, such as failed GPUs or host components, or from suspected hardware problems such as silent data corruption and unplanned maintenance of a single host. Faulty GPUs (148) and GPU HBM3 memory (72) were the largest categories, followed by software bugs (54) and network switches or cables (35). Automated cluster maintenance, such as firmware and Linux kernel upgrades, added at least one interruption a day on top of this.\n\nAutomation handled almost all of these interruptions; significant manual intervention was needed only three times in the period, and effective training time, the share of elapsed time spent on useful training, stayed above 90%. Meta shortened job startup and checkpointing, used the PyTorch NCCL flight recorder to record every collective and dump traces on NCCLX watchdog or heartbeat timeouts, and built NCCLX together with PyTorch so a stalled collective is detected, timed out and snapshotted with its pending transfers between ranks.","ko":"Llama 3 405B 사전 학습은 16K GPU 규모라서, Meta 가 운영해 온 훨씬 큰 CPU 클러스터보다 고장 양상이 복잡했다. 학습은 동기식이어서 GPU 하나가 고장 나도 작업 전체를 다시 시작해야 할 수 있었다. 펌웨어와 리눅스 커널 업그레이드 같은 자동 클러스터 유지보수 때문에 하루에 적어도 한 번은 학습이 중단되었다.\n\n54일 기록에서 학습 작업은 466번 중단되었고 419번이 예기치 않은 중단이었다. 약 78% 가 확인되었거나 의심되는 하드웨어 문제였고, GPU 문제가 58.7% 로 가장 컸다. 고장이 많았지만 사람이 크게 손을 대야 했던 경우는 세 번뿐이었고 나머지는 자동화가 처리했다. Meta 는 이런 조건에서도 유효 학습 시간을 90% 넘게 유지했다. 유효 학습 시간은 전체 경과 시간 가운데 실제 학습에 쓴 시간의 비율이다.\n\nMeta 는 작업 시작 시간과 체크포인트 시간을 줄이고, 문제를 빨리 진단하고 해결하는 도구를 만들었다. PyTorch 의 NCCL flight recorder 로 집합 통신의 메타데이터와 스택 트레이스를 모았다. NCCLX 는 Meta 가 Nvidia 의 NCCL 라이브러리를 고쳐 만든 집합 통신 라이브러리다. Meta 는 NCCLX 를 PyTorch 와 함께 설계해, 통신이 멈춘 것을 감지하면 자동으로 타임아웃되게 했다. 느린 GPU 를 찾는 도구도 만들었다.\n\n환경 요인도 있었다. 한낮의 높은 기온이 GPU 의 동적 전압·주파수 조절에 영향을 주어 하루 중 시간에 따라 처리량이 1-2% 오르내렸다. 수만 개의 GPU 가 체크포인트나 집합 통신이 끝나기를 함께 기다리거나 작업 전체가 시작하고 멈출 때, 데이터센터 전력 소비가 수십 메가와트 규모로 순간적으로 흔들렸다. 이 흔들림은 전력망에 큰 부담을 주었다."},"trigger":null,"severity":"unknown","symptoms":["training-job-failed","gpu-unavailable","nccl-timeout"],"timeline":{"detected_after":null,"resolved_after":null},"date_kind":"published","detection":{"en":"The communication library's state is monitored and a stalled collective is timed out automatically; on an NCCLX watchdog or heartbeat timeout the PyTorch NCCL flight recorder dumps its tracing data, including collective metadata and stack traces.","ko":"PyTorch 의 NCCL flight recorder 가 모든 통신 이벤트와 집합 연산마다 걸린 시간을 링 버퍼에 기록했고, NCCLX 워치독이나 하트비트 타임아웃이 나면 추적 데이터를 자동으로 덤프했다. NCCLX 는 통신 라이브러리 상태를 감시하다가 멈춤을 감지하면 자동으로 타임아웃시켰고, 실패한 집합 연산의 내부 상태 스냅샷을 남겼다. 느린 GPU 는 의심스러운 통신에 우선순위를 매겨 보여 주는 도구로 찾았다. 대개 상위 몇 개만 조사해도 찾아낼 수 있었다."},"components":["gpu-hardware","nccl","pytorch"],"root_cause":"hardware-failure","remediation":[{"text":{"en":"handled almost every interruption through automation, with significant manual intervention only three times in 54 days","ko":"대부분의 중단은 자동화가 처리했고, 사람이 크게 손을 대야 했던 것은 54일 동안 세 번뿐이었다."}}],"action_items":[{"text":{"en":"Reduce job startup and checkpointing time","ko":"작업 시작 시간과 체크포인트 시간을 줄였다."}},{"text":{"en":"Use the PyTorch NCCL flight recorder to record every communication event and collective duration and to dump traces on NCCLX watchdog or heartbeat timeouts","ko":"PyTorch 의 NCCL flight recorder 로 모든 통신 이벤트와 집합 연산 시간을 기록하고, NCCLX 워치독이나 하트비트 타임아웃이 나면 추적 데이터를 자동으로 덤프하게 했다."}},{"text":{"en":"Turn on heavier tracing and metadata collection in production through online configuration changes, without a code release or job restart","ko":"계산이 많이 드는 추적과 메타데이터 수집은 운영 중에 필요할 때만 켜게 했다. 켜고 끄는 일은 코드를 배포하거나 작업을 재시작하지 않고 온라인 설정 변경으로 하게 했다."}},{"text":{"en":"Give PyTorch access to NCCLX internal state so stalls are detected and localised faster, with a snapshot of the failing collective's finished and pending transfers","ko":"PyTorch 가 NCCLX 의 내부 상태에 접근하게 해 멈춤을 더 빨리 감지하고 멈춘 위치를 찾게 했다. 실패한 집합 연산의 끝난 전송과 남은 전송은 스냅샷으로 남기게 했다."}}],"contributing":["single-point-of-failure"],"recurrence_of":null,"symptoms_text":{"en":"Over a 54-day snapshot of Llama 3 405B pre-training the training job was interrupted 466 times. 47 interruptions were planned: automated maintenance such as firmware upgrades, or operator actions such as configuration or dataset updates. The other 419 were unexpected. Because training is synchronous, a failure on a single GPU can force a restart of the whole job.\n\nThe paper's breakdown of the 419 unexpected interruptions, with its own counts and percentages: faulty GPU 148 (30.1%), GPU HBM3 memory 72 (17.2%), software bug 54 (12.9%), network switch or cable 35 (8.4%), unplanned host maintenance 32 (7.6%), GPU SRAM memory 19 (4.5%), GPU system processor 17 (4.1%), NIC 7 (1.7%), NCCL watchdog timeouts 7 (1.7%, cause unknown), silent data corruption 6 (1.4%), GPU thermal interface and sensor 6 (1.4%), SSD 3 (0.7%), power supply 3 (0.7%), server chassis 2 (0.5%), IO expansion board 2 (0.5%), dependency 2 (0.5%), CPU 2 (0.5%) and system memory 2 (0.5%). GPU issues as a group account for 58.7%, and about 78% are confirmed or suspected hardware problems.\n\nSome failures give no clear error. When a remote GPU or an NVLink connection fails, the failure often shows up only as stalled load or store operations inside CUDA kernels, without a clear error code. Such stalls cannot be completely prevented; Meta's system monitors the state of the communication library and times out automatically when it detects one.","ko":"Meta 는 최대 16K 개의 H100 GPU 로 Llama 3 405B 를 사전 학습했다. 54일 동안의 기록에서 학습 작업은 모두 466번 중단되었고, 그중 419번이 예기치 않은 중단이었다. 나머지 47번은 펌웨어 업그레이드 같은 자동 유지보수나, 설정과 데이터셋 갱신 같은 운영자 작업에 따른 계획된 중단이었다.\n\n예기치 않은 중단 가운데 약 78% 는 확인되었거나 의심되는 하드웨어 문제였다. 가장 큰 범주는 GPU 문제로 전체의 58.7% 였다. 원인별로 보면 고장 난 GPU 가 148번으로 30.1%, GPU HBM3 메모리가 72번으로 17.2%, 소프트웨어 버그가 54번으로 12.9%, 네트워크 스위치와 케이블이 35번으로 8.4%, 계획에 없던 호스트 유지보수가 32번으로 7.6%, GPU SRAM 메모리가 19번으로 4.5%, GPU 시스템 프로세서가 17번으로 4.1% 였다. NIC 와 NCCL 워치독 타임아웃이 각각 7번으로 1.7%, 사일런트 데이터 커럽션, GPU 열 인터페이스와 센서가 각각 6번으로 1.4%, SSD 와 전원 공급 장치가 각각 3번으로 0.7%, 서버 섀시, IO 확장 보드, 의존성, CPU, 시스템 메모리가 각각 2번으로 0.5% 였다.\n\nNVLink 로 데이터를 주고받다가 원격 GPU 나 NVLink 연결이 고장 나면, 분명한 오류 코드 없이 CUDA 커널 안의 load/store 연산이 멈춘 모습으로 나타나는 경우가 많았다. 네트워크에 NVLink 와 RoCE 가 섞여 있어 디버깅이 더 어려웠다.\n\n하드웨어 문제가 GPU 를 멈추지 않고 느리게만 만들기도 했다. 다른 GPU 보다 느리게 돌면서 전체를 늦추는 GPU 를 straggler 라고 부른다. straggler 하나가 다른 GPU 수천 개를 느리게 만들 수 있었고, 겉으로는 통신이 돌기는 하지만 느린 것처럼 보였다."},"updated_at":"2026-11-10T00:00:34.882026Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0127","org_slug":"meta"}