IL-0420 IBM · 2025-01-13 (게시일)ai-infra
Vela 의 GPU 노드에서 PCI-E 링크가 낮은 세대 속도로 떨어져 학습 작업이 몇 % 에서 2배까지 느려졌다
Vela 는 IBM Cloud 안에 구축된 IBM 의 AI 슈퍼컴퓨터이고, 노드마다 80GB A100 GPU 8개가 있다. 노드 안에서는 여러 PCI-E 스위치가 GPU, 네트워크 카드, CPU 를 잇는다. 노드는 가상 머신으로 제공되고, VM 은 PCI-E 장치 패스스루로 GPU 같은 물리 장치에 직접 접근한다. Vela 의 GPU 노드는 PCI-E Gen3 와 Gen4 링크를 쓰지만, 때때로 4 GB/s 처럼 PCI-E Gen 1 과 비슷한 낮은 세대의 성능이 나왔다. 이 저하는 애플리케이션 성능을 몇 % 에서 2배까지 떨어뜨렸다. IBM 이 2년 동안 Vela 를 운영하며 본 고장 가운데 가장 자주 일어난 것도 이 저하였다. IBM 은 이 문제를 소프트웨어 고장으로 분류했지만 근본 원인은 아직 조사 중이라고 밝혔다.
95% 이상의 경우는 PCI-E 장치를 재설정하자 풀렸다. 재설정은 주로 VM 을 재부팅해서 했다. IBM 은 GPU 노드마다 데몬으로 돌며 헬스 체크를 하는 Autopilot 으로, 모든 노드에서 NVIDIA 의 CUDA 코드를 써서 PCI-E 링크를 주기적으로 시험했다. 12시간 평균이 임계값 아래로 떨어진 노드에는 경보를 냈다. 노드가 고장 나도 같은 수의 GPU 로 학습을 다시 시작할 수 있도록 노드의 약 10% 를 버퍼 풀로 남겨 두었다.
- 심각도
- –
- 영향 범위
- Training jobs on Vela that included a node with a downgraded PCI-E link slowed by a few percent up to 2x
- 영향 사용자
- IBM researchers training models on Vela
- 지역
- –
- 감지까지
- –
- 복구까지
- –
증상
Vela 의 GPU 노드는 PCI-E Gen3 와 Gen4 링크를 쓴다. 그런데 때때로 링크 성능이 4 GB/s 처럼 PCI-E Gen 1 과 비슷한, 더 낮은 세대 수준으로 떨어졌다. 이 노드가 낀 학습 작업은 몇 % 에서 2배까지 느려졌다.
PCI-E 링크 저하는 IBM 이 2년 동안 Vela 를 운영하며 본 고장 가운데 가장 자주 일어났고, 성능 저하를 일으키는 가장 흔한 문제였다.
IBM Research 가 만들어 공개한 관측 도구 Autopilot 이 호스트와 장치 사이의 PCI-E 대역폭을 주기적으로 재서 Prometheus 로 내보냈다. Grafana 대시보드에는 링크가 저하된 노드가 표시되었다. 한 노드는 PCI-E 링크가 3.4GB/s 아래로 떨어졌다.
증상 처리량 저하
원인
- 촉발
- –
감지
Autopilot 이 모든 노드에서 NVIDIA 의 CUDA 코드로 PCI-E 링크를 주기적으로 시험했다. 이 시험은 가벼워서 고객 워크로드를 거의 방해하지 않았다. 워크로드와 시험이 같은 자원을 두고 다퉈 생기는 오탐을 막으려고, 한 시간마다 모은 값 12개의 평균이 임계값 아래로 떨어질 때만 경보를 냈다. 링크가 저하된 노드는 Grafana 대시보드에 표시되었다. 임계값은 PCI-E 링크 세대마다 다르다.
조치
- 95% 이상의 경우 PCI-E 장치를 재설정해 문제를 풀었다. 재설정은 주로 VM 을 재부팅해서 했다.
- VM 을 주기적으로 재부팅했다.
후속 조치
- Autopilot 으로 NVIDIA 의 CUDA 코드를 써서 PCI-E 링크 검사를 주기적으로 돌리고, 12시간 평균으로 경보를 낸다.
- PCI-E 링크 저하의 근본 원인을 계속 조사한다.
교훈
수백, 수천 개의 GPU 를 함께 쓰는 분산 학습에서는 노드 한 대의 성능만 떨어져도 작업 전체가 느려진다. 그래서 IBM 은 작업이 도는 동안에도 가벼운 검사를 모든 노드에서 주기적으로 돌려, 성능을 서서히 떨어뜨리는 링크 저하를 미리 찾는다. 이런 검사와 경보 덕분에 SRE 는 사용자가 신고하면 디버깅하던 방식에서 사용자가 알기 전에 먼저 알리는 방식으로 바뀌었고, 근본 원인을 찾는 시간을 2배 넘게 줄였다.
출처
- https://arxiv.org/abs/2407.05467 · paper · 보관본
참고 문서
관련 사례
–
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0420
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0420/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.