사례3건
3건 중 1~3번째
IL-013760노드 B200 학습 클러스터에서 노드들의 작은 랜덤 I/O 가 VAST 스토리지의 메타데이터 서비스를 포화시켜 학습 초기화가 8시간 넘게 걸렸다Lablup Inc2026- 증상
60노드 B200 학습 구성을 운영 규모로 늘리자 VAST 스토리지에서 학습을 초기화하는 단계가 몇 분이 아니라 8시간 넘게 걸렸다. 그동안 처리량은 이론상 한계보다 훨씬 낮게 머물렀다. 2~4노드 규모로 한 초기 검증에서는 큰 문제가 없었다.
- 촉발
학습 구성을 2~4노드 시험 규모에서 60노드 운영 규모로 늘렸다.
- 원인
- 구성 요소
- 기여 요인
- 감지
운영 규모로 늘린 뒤 학습 초기화가 몇 분이 아니라 8시간 넘게 걸리면서 드러났다. 애플리케이션 로그로는 초기화 지연만 보였다. 원인은 다섯 조직이 함께 쓰는 모니터링 파이프라인에서 애플리케이션, 스케줄러, 네트워크, 스토리지 지표를 같은 타임라인에 맞춰 본 뒤에야 찾았다.
- 조치
- 애플리케이션 쪽에서 Arrow 파일을 rank 별로 나누는 파일 샤딩을 적용했다.
- 스토리지 쪽에서 동기 rm/unlink 대신 비동기 삭제를 쓰도록 바꿨다.
- readahead 설정을 조정했다.
- 교훈
2~4노드 규모에서 본 성능 특성으로는 60노드에서 어떻게 동작할지 예측할 수 없었다. 이런 스토리지와 메타데이터 병목은 운영 규모에서만 드러나므로 작은 규모의 사전 시험으로는 찾기 어렵다. 이 규모에서는 한 팀이 따로 하는 모니터링만으로 근본 원인을 찾을 수 없었고, 조직 경계를 넘어 지표를 공유하는 파이프라인이 있어야 했다. GPU 용량을 늘리면서 그에 맞는 스토리지 처리 경로를 갖추지 않으면 운영 규모에서만 보이는 급격한 성능 저하가 생긴다.
IL-0134AUS01 데이터센터에 전력 문제가 생겨 GPU 노드 246대와 스파인 스위치, VAST 스토리지가 한꺼번에 재부팅됐고, 워크로드가 실패하고 NFS 마운트가 끊겼다.- 증상
2026년 2월 14일 21:06 UTC 에 AUS01 데이터센터의 GPU 노드가 모두 동시에 재부팅됐다. 노드는 곧 다시 올라왔지만, 계획에 없던 재부팅이었고 여러 고객이 영향을 받았다.
- 촉발
AUS01 데이터센터에 전력 문제가 생겨 전원이 끊겼다.
- 원인
- 구성 요소
- 기여 요인
- –
- 조치
- 컴퓨트 패브릭과 InfiniBand 연결을 복구해 스파인 스위치 4대 전부와 대부분의 리프 스위치를 다시 온라인으로 올렸다.
- UPS 이중화를 일부 복구하고, 스토리지와 보호 전원을 완전히 되살리는 작업을 이어 갔다.
- AUS01 의 모든 노드 전원을 올리고 물리 점검을 마친 뒤 스토리지를 다시 올렸다.
- us-west-3 의 Starbase 와 스토리지에 의존하는 다른 서비스를 복구했다.
- NFS 마운트가 stale 상태이거나 비어 있는 고객에게 VM 을 재부팅하라고 안내했고, VM 재부팅으로 풀리지 않으면 하이퍼바이저 재부팅이 필요하다고 알렸다.
- 교훈
전원이 끊겨 GPU 노드와 함께 네트워크 스파인과 공유 스토리지까지 재부팅되면, 노드 자체가 다시 뜨는 것보다 전체 복구가 훨씬 오래 걸린다. GPU 노드는 곧 다시 올라왔지만, 팀은 패브릭을 먼저 되살렸고 스토리지는 물리 점검을 마친 뒤에야 다시 올렸다. 일부 VM 에는 stale 상태의 NFS 마운트가 남아, Lambda 는 고객에게 VM 을 재부팅하고 그래도 안 되면 하이퍼바이저를 재부팅하라고 안내했다.
IL-0129SmolLM3 사전 학습에서 공유 Weka 스토리지가 데이터셋 샤드를 S3 로 내보내고 Nanotron 데이터로더의 인덱스가 스텝마다 커지면서, 학습을 시작한 지 몇 시간 만에 처리량이 거듭 급락했다.Hugging Face2025- 증상
Hugging Face 팀은 SmolLM3 본 학습을 시작했다. 48개 노드의 H100 GPU 384개로 11T 토큰을 학습하는 일정이었다. 시작하고 몇 시간 안에 처리량이 가파르게 떨어졌고, 이런 급락이 여러 번 되풀이됐다. 처리량은 학습 중 초당 처리하는 토큰 수다. 처리량이 50% 떨어지면 한 달짜리 학습이 두 달짜리가 된다.
- 촉발
팀은 약 24 TB 전체 데이터셋을 여러 팀이 함께 쓰는 Weka 스토리지에 두고, 11T 토큰에 맞춘 실제 스텝 수로 본 학습을 시작했다.
- 원인
- 구성 요소
- 기여 요인
- 감지
팀은 학습 중 초당 토큰 처리량을 기록하고 있었다. 학습을 시작하고 몇 시간 안에 이 값이 급락하는 것이 보였다. SmolLM3 에서 기대한 처리량은 초당 13,500에서 14,000 토큰이었다. 팀은 처리량이 이 범위를 계속 벗어나면 위험 신호로 보았다. 그리고 노드 모니터링 지표에서 처리량이 떨어진 시점과 디스크 읽기 지연이 급증한 시점이 겹치는 것을 보고 스토리지를 원인으로 짚었다.
- 조치
- 데이터셋을 Weka 에서 빼서 각 노드의 로컬 NVMe RAID 스크래치 스토리지에 올렸다.
- 교체한 노드에 데이터를 채울 때 S3 에서 s5cmd 로 24 TB 를 받으면 3시간이 걸렸다. 그래서 같은 데이터센터의 정상 노드에서 fpsync 로 복사해 1.5시간으로 줄였다.
- 데이터셋을 미리 올려 둔 예비 노드 하나를 Slurm 예약에 넣어 두고, 노드가 죽으면 바로 예비 노드로 바꿨다.
- 노드 하나에서도 급락을 재현해 하드웨어를 원인에서 뺐고, 약 3M 스텝과 32k 스텝으로 각각 돌려 원인을 스텝 수로 좁혔다.
- Nanotron 의 nanosets 데이터로더를 SmolLM2 에서 쓰던 TokenizedBytes 데이터로더로 바꿔 넣자 급락이 사라졌다.
- TokenizedBytes 로 바꾼 뒤 손실이 거칠어진 문제를 고치려고, 토큰화된 시퀀스를 에포크마다 다른 시드로 오프라인에서 미리 섞었다. 이 작업에 약 1시간이 걸렸다.
- 교훈
마감이 급할 때는 자기 구현을 디버깅하는 것보다 검증된 해법이나 빠른 우회책을 가져오는 편이 빠를 수 있다. 팀은 nanosets 의 인덱스 구현을 고치는 대신 TokenizedBytes 데이터로더를 가져왔다. 손실 문제도 데이터로더에 손대지 않고 오프라인에서 시퀀스를 미리 섞어 풀었다. 다만 임시방편을 너무 많이 쓰면 유지보수와 최적화가 어려운 누더기 시스템이 된다. 팀은 어블레이션과 본 학습 사이에 무엇이 바뀌었는지 정확히 알고 있었기 때문에 데이터셋 크기, 스텝 수, 하드웨어 상태를 하나씩 지워 가며 원인을 좁힐 수 있었다. 두 번째 문제는 처리량이 안정됐던 SmolLM2 의 데이터로더를 대규모로 검증하지 않은 데이터로더로 바꾸면서 생겼다.
이 3건에서 가장 많이 나오는 구성 요소: 공유 네트워크 파일 시스템, 데이터센터 전력·냉각. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.