GPU Virtualization

Share

CPU처럼 GPU도 virtualization (가상화) 가 가능하다!!

간단하게 virtualization 이 뭔지 설명하자면 사용자에게 하드웨어가 있다고 뻥치는 것이라고 할 수 있겠다.
예를 들면, 컴퓨터가 지금 CPU가 1개 있는데 사용자 A에게도 CPU 1개 있다고 하고, 사용자 B에게도 CPU 1개 있다고 해서, 총 2가지의 일을 받은 후 시간을 쪼개서 실행해 주는 것이다.
1개의 CPU를 가지고도 10개가지고 있다고 뻥칠 수도 있다.

GPU도 이런 것이 가능하다.
내가 GPU가 없지만 있는 척해서 그래픽스 연산 또는 CUDA 코드를 돌리는 것이다.

그 여러가지 방법들을 정리하자면 다음과 같다.

  • Direct pass-through: VM에 직접 GPU를 연결. 하나의 GPU가 하나의 VM에 dedicated 되기 때문에 여러 명의 사용자가 동시 사용이 불가능. VMware 에서는 virtual Direct Graphics Accelerator (vDGA) 이라고 지칭
  • Mediated pass-through: passes through performance-critical operation, while mediating privileged operations on the device
  • Partitioning: 하나의 GPU를 여러 개의 virtual GPU로 분할해서 각 VM에 할당
  • Timesharing: 여러 개의 VM이 하나의 GPU를 시간을 나눠서 공유함. oversubscription 또는 multiplexing 이라고도 함. CPU에서 이미 많이 쓰이는 개념
  • Live Migration: 실행중인 VM을 다른 host로 이동

현재 GPU 제조사들의 가상화 지원 상황

주요 GPU 하드웨어 회사들인 Intel, NVIDIA, AMD 의 현재 지원 상황을 정리해보면 아래와 같다.
Intel 이나 NVIDIA가 역시 AMD 보다는... 훨씬 앞서가고 있는 실정이다.

Intel GVT

  • 4세대 Intel Core processor부터 지원 시작
  • Mediated pass-through 방식으로 full virtualization 구현 (native 성능과 비교하여 최대 95% 수준). 하이퍼바이저의 gVirt Stub 에서 guest access들을 trap 또는 pass-through 함. Trap된 access들은 mediator로 전달되어 mediator가 hypercall 수행.
  • Graphics 연산과 OpenCL 지원
  • Xen 과 KVM 에서 사용 가능 (a.k.a XenGT, KVMGT)
  • Open Source

NVIDIA GRID vGPU

  • GRID 전용 보드(GRID K1, GRID K2, TESLA M6, 또는 TESLA M60) 필요
  • GRID 전용 보드에 MMU와 per-VM input buffer 하드웨어를 추가하고, 소프트웨어로 구현 (CUDA core 는 share 하고 Frame buffer 는 dedicated.)
  • 관리자가 직접 각 VM에 자원을 할당 (4가지 spec중 선택하여 할당)
  • 최대 16명의 사용자가 공유 사용 가능
  • Graphics 연산, OpenCL 과 CUDA 지원
  • Citrix Xen, Microsoft RemoteFX, 와 VMware Horizon View 에서 사용 가능

AMD Multiuser GPU (일해라 암드...)

  • 현재 개발 중
  • 하드웨어 기반의 GPU 가상화
VM software 들의 CUDA 지원 상황

대부분의 VM software 들은 pass-through 기법을 통해 CUDA를 지원하고 있다. 현재 VMware와 Cirtrix 에서 NVIDIA GRID vGPU 이용하여 partitioning 과 timesharing 가능하나, sharing 상태에서는 CUDA 사용이 불가능하고, Native와 비교한 성능 검증 필요하다.
2014년 기준 현재 VM 프로그램들의 상황은 아래와 같다.

2014년 기준 VM회사들의 지원 상황

이 외에도, rCUDA 라고 해서, 슈퍼컴퓨터와 같은 여러 노드의 컴퓨터에서 사용할 수 있는 GPU 가상 솔루션이 있다.

Read more

허깅페이스 르로봇 해커톤 후기

허깅페이스 르로봇 해커톤 후기

본 블로그의 주인장들은 이번 허깅페이스의 르로봇 월드와이드 해커톤의 서울 호스트를 맡았습니다. 너무 재밌었고, 그 과정들과 후기를 남깁니다. 현장은 다큐 형식의 작은 영상을 만들었으니 한번 봐주세요. 계기 저는 LLM 만 하고 있었고, Action 모델은 사실 관심이 없었습니다, 준호는 1년 정도 로봇에 AI 를 넣는 일을 하고 있었죠. 허깅페이스에서 르로봇 플랫폼을 만들고

By park jong hyun
DeepDive LLM 3편 - Reinforcement Learning

DeepDive LLM 3편 - Reinforcement Learning

* 1편 - 사전 학습 (Pre Training) * 2편 - Supervised Fine Tuning * 3편 - Reinforcement Learning Reinforcement Learning Pretrain, SFT 에 이어서 세번째 단계는 Reinforcement Learning (RL, 강화학습) 입니다. 비유를 해보자면, pretrain은 그냥 책을 읽는 것이고요, SFT는 예제 문제와 이미 작성된 해설을 보는 것입니다. RL 은 해설이 없는 문제를 직접 풀어보는 것입니다. 어떻게 풀든

By park jong hyun
DeepDive LLM 2편 - Supervised Fine Tuning

DeepDive LLM 2편 - Supervised Fine Tuning

* 1편 - 사전 학습 (Pre Training) * 2편 - Supervised Fine Tuning * 3편 - 강화 학습 (Reinforcement Learning) Supervised Fine Tuning Post Training 의 첫번째 단계 SFT 입니다. Pre Training 에 비하면 아주 작은 양의 데이터만 필요하지만, 실제로 성능을 이끌어 내는데에는 중요한 단계입니다. 멀티턴 대화 (Multi Turn Conversation) ChatGPT 를 포함해서 대부분의 AI 서비스들은

By park jong hyun
DeepDive LLM 1편 - 사전 학습 (Pre-Training)

DeepDive LLM 1편 - 사전 학습 (Pre-Training)

본 포스트 시리즈는 카파시 선생님의 영상 을 기반으로 정리한 내용입니다. 직접 유투브에서 다루기도 했으니 영상으로 보셔도 됩니다. * 1편 - 사전 학습 (Pre-Training) * 2편 - Supervised Fine Tuning * 3편 - 강화 학습 (Reinforcement Learning) LLM 의 Training LLM을 만들 때는 크게 세 가지 주요 단계가 있습니다. 1. 사전 학습(Pre-Training) * 인터넷 텍스트(

By park jong hyun