OpenShiftでGPUを利用する vGPU vs TimeSlicing

目次

OpenShift 4.16 × NVIDIA L4 GPU環境における vGPU と TimeSlicing の比較と導入方法

vSphere環境にOpenShiftを構築し、AIワークロードやGPU活用を進める際、GPUのリソースを複数Podで共有したいというニーズが高まっています。特にNVIDIAのL4 GPUを使う場合、その性能を最大限に活かすために「vGPU(仮想GPU)」と「TimeSlicing(時分割)」という2つのアプローチがあります。

本記事では、OpenShift 4.16 上に構築されたGPUノードで、vGPUとTimeSlicingをどのように選択・設定すべきかを、メリット・デメリットも含めて解説します。


はじめに:今回の前提環境

  • OpenShiftバージョン:4.16
  • GPUモデル:NVIDIA L4(Ampereアーキテクチャ)
  • 仮想化基盤:vSphere上のESXiホスト
  • 目的:GPUリソースの効率的な共有(1ノードを複数Podで利用)

なお、L4はMIG(Multi-Instance GPU)に対応していないため、MIGの構成は対象外とし、vGPUTimeSlicing のみを比較対象とします。


vGPU(仮想GPU)とは?

特徴

vGPUは、GPUをハイパーバイザー(今回はESXi)レベルで仮想化し、仮想マシン単位にGPUリソースを割り当てる技術です。仮想マシンごとにvGPUプロファイル(例:1GB, 4GBなど)を指定することで、GPUの物理リソースを複数VMに分割可能です。

メリット

  • ハード的にリソースを分割するため、安定性・セキュリティに優れる
  • QoSの担保がしやすく、ワークロードごとに明確な割り当てが可能
  • VMware vSphereとの親和性が高く、管理が一元化しやすい

デメリット

  • vGPUライセンス(NVIDIA vGPUソフトウェア)が必要
  • Pod単位のスケジューリングは難しく、仮想マシン単位の制御になる
  • 柔軟な分割(1GPUを多数のPodで共有など)がしづらい

設定方法(概要)

  1. ESXiでvGPU機能が有効なホストを用意
  2. NVIDIA vGPU Manager をESXiにインストール
  3. vGPUプロファイルを指定してOpenShiftノード用のVMを作成
    ※同じノードに異なるvGPUプロファイルを指定することはNG
     podからの要求はvGPUの個数のためサイズを区別できない
  4. VM内にNVIDIAドライバを導入し、Device Pluginを設定
  5. Pod定義で nvidia.com/gpu をリクエストしてスケジューリング

    apiVersion: v1
    kind: Pod
    metadata:
    name: gpu-pod
    spec:
    containers:
    - name: gpu-container
    image: nvidia/cuda:12.2.0-base-ubuntu22.04
    resources:
    limits:
    nvidia.com/gpu: 1 # ← GPUを1つリクエスト

TimeSlicing(時分割共有)とは?

特徴

TimeSlicingは、物理的な1枚のGPUを時間的に分割し、複数のPodに割り当てる方法です。OpenShiftのGPU Device Pluginにより、論理的な「1GPU = nPod」の構成が可能になります。

メリット

  • ライセンス不要(NVIDIA A100 などの特別なハード前提なし)
  • 物理GPUの柔軟な共有が可能(例:1枚のL4を4つのPodで共有)
  • Pod単位でのGPU利用が可能になり、Kubernetes的な運用がしやすい

デメリット

  • ハードウェアリソースを時間的に共有するため、性能の揺らぎが出る
  • セキュリティ/安定性の担保がvGPUに比べて劣る
  • OpenShift側の設定やカスタムがやや複雑

設定方法(概要)

  1. GPUドライバ(NVIDIA L4対応)とCUDAツールキットをVMに導入
  2. NVIDIA GPU Operator をOpenShiftに導入
  3. pod-resource-api を使って nvidia.com/gpu.shared のようなリソースリクエストを定義
  4. ConfigMapなどで time-slicing の割当単位を設定(例:4Pod分割)

    apiVersion: v1
    kind: Pod
    metadata:
    name: gpu-timeslice-pod
    spec:
    containers:
    - name: app
    image: your-gpu-app
    resources:
    limits:
    nvidia.com/gpu: 0.25






比較まとめ

vGPUとTimeSlicingの比較表

項目vGPUTimeSlicing
仮想化単位VM単位(vSphere依存)Pod単位(K8sネイティブ)
ライセンス有償(NVIDIA vGPUライセンス)不要(NVIDIAドライバで可)
安定性・QoS高い中程度(共有による揺らぎ)
柔軟性中(プロファイル依存)高(柔軟なPod分割可能)
設定の複雑さ低〜中(VM設定中心)中〜高(K8s構成の理解が必要)
導入ハードル高(vSphere + vGPUセットアップ必要)中(K8sにnvidia-device-pluginで済む)
GPUリソースの粒度粗い(プロファイル単位)細かい(時間スライスで分割)
Kubernetesとの親和性低(外部仮想化に依存)高(K8sネイティブに統合可能)
可搬性低(vSphere環境前提)高(任意のK8s環境で利用可能)
モニタリング・運用vCenter等の外部ツールが必要K8s内のツールで一元管理が可能

結論:どちらを選ぶべきか?

  • 高い安定性と明確なリソース分割を求める場合:vGPUがおすすめ。特に既存のvSphere環境を活かしつつ、商用環境でのGPU運用を前提とするケースに適しています。
  • 柔軟性とコストを重視する場合:TimeSlicingが有効。PoCや軽量ワークロード、小規模クラスタでのGPU活用に最適です。

本番環境では、まずPoCでTimeSlicingを試し、性能や安定性に課題があればvGPUに移行する、というアプローチも現実的です。


OpenShift × GPUの世界は日々進化しています。OpenShift 4.16はNVIDIA GPU Operatorとの相性も良く、TimeSlicingなどの共有設定も進化しています。vSphere環境でもGPU活用が広がる中で、適切な構成選定が今後の運用を大きく左右します。ぜひ本記事を参考に、最適なGPU活用戦略を練ってみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次