GPU를 밀도 있게 쓰는 방법 - 토스증권의 GPU 가상화(MIG) 도입기
김진웅 · 토스 · 토스 기술 블로그
소개
자원 낭비 없이 H100을 제대로 활용하기 위한 MIG 도입부터 운영까지의 기록을 공유합니다.
AI 핵심 요약
토스증권은 전체 워크로드의 약 3분의 1이 GPU 자원의 4분의 1도 활용하지 않는 문제를 해결하기 위해, H100을 하드웨어 수준에서 분할하는 NVIDIA MIG를 선택했습니다. 다양한 GPU를 혼합할 때 생기는 호환성·운영 복잡성과 MPS의 격리 한계를 고려해, 일관된 환경과 독립적인 자원 할당을 우선했습니다. 도입 과정은 GPU에서 MIG 모드와 GI·CI를 설정하고, Kubernetes의 nvidia-device-plugin을 MIG 전략에 맞게 재배포한 뒤, dcgm-exporter로 인스턴스별 지표를 수집하는 세 단계로 정리했습니다. MIG는 모든 워크로드에 적합한 해법은 아니지만, 크기가 다양한 작업이 공존하는 환경에서는 GPU를 세분화하고 메모리와 SM 사용량을 인스턴스 단위로 관리하는 것이 중요하다는 점을 보여줍니다.
- MIG 프로파일은 SM과 메모리 용량의 조합으로 정해지며, 인스턴스 생성 순서에 따라 남는 자원이 달라질 수 있습니다.
- Kubernetes에서 여러 MIG 유형을 함께 쓰려면 nvidia-device-plugin의 MIG_STRATEGY를 mixed로 설정해야 합니다.
- MIG 구성 변경 후에는 device plugin을 다시 배포하지 않아도 파드를 재시작하면 새 구성이 반영됩니다.
- MIG 환경에서는 GPU 전체 사용률 대신 DCGM_FI_PROF_SM_ACTIVE로 인스턴스별 연산 부하를 확인하고, 메모리 지표로 OOM 위험을 관리합니다.
- 실행 중인 프로세스가 있으면 MIG 인스턴스를 삭제하거나 재생성할 수 없으므로 구성을 미리 계획해야 합니다.
비슷한 학습 자료
[팀네이버 컨퍼런스 DAN25] MLXP: GPU 효율화를 선도하는 대규모 MLOps 플랫폼
DAN 2025 · YouTube
대규모 AI 서비스 운영을 위한 Kubernetes GPU 클러스터 도입기
엔지니어링데이 2025 · YouTube
토스증권이 GPU-aware를 넘어 GPU-native 클러스터를 구축한 방법
장재영/김진웅 · 토스 기술 블로그
고성능 GPU 클러스터 도입기 #2: 이주하는 데이터
김진웅 · 토스 기술 블로그
고성능 GPU 클러스터 도입기 #1: 요리하라고 해서 왔는데 프라이팬이 없어요
김진웅 · 토스 기술 블로그
Kurly만의 MLOps 구축하기 - 초석 다지기
이상협 · 컬리 기술 블로그