Nvidia:MIG
MIG(Multi-Instance GPU) 는 NVIDIA GPU 하나를 하드웨어 수준에서 여러 개의 독립된 GPU로 쪼개는 기술입니다. Ampere 세대(A100)에서 도입되어 H100, B200 등 데이터센터 GPU 계열에서 지원됩니다.
시분할과 무엇이 다른가
앞서 device plugin에 넣은 time-slicing과 대비하면 차이가 분명합니다.
| - | 시분할 (time-slicing) | MIG |
| 나누는 대상 | 실행 시간만 (컨텍스트 스위칭) | SM·L2 캐시·메모리 컨트롤러·메모리를 물리적으로 |
| 메모리 격리 | 없음 — 한 파드가 다 먹으면 나머지 OOM | 있음 — 인스턴스별 메모리가 하드웨어로 고정 |
| 성능 간섭 | 있음 — 옆 파드가 GPU를 물면 내 지연이 튐 | 거의 없음 — QoS가 보장됨 |
| 분할 개수 | 임의 (그냥 광고하는 숫자) | 최대 7개, 정해진 프로파일 단위(예: 1g.10gb) |
| 전제 조건 | 아무 GPU나 가능 | 지원 하드웨어 + 사전 파티션 구성 필요 |
즉 MIG는 "진짜로 나눠 준다"에 가깝고, 시분할은 "번갈아 쓰게 해 준다"에 가깝습니다. 여러 인스턴스를 격리해서 안전하게 돌리려면 MIG가 정답이지만, 하드웨어가 받쳐줘야 합니다.
DGX Spark에서 쓸 수 없는 이유
Spark에 들어간 GB10은 워크스테이션급 Grace Blackwell 칩이라 MIG 파티셔닝 기능이 없습니다. 같은 Blackwell 세대라도 데이터센터용 B200/GB200에는 있고 GB10에는 없는, 제품 라인에 따라 갈리는 기능입니다. 그래서 시분할이 유일한 선택지였고, 그 대가로 메모리 격리를 포기한 것입니다 — 128 GB 통합 메모리를 8개 파드가 서로 신뢰하며 나눠 쓰는 구조라는 점이 여기서 나옵니다.
설정 파일의 migStrategy: none
device plugin ConfigMap에 넣은 그 줄이 이것과 직접 연결됩니다. 세 가지 값을 가집니다.
- none — MIG를 무시하고 GPU 전체를 nvidia.com/gpu 하나로 광고 (지금 설정)
- single — 모든 MIG 인스턴스가 동일 프로파일일 때, 그것들을 nvidia.com/gpu로 광고
- mixed — 프로파일별로 nvidia.com/mig-1g.10gb 같은 개별 자원명으로 광고
Spark에는 MIG 자체가 없으니 none이 유일하게 맞는 값입니다.