- Authors

- Name
- Youngju Kim
- @fjvbn20031
- はじめに
- GPU Passthrough (VFIO-PCI)
- vGPU (NVIDIA GRID)
- MIG (Multi-Instance GPU)
- SR-IOV for GPUs
- KubernetesでのGPUタイムスライシング
- 総合比較表
- 選択ガイド
はじめに
GPU仮想化はAI/MLワークロードとクラウドコンピューティングの爆発的な成長により、重要なインフラ技術となりました。物理GPUを複数のVMやコンテナで共有したり、逆にVMにGPUを独占割り当てしたりする様々な方式があります。
[GPU仮想化技術スペクトラム]
独占割当 <-----------------------------------> 最大共有
GPU Passthrough vGPU (SR-IOV) MIG vGPU (mdev) Time-Slicing
(1 GPU : 1 VM) (HWパーティション) (空間分割) (SWタイムスライス) (K8s共有)
GPU Passthrough (VFIO-PCI)
概要
GPU Passthroughは物理GPUをVMに直接接続する最もシンプルで強力な方式です。
+------------------+ +------------------+
| VM 1 | | VM 2 |
| GPU Driver | | GPU Driver |
| (Full Access) | | (Full Access) |
+--------+---------+ +--------+---------+
| |
IOMMU/VT-d IOMMU/VT-d
| |
+--------+---------+ +--------+---------+
| Physical GPU 1 | | Physical GPU 2 |
| (Exclusive) | | (Exclusive) |
+------------------+ +------------------+
特徴
| 項目 | 内容 |
|---|---|
| パフォーマンス | ネイティブの95〜99% |
| GPU共有 | 不可(1 GPU = 1 VM) |
| 対応GPU | すべてのGPU(NVIDIA、AMD、Intel) |
| ライセンス | 追加ライセンス不要 |
| 必須要件 | IOMMU(VT-d/AMD-Vi)対応CPU/マザーボード |
| ドライバ | ゲストOSに通常のGPUドライバをインストール |
| 制限事項 | GPU 1台につき1つのVMのみ使用可能 |
セットアップフロー
# 1. BIOSでVT-d/AMD-Vi(IOMMU)を有効化
# 2. ブートパラメータにIOMMUを追加
# /etc/default/grub:
# GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt"
# 3. IOMMUグループの確認
find /sys/kernel/iommu_groups/ -type l | sort -V
# 4. GPUをvfio-pciドライバにバインド
# /etc/modprobe.d/vfio.conf:
# options vfio-pci ids=10de:2484,10de:228b
# 5. initramfsの再生成
update-initramfs -u
# 6. 再起動後に確認
lspci -nnk -s 01:00.0
# Kernel driver in use: vfio-pci
vGPU (NVIDIA GRID)
アーキテクチャ
vGPUは1つの物理GPUを複数のVMで共有可能にします。
+--------+ +--------+ +--------+ +--------+
| VM 1 | | VM 2 | | VM 3 | | VM 4 |
| vGPU | | vGPU | | vGPU | | vGPU |
| 4GB | | 4GB | | 4GB | | 4GB |
+--------+ +--------+ +--------+ +--------+
| vGPU Manager |
| (Hypervisor Module) |
+------------------------------------------+
| Physical GPU (16GB) |
| (NVIDIA A100/L40S/etc.) |
+------------------------------------------+
mdev(Mediated Devices)- Volta以前
[ソフトウェアタイムスライシング]
時間 --> | VM1 | VM2 | VM3 | VM1 | VM2 | VM3 |
+-------+-------+-------+-------+-------+-------+
GPU全体 使用 使用 使用 使用 使用 使用
- GPU全体を時分割で共有
- vGPU Managerがコンテキストスイッチを管理
- VRAMは静的にパーティショニング
- 演算リソースは時間ベースで共有
SR-IOV - Ampere以降
[ハードウェアパーティショニング - SR-IOV]
+-------------------------------------------+
| Physical Function (PF) |
| - GPU管理、設定 |
+-------------------------------------------+
| VF 0 | VF 1 | VF 2 |
| (VM 1) | (VM 2) | (VM 3) |
| 独立キュー | 独立キュー | 独立キュー |
| 独立割込み | 独立割込み | 独立割込み |
+-------------------------------------------+
| Physical GPU (PCIe) |
+-------------------------------------------+
- PF (Physical Function): ホストが管理
- VF (Virtual Function): 各VMに直接割り当て
- IOMMUがVF間のメモリ分離を保証
- ハードウェアレベルの分離でより安定
vGPUプロファイルシリーズ
| シリーズ | 用途 | VRAM | 代表的なユースケース |
|---|---|---|---|
| C-series | Compute | 大容量 | AI/MLトレーニング、HPC |
| Q-series | Quadro | 中〜大 | CAD、3Dレンダリング、プロフェッショナルグラフィックス |
| B-series | Desktop | 小〜中 | VDI、一般デスクトップ |
| A-series | App Streaming | 小〜中 | アプリ仮想化、リモートワークステーション |
[NVIDIA A100 vGPUプロファイル例]
GPU: NVIDIA A100 40GB
プロファイル VRAM 最大インスタンス
A100-1-5C 5GB 7
A100-2-10C 10GB 4
A100-4-20C 20GB 2
A100-8-40C 40GB 1
A100-1-5CME 5GB 7 (MIG-backed)
A100-2-10CME 10GB 4 (MIG-backed)
ライセンス要件:
- NVIDIA vGPU Software License必須(vApps、vPC、vCS、vWS)
- ライセンスサーバー(DLSまたはCLS)が必要
- GPUモデルとプロファイルによりライセンスタイプが決定
MIG (Multi-Instance GPU)
概要
MIGはNVIDIA A100で初めて導入されたハードウェアレベルの空間分割技術です。
[MIGアーキテクチャ - A100例]
+-----------------------------------------------------------+
| NVIDIA A100 (80GB) |
+-----------------------------------------------------------+
| GPC 0-1 | GPC 2-3 | GPC 4 | GPC 5 | GPC 6 |
| MIG 1 | MIG 2 | MIG 3 | MIG 4 | MIG 5 |
| 2g.20gb | 2g.20gb | 1g.10gb | 1g.10gb | 1g.10gb |
+----------+----------+---------+---------+-----------------+
| Memory | Memory | Memory | Memory | Memory |
| Ctrl 0-1 | Ctrl 2-3 | Ctrl 4 | Ctrl 5 | Ctrl 6 |
| 20GB HBM | 20GB HBM | 10GB HBM| 10GB HBM| 10GB HBM |
+----------+----------+---------+---------+-----------------+
| L2 Cache | L2 Cache | L2 $ | L2 $ | L2 $ |
| Slice 0-1| Slice 2-3| Slice 4 | Slice 5 | Slice 6 |
+-----------------------------------------------------------+
主要特徴
- ハードウェア空間分割: 最大7つの独立インスタンス
- 専用リソース: 各インスタンスにSM、メモリコントローラ、L2キャッシュ、HBMが独立割当
- 完全な分離: インスタンス間のリソース競合なし
- エラー分離: 1つのインスタンスのエラーが他に影響しない
対応GPU
| GPU | 最大インスタンス | HBM | アーキテクチャ |
|---|---|---|---|
| A100 40GB | 7 | 40GB HBM2e | Ampere |
| A100 80GB | 7 | 80GB HBM2e | Ampere |
| A30 | 4 | 24GB HBM2e | Ampere |
| H100 | 7 | 80GB HBM3 | Hopper |
| H200 | 7 | 141GB HBM3e | Hopper |
MIG設定例
# MIGモード有効化(再起動必要)
sudo nvidia-smi -i 0 --mig 1
# 再起動後、MIGインスタンスを作成
# プロファイル一覧確認
nvidia-smi mig -lgip
# 3g.40gbインスタンスを2つ作成(A100 80GB基準)
sudo nvidia-smi mig -cgi 9,9 -C
# 作成されたインスタンスの確認
nvidia-smi mig -lgi
nvidia-smi mig -lci
# MIGインスタンスの削除
sudo nvidia-smi mig -dci
sudo nvidia-smi mig -dgi
# MIGモード無効化(再起動必要)
sudo nvidia-smi -i 0 --mig 0
MIG-backed vGPU
MIGとvGPUを組み合わせることで、ハードウェア分離とVMサポートを同時に提供します。
+--------+ +--------+ +--------+
| VM 1 | | VM 2 | | VM 3 |
| vGPU | | vGPU | | vGPU |
+--------+ +--------+ +--------+
| vGPU Manager |
+------+-------+-------+-------+
| MIG 1| MIG 2 | MIG 3 | MIG 4 | <-- ハードウェア分離
+------+-------+-------+-------+
| Physical GPU |
+-------------------------------+
- MIGスライス間: ハードウェア分離
- 同じMIG内の複数vGPU: タイムスライシング
SR-IOV for GPUs
PCIeレベルの仮想化
[SR-IOV構造]
PCIe Bus
|
+---+---+---+---+---+---+
| PF | VF 0 | VF 1 | VF 2 |
| (Host)| (VM1)| (VM2)| (VM3)|
+-------+------+------+------+
| Physical GPU |
+-----------------------------+
PF = Physical Function (ホスト管理)
VF = Virtual Function (VMに直接割当)
- NVIDIA Ampere以降でGPU SR-IOVをサポート
- AMD MxGPUもSR-IOVベース(Radeon Instinct/Pro)
- 各VFは独立したPCIe機能として、IOMMUで分離
- PFがGPU全体を管理しVFを作成/構成
KubernetesでのGPUタイムスライシング
最もシンプルなGPU共有方式で、特別なハードウェア機能なしにソフトウェアのみで実装されます。
[K8s GPU Time-Slicing]
+---Pod A---+ +---Pod B---+ +---Pod C---+
| Process | | Process | | Process |
| CUDA | | CUDA | | CUDA |
+-----------+ +-----------+ +-----------+
| NVIDIA Device Plugin (time-slicing) |
+-----------------------------------------+
| Physical GPU |
| (全プロセスが共有) |
+-----------------------------------------+
- NVIDIA GPU OperatorのTimeSlicing設定
- ハードウェア分離なし
- メモリ空間共有(OOM可能)
- MPS(Multi-Process Service)オプションでパフォーマンス改善可能
# NVIDIA GPU Operator ConfigMap例
# time-slicing-config
apiVersion: v1
kind: ConfigMap
metadata:
name: time-slicing-config
data:
any: |-
version: v1
flags:
migStrategy: none
sharing:
timeSlicing:
renameByDefault: false
failRequestsGreaterThanOne: false
resources:
- name: nvidia.com/gpu
replicas: 4
総合比較表
| 項目 | Passthrough | vGPU (mdev) | vGPU (SR-IOV) | MIG | Time-Slicing |
|---|---|---|---|---|---|
| GPU共有 | 不可 | 可能 (SW) | 可能 (HW) | 可能 (HW) | 可能 (SW) |
| 分離レベル | 完全(独占) | タイムスライス | PCIe VF | 空間分割 | なし |
| メモリ分離 | 完全 | VRAMパーティション | VRAMパーティション | HBMパーティション | 共有 |
| パフォーマンス | 95〜99% | 85〜95% | 88〜96% | 85〜95% | 可変 |
| 最大インスタンス | 1 | GPU依存 | VF数依存 | 最大7 | 制限なし |
| 対応GPU | すべてのGPU | NVIDIA vGPU | NVIDIA Ampere+ | A100/H100等 | すべてのNVIDIA |
| ライセンス | 不要 | NVIDIA vGPU | NVIDIA vGPU | 不要 | 不要 |
| 主な用途 | 専用GPU VM | VDI、マルチユーザー | エンタープライズ | AI/MLマルチテナンシー | K8s開発/テスト |
選択ガイド
[GPU仮想化方式選択フローチャート]
開始: GPUを共有する必要がありますか?
|
+-- いいえ --> GPU Passthrough
| (最高パフォーマンス、1:1割当)
|
+-- はい --> ハードウェア分離が必要ですか?
|
+-- いいえ --> Kubernetesですか?
| |
| +-- はい --> Time-Slicing
| | (最もシンプル)
| |
| +-- いいえ --> vGPU (mdev)
| (VMベース共有)
|
+-- はい --> A100/H100等MIG対応GPUですか?
|
+-- はい --> MIG or MIG-backed vGPU
| (最高レベルの分離)
|
+-- いいえ --> vGPU (SR-IOV)
(Ampere+ HWパーティショニング)
クイズ: GPU仮想化理解度チェック
Q1. GPU PassthroughとvGPUの根本的な違いは?
GPU Passthroughは物理GPUを1つのVMに独占割り当てしネイティブ性能を提供します。vGPUは1つのGPUを複数のVMが共有可能にし、タイムスライシングまたはSR-IOVでリソースを分配します。
Q2. MIGが他のGPU共有方式より分離が優れている理由は?
MIGはGPUをハードウェアレベルで空間的に分割します。各インスタンスが専用のSM、メモリコントローラ、L2キャッシュ、HBMを持つため、インスタンス間のリソース競合が原理的に存在しません。エラーも分離されます。
Q3. SR-IOVにおけるPFとVFの役割は?
PF(Physical Function)はホストがGPU全体を管理するためのPCIe機能です。VF(Virtual Function)はPFから生成される仮想PCIe機能で、各VMに直接割り当てられ独立したGPUアクセスを提供します。
Q4. Kubernetes Time-Slicingの最大の弱点は?
ハードウェア分離が全くなく、すべてのPodがGPUメモリを共有します。1つのPodの過度なメモリ使用が他のPodにOOMを引き起こす可能性があり、セキュリティ境界も不明確です。
Q5. vGPUを使用するために必ず必要なものは?
NVIDIA vGPU Software Licenseが必要です。ライセンスサーバー(DLSまたはCLS)を構築し、vGPU Managerソフトウェアをハイパーバイザーにインストールする必要があります。GPU PassthroughやMIG単独使用にはライセンスは不要です。