RSS
AI 자동화

MIG와 NVLink의 차이: GPU를 자르는 기술과 잇는 기술

작성자
듀오랩스 대표·7분 읽기

H100 서버 견적서를 보면 사양표에 NVLink 900GB/s가 적혀 있습니다. 그런데 GPU 한 장을 여러 사람이 나눠 쓰는 방법을 찾아보면 이번에는 MIG라는 말이 나옵니다. 둘 다 NVIDIA의 데이터센터 GPU 이야기이고, 이름 첫 글자도 비슷해서 같은 계열의 기능처럼 들립니다. 실제로는 방향이 정반대입니다.

이름이 비슷해서 생기는 혼동

흔히 「GPU를 쪼개거나 묶는 NVIDIA 기술」을 한 덩어리로 기억합니다. 그러면 「NVLink로 H100을 나눠 쓴다」 같은 문장이 자연스럽게 나옵니다. 이 문장은 틀렸습니다.

MIG(Multi-Instance GPU)는 GPU 한 장을 여러 개로 자르는 기술이고, NVLink는 GPU 여러 장을 하나처럼 잇는 연결선입니다. 앞의 것은 큰 GPU 하나를 작은 GPU 여러 개처럼 보이게 하고, 뒤의 것은 GPU 여러 개가 서로의 메모리를 빠르게 주고받게 합니다.

MIG NVLink
방향 한 장을 자른다 여러 장을 잇는다
정체 GPU 안의 분할 기능 GPU 사이의 고속 연결
쓰는 때 작은 작업 여러 개를 한 장에 큰 모델 하나를 여러 장에
H100 기준 최대 7개 인스턴스 GPU 간 900GB/s

하드웨어째 나누는 MIG

MIG는 A100에서 처음 들어왔고 H100, H200, B200 같은 데이터센터 GPU와 일부 RTX PRO Blackwell 카드가 지원합니다. NVIDIA의 MIG 사용자 안내서를 보면 H200 141GB는 가장 작은 단위인 1g.18gb로 자르면 인스턴스 7개가 나옵니다. H100 80GB에서는 같은 자리에 1g.10gb가 있습니다.

MIG가 다른 나눠 쓰기 방법과 갈리는 곳은 격리입니다. 연산 유닛(SM)뿐 아니라 메모리, L2 캐시, 메모리 대역폭까지 인스턴스마다 따로 떼어 줍니다. 그래서 한 인스턴스에서 돌아가는 작업이 메모리를 다 써도 옆 인스턴스는 영향을 받지 않고, 한쪽에서 오류가 나도 다른 쪽이 같이 죽지 않습니다. AWS EKS 문서도 MIG가 하드웨어 수준의 메모리·장애 격리를 준다는 점을 핵심으로 꼽습니다.

아무 크기로나 자를 수 없는 프로파일

MIG를 처음 보면 「40GB짜리 하나, 20GB짜리 둘」처럼 원하는 대로 나눌 수 있을 것 같습니다. 그렇지 않습니다. 자르는 크기는 GPU마다 정해진 프로파일 중에서 고릅니다.

H200의 프로파일 표를 보면 재미있는 데가 있습니다. 1g.18gb는 연산 유닛을 7분의 1, 메모리를 8분의 1 받습니다. 연산은 7조각, 메모리는 8조각으로 나뉘어서 둘이 딱 맞지 않습니다. 3g.71gb는 연산 7분의 3에 메모리를 8분의 4 받습니다. 그래서 「7개로 똑같이 나눈다」고 기억하면 메모리 계산이 어긋납니다. 모델을 올릴 계획이라면 인스턴스 개수보다 프로파일 이름에 붙은 GB 숫자를 먼저 봐야 합니다.

MIG가 아닌 나눠 쓰기 방법들

GPU 한 장을 여럿이 쓰는 방법이 MIG만 있는 것은 아닙니다. 다만 나머지는 격리 수준이 다릅니다.

타임 슬라이싱은 여러 작업이 GPU를 시간으로 나눠 번갈아 씁니다. 지원하는 GPU를 가리지 않아서 Kubernetes에서 흔히 쓰지만, Red Hat OpenShift AI 문서가 적은 대로 같은 GPU 메모리를 엄격한 격리 없이 함께 씁니다. 한 작업이 메모리를 다 잡으면 옆 작업이 메모리 부족으로 실패합니다.

**MPS(Multi-Process Service)**는 여러 프로세스가 GPU를 동시에 쓰게 해 줍니다. 타임 슬라이싱보다 GPU를 놀리는 시간이 적지만, 한 프로세스에서 치명적인 오류가 나면 같은 GPU를 쓰는 다른 프로세스들도 영향을 받습니다.

NVIDIA vGPU는 가상머신마다 GPU 조각을 나눠 주는 가상화 제품입니다. 별도 라이선스가 필요하고, 그 조각을 만드는 방식으로 MIG를 쓸 수도 있습니다.

저는 고르는 기준을 단순하게 봅니다. 서로 다른 팀이나 고객의 작업을 한 GPU에 올린다면 MIG입니다. 한 사람이 자기 작업 여러 개를 돌리는 개발 환경이라면 타임 슬라이싱으로 충분한 경우가 많습니다. 격리가 필요한지가 먼저이고, 효율은 그다음입니다.

NVLink는 반대 문제를 풉니다. 모델이 GPU 한 장의 메모리에 들어가지 않을 때, 모델을 여러 장에 나눠 올려야 합니다. 이를 텐서 병렬이라고 하는데, 계산 한 단계마다 GPU끼리 중간 결과를 주고받습니다. 이 통신이 느리면 GPU를 늘려도 속도가 오르지 않습니다.

NVIDIA의 H100 사양에 따르면 H100 SXM의 NVLink는 900GB/s이고, 같은 표의 PCIe Gen5는 128GB/s입니다. 7배 차이입니다. 같은 H100이라도 PCIe 카드 형태인 H100 NVL은 NVLink가 600GB/s로 적혀 있습니다. 견적서에서 「H100 8장」만 보고 판단하면 안 되는 이유가 여기 있습니다. 어떤 형태로, 어떻게 연결된 8장인지에 따라 큰 모델에서 나오는 속도가 달라집니다.

GPU를 넘어 잇지 못하는 MIG 조각

MIG와 NVLink를 둘 다 알면 「여러 GPU를 MIG로 자르고, 그 조각들을 NVLink로 이어 쓰면 되지 않나」라는 생각이 듭니다. 이 조합은 되지 않습니다. 같은 GPU 안의 조각끼리만 이어집니다. MIG 안내서의 배포 고려사항은 드라이버 R570 기준으로 같은 GPU 안의 MIG 인스턴스끼리의 P2P 통신만 지원하고, 다른 GPU의 인스턴스나 MIG 모드가 아닌 GPU와의 P2P는 지원하지 않는다고 적고 있습니다.

그래서 한 서버 안에서도 용도를 나누는 경우가 많습니다. 작은 모델 여러 개를 서비스할 GPU는 MIG로 자르고, 큰 모델을 올릴 GPU는 MIG 없이 NVLink로 묶어 둡니다. 드라이버가 바뀌면 이 제약도 바뀔 수 있으니, 실제로 구성하기 전에는 쓰는 드라이버 버전의 안내서를 다시 확인해야 합니다.

소비자용 GPU에서의 선택지

RTX 4090이나 5090 같은 소비자용 GPU에는 MIG가 없습니다. 최근 세대 소비자용 카드는 NVLink 단자도 빠졌습니다. 그래서 로컬에서 Ollama로 모델 여러 개를 돌린다면 남는 방법은 한 GPU 메모리에 모델을 여러 개 같이 올리고, 실행기가 요청을 번갈아 처리하게 하는 것입니다. 사실상 타임 슬라이싱과 같은 구조라 격리는 없습니다. 개인 개발 환경에서는 대개 그것으로 충분하고, 격리가 필요해지는 시점이 데이터센터 GPU를 검토할 때라고 저는 봅니다.

마지막 수정:

공유하실 때는 출처(Duolabs)와 원문 주소를 표시해 주세요.