Nvidia의 GPU 메모리 분할 기술 MIG

1. MIG(Multi Instance GPUs) 란?

GPU는 기본적으로 Container 간 GPU 공유가 불가능하고 Time Slicing라는 순차적 스케쥴링을 통해 GPU를 시간분배해서 사용했다. 이런 문제점을 해결하기 위해 Nvidia에서는 메모리를 나누어 할당하는 기능을 만들었는데 MIG(Multi Instance GPUs) 이라고 부른다.

‍

장점

1.GPU 부터 Memory까지 격리된 환경으로 나눠서 사용할 수 있다.

2.여러 POD들이 동시 사용 가능

3.리소스 공유로 인한 장애 전파 우려 없음

‍

단점

1.Time Slicing처럼 GPU수를 못 늘린다. (Mig는 최대 7개까지 사용가능하며 TS는 문서상 Unlimit)

2.구형 GPU 모델에서는 사용 못 한다.

‍

‍

2. MIG 원리

GPU Core를 최대 7개 까지 분리 시켜주는 기술이이다. (앞으로는 모르겠지만 현재로써는 최대 7개)

아리 그림표와 같이 GPU의 SM Slice 부터 Cache, Memory 까지 분리된 영역으로 사용할 수 있다.

GPU Memory Slice는 총 GPU Memory 리소스의 1/8을 가지며 GPU SM Slice는 전체 SM 개수의 1/7를 가지고 있다.

‍

‍

용어 설명

SM (Streaming Multiprocessor)

아래 그림의 GPU Architecture 는 아래와 같이 되어 있다.

‍

‍

CPU와 GPU의 Archtecture 차이점

‍

GPU Context

GPU에서 동작을 위해 필요한 자원들을 가지고 있는데 주로 공간 메모리 할당등을 이야기 한다.

‍

GPU도 Pocess에서 서로 메모리를 공유하지 않고 하나의 Process에서 발생하는 문제가 다른 프로세스에 영향을 주지 않는 것과 비슷하다.

‍

GPU Engine

GPU 엔진은 스케쥴화 될 수 있고 병렬로 작동할 수 있는 GPU의 독립적인 단위를 뜻 함.

‍

3D 엔진을 사용해서 데이터를 전송할 수 있지만 3D 엔진이 다른 복잡한 작업을 할 수 있도록 Copy Engine에게 데이터 전송 업무를 분담함으 로써 전체적인 성능 향상에 기여. (3D 엔진과 Copy 엔진이 병렬로 진행)

‍

GPU 엔진은 3D와 Compute Engine가 있다.

‍

3D 및 Compute Engine

3D: 쉐이더 프로세싱, 텍스처 매핑, 랜더링등 3D 모델관련 전담

Compute : 병렬계산 , 딥 러닝들을 전담

‍

‍

GPU Memory Slice

GPU Memory의 가장 작은 부분이며 GPU Memory Slice는 Capacity, Bandwidth을 포함해 전체 GPU 메모리의 1/8 정도 날 수 있다.

‍

GPU SM Slice

GPU에서 들어가는 가장 작은 부분들로 MIG를 사용했을 경우 전체 SM에서 1/7정도 나눠서 사용 가능하다.

‍

GPU Instance (GI)

GPU Slice 와 GPU 엔진( DMA, NVDEC 등)의 조합

‍

Compute Instace(CI)

상위 GPU 인스턴스의 SM 슬라이스 및 기타 GPU 엔진(DMA, NVDEC 등)이 포함되어 있음

‍

Partitioning

GPU를 여러개로 쪼개서 사용할 수있는데 Slice의 개수는 맘대로 만드는건 불가능하다.

Nvidia driver API는 여러개의 GPU Instance Profiles를 제공하고 거기에서 정해진 Profile의 하나를 사용할 수 있다. 예를 들어 아래는 A100의 Instance Profile이다.

‍

Mix

Mix 전략을 사용하면 MIG에서 지정된 별도 Label를 읽는다.

‍

즉 MIG에 설정된 Profiles를 읽어 드리기 때문에 POD 배포시 Profile를 지정해줘야 한다.

‍

예를들어 EKS의 p4d.24xlarge에는 8개의 A100이 있으며 각 Core 당 아래와 같이 Profile이 정해져 있다.

‍

‍

Single Strategy는 동일한 크기의 Instance를 할당 받아서 사용하지만 Mix Strategy는 Profile에 명시되어있는 여러가지 조합으로 사용할 수 있다.

‍

예를 들어 A는 Pod는 1g.5gb를 할당하고 B Pod는 3g.20gb C Pod는 4g.20gb를 할당하여 적절하게 혼합해서 사용 가능하다. 즉 특정 Pod가 GPU 대비 Memory를 더 사용할 수 있게 할당이 가능하여 좀 더 다양한 조합으로 사용이 가능하다.

‍

아래는 Profile 내용으로 3g는 GPU의 Compute를 할당 20gb는 Memory를 나타내는 것으로 볼 수 있다.

‍

3.2 Profile은 원하는 대로 정할 수 있는가?

GPU의 Profile은 지원되는 값들이 정해져 있으며 아래와 같이 나눌 수 있다.

A100-SXM4-80GB Profile

‍

Diagram

‍

Table

‍

H100 80GB Profile

‍

Diagram

‍

Table

  • 'MIG(Multi Instance GPUs)'란?

  • MIG 원리

관련 키워드
AI
관련 키워드
AI
관련 콘텐츠