# GPU多重化(MPS・MIG)
## 定義
GPU多重化とは、単一の物理GPUを複数のプロセス・テナントで共有し利用率を高める技術群であり、代表的な手段としてNVIDIAのMulti-Process Service(MPS)とMulti-Instance GPU(MIG)がある。既定では複数プロセスが1つのGPUを使う場合、GPUスケジューラはタイムスライスで処理を切り替えるため、カーネルが短くギャップがあると「ping-pong」的なコンテキストスイッチでGPUがアイドルになりやすい。(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 3 OS, Docker, and Kubernetes Tuning for GPU-Based Environments]])
**MPS**は複数プロセスのGPUコンテキストを1つのスケジューラコンテキストに統合するソフトウェア機構であり、GPU資源(SM・Tensor Core)が空いている限り複数プロセスのカーネルを同時実行できる。個々のプロセスが単独では40%程度しかGPUを使い切れない推論ワークロードなどで、合算利用率を80〜90%まで高め得る。`CUDA_MPS_ACTIVE_THREAD_PERCENTAGE`でクライアントごとのSM占有率上限を設定できるが、GPUメモリは分離されないため、1プロセスの過大なメモリ要求がOOMを引き起こし他の全プロセスを巻き込んで終了させ得る。既定では同一Unixユーザーのプロセス間でのみ共有可能(最近のドライバはマルチユーザーMPSにも対応するが、メモリ分離は提供しない)。(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 3 OS, Docker, and Kubernetes Tuning for GPU-Based Environments]])
**MIG**はハードウェアレベルでGPUを最大7つの固定インスタンスに分割し、各インスタンスに専用のSMグループとメモリ(HBM)を割り当てる仮想化機構である。強い分離(1インスタンスの問題が他に波及しない)を提供する反面、あるインスタンスがアイドルでも他インスタンスへ資源を融通できない。プロファイル名は`<X>g.<Y>gb`の形式(例: `2g.45gb`)で、`X`はSMグループ数(7分の1単位)、`Y`は割り当てGPUメモリ量(GB)を表す。MIGモードの有効化・パーティション構成変更にはGPUリセットが必要で、動的なジョブ単位の切り替えには向かない。重要な制約として、クロスGPUのMIG P2P、CUDA IPC across instances、NCCLはMIGでは非対応であり、大規模分散学習には不向きである。マルチテナントの小規模推論サービングが主なユースケースとなる。(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 3 OS, Docker, and Kubernetes Tuning for GPU-Based Environments]])
KubernetesのGPU time-slicing(デバイスプラグインによる時間分割)はMPSを使わない代替手段だが、実行のオーバーラップは提供せず単に切り替えを速くするだけである。高スループットが必要な場合はMPSまたはMIGの方が優位である。(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 3 OS, Docker, and Kubernetes Tuning for GPU-Based Environments]])
## 横断的知見
(2ソース目以降、他ソースとの突き合わせで見えた観察をここに蓄積する。[[GPUクラスタスケジューリング]] のGPU共有関連の知見(Alibaba PAI等のGPU時分割多重によるGPU数削減とCPU競合の議論)との突き合わせは今後の課題。)
## 未解決の問い
- MPSでメモリ分離がない点は、マルチテナント本番クラスタでどこまで運用上の問題になっているか。実際の障害事例やセキュリティインシデントの報告はあるか。
- MIGの「クロスGPU MIG P2P・NCCL非対応」という制約は、将来のGPU世代・NVLink世代でも維持されるか、それとも解消される計画があるか。
- [[GPUクラスタスケジューリング]] で扱われるAlibaba PAIのGPU時分割多重(時分割によるGPU数73%削減)は、本概念のMPS/MIGとどう関係するか(同じ機構か、独自の時分割実装か)は本章の記述からは特定できず、原論文の突き合わせが必要。
- MIGとKubernetesのMIG Managerによる自動構成は、本番クラスタでのMIGプロファイル変更頻度・運用コストをどの程度削減しているか、定量データが必要。
## 関連
- ソース: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 3 OS, Docker, and Kubernetes Tuning for GPU-Based Environments]]
- エンティティ: [[Kubernetes]] / [[NVIDIA]]
- 関連概念: [[NUMA対応CPUピニング]] / [[GPUクラスタスケジューリング]]
## 出典
- [[@2025__OReilly__AI Systems Performance Engineering - Chapter 3 OS, Docker, and Kubernetes Tuning for GPU-Based Environments]](§MPS, §MIG, §Slicing a GPU with MIG)