IL-0025 Imbue · 2024-06-25 (게시일)ai-infranetworking
Imbue 는 연구자와 엔지니어 몇 명으로 몇 달 만에 자체 인프라에서 70B 모델을 처음부터 학습했다. 이 글은 H100 GPU 4,088개, 서버 511대로 된 클러스터를 베어 메탈에서 학습할 수 있는 상태로 만들기까지 겪은 문제와 해결 과정을 정리한다. 서버마다 GPU 가 8개 있었고, GPU 마다 400 Gbps ConnectX-7 카드가 하나씩 직접 연결돼 3단 InfiniBand 네트워크로 이어졌다. 연결이 12,000개가 넘어서 하나만 조금 불안해도 전체 학습이 느려질 수 있었다.
장비 단계에서는 서버의 약 10% 가 주로 물리적 문제로 부팅되지 않았다. 단일 노드 학습에서는 GPU 를 다시 장착해야 고쳐지는 오류가 많았고, PCIe 스위치 버스 펌웨어를 올린 뒤에는 클러스터 호스트의 약 4분의 1 에서 내부 PCIe 케이블을 다시 꽂아야 했다. 온도 값이 틀려 팬이 계속 100% 로 돌았는데, 잘못된 NVIDIA 드라이버가 한 원인이어서 이전 드라이버로 내려 해결했다. 몇 대에만 나타난 나머지 문제는 Dell 이 펌웨어 업그레이드로 고쳤다.
InfiniBand 에서는 최상위 패브릭이 하나로 묶이지 않고 서로 경로가 없는 네트워크 여덟 개로 잘못 설계돼 UFM 이 스위치를 찾지 못했다. 다시 배선한 뒤에는 같은 랙의 스위치 사이 빈 공간으로 뜨거운 공기가 앞쪽으로 되돌아와 포트 온도가 치솟았다. 많은 포트가 높은 오류율과 플래핑을 보였고, 데이터센터 파트너가 포트를 청소하고 다시 꽂았다. 팀은 모든 포트에 동시에 최대한 데이터를 밀어 넣는 번인 작업을 돌려 버틴 포트만 남기고 나머지는 끄거나 수리로 넘겼다. GPUDirect RDMA 를 켜면 곧바로 멈추는 문제는 커널 모듈을 추가하고 PCIe Access Control Service, 줄여서 ACS 를 끈 뒤에야 사라졌다.
운영 중 큰 회귀가 생긴 원인은 주로 두 가지였다. 펌웨어 업그레이드, 특히 클러스터 절반에만 올린 업그레이드는 UFM 상태를 깨뜨려 모든 InfiniBand 스위치에서 UFM 을 재시작해야 할 수 있었다. GPU 서버를 한꺼번에 재시작해도 UFM 상태에 업데이트가 몰려 UFM 서비스를 재시작해야 할 수 있었다. 최신 하드웨어를 쓰는 GPU 클러스터에서는 매주 기계의 약 3% 가 고장 난다고 보는 것이 경험칙이다. 하지만 모든 기계가 고르게 3% 확률로 고장 나는 것이 아니라, 소수의 문제 기계가 제대로 고칠 때까지 계속 다른 방식으로 고장 났다.
학습 단계에서는 NCCL 워치독 타임아웃으로 멈추는 문제와 MFU 저하가 가장 다루기 어려웠다. 팀은 NCCL 에 로깅을 더한 포크를 만들어 멈춤을 일으킨 호스트를 찾았다. 처리량이 주기적으로 처지는 원인은 프로파일링으로 자동 가비지 컬렉션이라는 것을 확인했다. FSDP 같은 동기식 분산 학습에서는 블로킹 연산 중에 워커 하나가 가비지 컬렉션을 돌리면 다른 워커가 모두 느려질 수 있다. 자동 가비지 컬렉션을 끄고 모든 호스트에서 정해진 간격으로 돌리자 처짐이 사라졌다. 팀은 헬스 체크, 자동 재시작, UFM 로그 처리 같은 도구를 만들어 사람이 손으로 고치는 일을 줄였고, 그중 상당수를 공개했다.
Imbue 는 H100 GPU 4,088개를 서버 511대에 나눠 담은 클러스터를 베어 메탈부터 구축하고 그 위에서 70B 모델을 학습했다. 처음 마주친 것은 장비 자체였다. 서버의 약 10% 가 주로 물리적 문제로 부팅되지 않았고, InfiniBand 네트워크를 관리하는 Unified Fabric Manager, 줄여서 UFM 은 처음에 스위치 320대를 하나도 찾지 못했다.
InfiniBand 쪽에서는 경고가 끝없이 들어왔다. 배선을 고친 뒤에는 거의 모든 스위치 포트가 데이터를 보내지 않는 상태에서도 지나치게 높은 온도를 알렸다. 70도가 넘을 때도 있었고, 온도 경고는 1만 건에 이르렀다. 이어서 1,800건의 경고가 왔다. 많은 포트가 높은 오류율을 보이거나 정상과 고장 사이를 오가는 플래핑을 했고, 이 문제는 포트를 실제로 쓸 때만 드러났다. 패브릭의 약 10% 가 문제를 일으키자 adaptive routing 도 제멋대로 끊기는 링크를 제대로 피하지 못했다.
서버 한 대 안에서도 문제가 많았다. GPU 오류가 났고, Ubuntu 서버 로그에는 GPU 와 PCIe 버스나 네트워크 카드 사이의 연결이 "limited width: x4 < x16" 으로 찍혔다. 결함으로 표시되지 않으면서 건드리면 기계 전체를 멈추게 하는 NVMe 드라이브가 있었다. 온도 값이 틀려 팬이 늘 100% 로 돌았고, CPU 동적 주파수 조절이 고장 나 활성 코어가 2 GHz 로 묶였다. GPUDirect RDMA, 줄여서 GDR 을 적용하는 것도 처음에는 실패했다.
학습 중에는 모든 GPU 워커에서 동시에 다음 오류가 나며 학습이 멈췄다. Watchdog caught collective operation timeout: WorkNCCL(SeqNum=408951, OpType=_ALLGATHER_BASE, … , Timeout(ms)=600000) ran for 600351 milliseconds before timing out 호스트 하나 이상이 NCCL 연산을 끝내지 못하거나 NCCL 과 InfiniBand 연결에서 떨어져 나가면, 나머지 호스트가 모두 NCCL_TIMEOUT 까지 기다렸다. NCCL 의 특성상 어느 호스트가 원인인지 찾기가 매우 어려웠다. Xid, SXid 오류처럼 의미 있는 Python 스택 트레이스 없이 작업을 죽이는 하드웨어 오류도 있었다.
느려짐도 여러 모양으로 나타났다. MFU 는 모델이 GPU 의 이론 연산 성능을 얼마나 쓰는지 나타내는 지표다. MFU 가 처음부터 기대치의 10분의 1 아래에 머물면 대개 T2 나 T3 계층의 죽은 스위치 같은 InfiniBand 하드웨어 문제였다. 30% 에 머물면 GDR 설정이 잘못된 호스트가 하나 있을 수 있었고, 60-80% 면 성능이 떨어지거나 고장 난 InfiniBand 링크가 원인인 경우가 많았다. 학습이 진행될수록 MFU 가 서서히 처지다가 재시작하면 100% 로 돌아오는 현상은 자동 가비지 컬렉션 때문이었다. 처음에는 좋다가 15초마다 70% 로 떨어지는 현상은 DCGM 의 GPU clock throttle reasons 와 함께 나타났고, 열이나 전원 공급 장치 문제가 원인이었다.
UFM 경고, 호스트 헬스 체크, DCGM 과 Prometheus 지표, 학습 중 MFU 와 NCCL 워치독 오류로 문제를 알아챘다. InfiniBand 포트 문제는 포트를 실제로 쓸 때만 드러나서, 모든 포트에 부하를 거는 번인 작업을 만들어 더 효율적으로 찾았다. 멈춤을 일으킨 호스트는 특정 로그를 남기지 않은 호스트를 찾는 방식으로 가려냈다. 팀은 배치마다 순간 MFU 를 살펴보고, MFU 가 떨어지는 곡선 모양으로 문제 종류를 구분했다.
대형 GPU 클러스터에서는 연결 하나만 조금 불안해도 전체 학습이 느려질 수 있다. Imbue 는 학습에 필요한 것보다 10-20% 많은 기계를 두면 고장 난 기계를 쉽게 바꿔 다시 시작할 수 있다고 정리했다. 학습 중 겪는 문제는 모두 다시 일어나므로, 겪은 하드웨어와 소프트웨어 장애마다 테스트와 자동 처리를 만들 가치가 있다. 알아보기 어려운 오류 메시지마다 그 오류를 읽기 쉽게 만드는 도구를 만드는 것도 마찬가지다. Imbue 는 재현성을 지키려고 아주 단순한 일도 한 번에 하나씩만 바꿨다. 외부 도구를 들이거나 새 사람이 합류하면 그쪽이 내놓은 주장을 다시 확인했고, 다음 단계가 그 결과에 기댈 때는 특히 그렇게 했다. 고장은 고르게 나지 않고 소수의 문제 기계에 몰리므로, 그때그때 고장 나는 기계를 하나씩 고치기보다 믿을 수 있는 기계 묶음을 키우는 편이 낫다.
같은 원인 · 공통 InfiniBand 패브릭, NCCL, PyTorch
IL-0126 OPT-175B 학습이 클라우드 노드의 ECC 메모리 오류, 같은 결함을 안고 돌아온 교체 노드, 멈추는 체크포인트 다운로드 때문에 2주 동안 40번 넘게 재시작했다.Meta AI · 2021같은 원인 · 공통 InfiniBand 패브릭, NCCL
IL-0133 폭풍으로 데이터센터 냉각이 멈춰 us-central1 리전 전체가 내려갔고, 디스크 핫플러그 버그로 Managed Kubernetes 컨트롤 플레인 약 140개의 복구가 길어졌다.Nebius · 2026같은 원인 · 공통 InfiniBand 패브릭
IL-0134 AUS01 데이터센터에 전력 문제가 생겨 GPU 노드 246대와 스파인 스위치, VAST 스토리지가 한꺼번에 재부팅됐고, 워크로드가 실패하고 NFS 마운트가 끊겼다.Lambda · 2026 · sev1같은 원인 · 공통 InfiniBand 패브릭
IL-0021 GKE 의 COS 노드가 NVIDIA GPU 드라이버를 403 Forbidden 으로 받지 못해 새로 만든 GPU 노드를 쓸 수 없었다Google Cloud · 2024같은 원인 · 공통 GPU 드라이버
https://incidentlib-mcp.benchlet.com/mcpAPI 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.