경험 중심 1인칭 답변
GPU 클러스터에서 모델 학습 파이프라인을 운영하면서 배치별 처리 시간이 들쑥날쑥한 문제가 반복됐습니다. 원인을 찾기 위해 처음엔 단순히 로그만 확인했는데, 로그만으로는 어느 구간에서 병목이 생기는지 알 수 없었습니다. 그래서 Prometheus + Grafana를 연동해서 GPU 활용률, 메모리 대역폭, I/O 대기 시간을 시계열로 수집하기 시작했습니다. 주요하게 본 지표는 GPU 메모리 사용률과 DRAM 복사 횟수였는데, 특정 배치에서 호스트↔디바이스 복사가 과도하게 일어나는 구간이 보였습니다.
데이터 로더의 prefetch 설정이 GPU 속도를 따라가지 못하는 것이 원인이었고, num_workers와 pin_memory 값을 조정했더니 배치 처리 시간이 평균 23% 단축됐습니다. TPU 환경에서는 메트릭 구조가 달라서 Cloud Monitoring에서 별도 대시보드를 만들어 xla_compilation_time과 infeed stall 비율을 추적했습니다. 이 경험을 통해 성능 튜닝은 추측이 아니라 계측 가능한 지표를 먼저 정의하는 것에서 시작해야 한다는 걸 체득했습니다.