본문으로 이동
GPU를 밀도 있게 쓰는 방법 - 토스증권의 GPU 가상화(MIG) 도입기
문서

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 인스턴스를 삭제하거나 재생성할 수 없으므로 구성을 미리 계획해야 합니다.