vSphere 8.0U1 이 릴리즈 되면서 (아직 IA 릴리즈 버전입니다만), NVSwitch 를 공식적으로 지원하기 시작하였습니다. 개인적으로 궁금해서 좀 정리를 해보고 있는데요, NVSwitch 를 다루기 전에 몇가지 용어에 대해서 정리해볼려고 합니다.

첫번째는 vGPU(Virtual GPU) 와 vSphere 7.0 부터 지원하고 있는 MIG (Multi-Instance GPU) mode 입니다.

vGPU 하고 MIG 는 얼핏 들으면 비슷한 개념으로 보입니다. 하나의 물리적 GPU 를 논리적으로 나눠서 쓴다 라는 부분에서는 비슷한 개념으로 들리죠. 그럼 무슨 차이가 있나? 라고 생각해볼 수 있습니다.

일단 MIG 는 vGPU 구현을 위한 새로운 펑션 정도로 볼 수 있습니다. 따라서 더 정확하게 말하자면, vGPU without MIG 와 vGPU with MIG 를 비교한다고 볼 수 있죠.

어떤 글에서는 베어메탈에서 잘라쓰면 MIG 고 하이퍼바이저 상에서 프로파일로 잘라쓰면 vGPU 에요 라고 설명한 글도 있는데, 틀린말은 아니지만, 좀 부족한듯 하여 정리해보았습니다. 왜냐면 vSphere 에서도 MIG 를 쓸 수 있으니까요. 해깔릴 수 있죠.

가장 큰 차이점은 vGPU without MIG 는 time-shared 방식이라는 것입니다. 이 이야기는 무슨 이야기냐, 비슷하게는 ESXi 상에서 CPU 스케쥴링을 하는것을 생각해보심 됩니다. 실제 물리코어보다 많은 vCPU 를 할당할때에 VM 간에 CPU 를 시간을 쪼개서 나눠서 사용하게 되지요.

vGPU without MIG 도 비슷한데요, 다만 VM 에 할당된 vGPU 간에는 프로파일대로 GPU 메모리는 전용으로 나눠가지지만, 메모리가 아닌 컴퓨팅 리소스는 전용으로 나눠가지는게 아니라 vGPU 간에 시간을 쪼개서 사용하게 됩니다. 그렇기 때문에 놀고 있는 컴퓨팅 리소스가 있다 하더라도 일하고 있는 다른 vGPU 에서 컴퓨팅 리소스를 다 가져다가 쓸 수 있습니다.

MIG 의 경우는 쪼개진 GPU 별로 컴퓨팅 리소스와 메모리까지 아에 나눠가지게 됩니다. 그렇기 때문에 놀고 있는 리소스가 있다하더라도 가져다 쓸 수 없습니다. 딱 할당된 정해진 리소스만 사용하게 되는 것입니다. 참고로 A100 기준으로 MIG 를 통해 나눌 수 있는 GPU 인스턴스는 최대 7개 입니다. NVIDIA 용어로 치면 인스턴스 별로 메모리/캐쉬/스트리밍 멀티프로세서(SM) 까지 나눠가지는 것이죠.

A100 40GB 기준으로 보면, 다음과 같이 쪼개집니다. 80GB 라면 좀 더 다르겠죠?

프로파일 이름은 다음과 같은 네이밍 규칙을 따릅니다.

따라서 한개의 A100 40G 기준으로 생성할 수 있는 그래픽 인스턴스는 다음과 같습니다. 아래 예는 1g.5gb 인스턴스 7개를 생성했을 때입니다.

참고로 수직으로 겹치는 인스턴스 조합은 안됩니다.. 생성시에 고려하실 필요 있습니다~

그리고 위의 그래픽 인스턴스는 여러개의 컴퓨트 인스턴스로 쪼갤 수도 있습니다.

위와 같이 생성하다보면 아래처럼 되는거죠.

<kbd>$ nvidia-smi -L</kbd>        

GPU 0: A100-SXM4-40GB (UUID: GPU-5d5ba0d6-d33d-2b2c-524d-9e3d8d2b8a77)
  MIG 1g.5gb      Device  0: (UUID: MIG-c6d4f1ef-42e4-5de3-91c7-45d71c87eb3f)
  MIG 1g.5gb      Device  1: (UUID: MIG-cba663e8-9bed-5b25-b243-5985ef7c9beb)
  MIG 1g.5gb      Device  2: (UUID: MIG-1e099852-3624-56c0-8064-c5db1211e44f)
  MIG 1g.5gb      Device  3: (UUID: MIG-8243111b-d4c4-587a-a96d-da04583b36e2)
  MIG 1g.5gb      Device  4: (UUID: MIG-169f1837-b996-59aa-9ed5-b0a3f99e88a6)
  MIG 1g.5gb      Device  5: (UUID: MIG-d5d0152c-e3f0-552c-abee-ebc0195e9f1d)
  MIG 1g.5gb      Device  6: (UUID: MIG-7df6b45c-a92d-5e09-8540-a6b389968c31)
GPU 1: A100-SXM4-40GB (UUID: GPU-0aa11ebd-627f-af3f-1a0d-4e1fd92fd7b0)
  MIG 2g.10gb     Device  0: (UUID: MIG-0c757cd7-e942-5726-a0b8-0e8fb7067135)
  MIG 2g.10gb     Device  1: (UUID: MIG-703fb6ed-3fa0-5e48-8e65-1c5bdcfe2202)
  MIG 2g.10gb     Device  2: (UUID: MIG-532453fc-0faa-5c3c-9709-a3fc2e76083d)
GPU 2: A100-SXM4-40GB (UUID: GPU-08279800-1cbe-a71d-f3e6-8f67e15ae54a)
  MIG 3g.20gb     Device  0: (UUID: MIG-aa232436-d5a6-5e39-b527-16f9b223cc46)
  MIG 3g.20gb     Device  1: (UUID: MIG-3b12da37-7fa2-596c-8655-62dab88f0b64)
GPU 3: A100-SXM4-40GB (UUID: GPU-71086aca-c858-d1e0-aae1-275bed1008b9)
  MIG 7g.40gb     Device  0: (UUID: MIG-3e209540-03e2-5edb-8798-51d4967218c9)
GPU 4: A100-SXM4-40GB (UUID: GPU-74fa9fb7-ccf6-8234-e597-7af8ace9a8f5)
  MIG 1c.3g.20gb  Device  0: (UUID: MIG-79c62632-04cc-574b-af7b-cb2e307120d8)
  MIG 1c.3g.20gb  Device  1: (UUID: MIG-4b3cc0fd-6876-50d7-a8ba-184a86e2b958)
  MIG 1c.3g.20gb  Device  2: (UUID: MIG-194837c7-0476-5b56-9c45-16bddc82e1cf)
  MIG 1c.3g.20gb  Device  3: (UUID: MIG-291820db-96a4-5463-8e7b-444c2d2e3dfa)
  MIG 1c.3g.20gb  Device  4: (UUID: MIG-5a97e28a-7809-5e93-abae-c3818c5ea801)
  MIG 1c.3g.20gb  Device  5: (UUID: MIG-3dfd5705-b18a-5a7c-bcee-d03a0ccb7a96)
GPU 5: A100-SXM4-40GB (UUID: GPU-3301e6dd-d38f-0eb5-4665-6c9659f320ff)
  MIG 4g.20gb     Device  0: (UUID: MIG-6d96b9f9-960e-5057-b5da-b8a35dc63aa8)
GPU 6: A100-SXM4-40GB (UUID: GPU-bb40ed7d-cbbb-d92c-50ac-24803cda52c5)
  MIG 1c.7g.40gb  Device  0: (UUID: MIG-66dd01d7-8cdb-5a13-a45d-c6eb0ee11810)
  MIG 2c.7g.40gb  Device  1: (UUID: MIG-03c649cb-e6ae-5284-8e94-4b1cf767e06c)
  MIG 3c.7g.40gb  Device  2: (UUID: MIG-8abf68e0-2808-525e-9133-ba81701ed6d3)
GPU 7: A100-SXM4-40GB (UUID: GPU-95fac899-e21a-0e44-b0fc-e4e3bf106feb)
  MIG 4g.20gb     Device  0: (UUID: MIG-219c765c-e07f-5b85-9c04-4afe174d83dd)
  MIG 2g.10gb     Device  1: (UUID: MIG-25884364-137e-52cc-a7e4-ecf3061c3ae1)
  MIG 1g.5gb      Device  2: (UUID: MIG-83e71a6c-f0c3-5dfc-8577-6e8b17885e1f)

이렇게 사용하면 MIG 로 인해 오는 장점은 명시적으로 프로파일을 통해 GPU 의 모든 리소스를 논리적으로 나눠줌으로서 예측 가능한 성능을 낼 수 있다. 라고 보면 될것 같습니다. 서비스 제공자의 입장에서는 필요한 부분이라고 할 수 있겠습니다.

단 time shared 방식이 꼭 MIG 보다 나쁜건 아닙니다. time shared 방식이 유리한 경우도 있음으로 용도에 맞는 선택이 필요하다고 볼 수 있겠습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다