すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:GPU 共有の概要

最終更新日:Sep 16, 2026

このトピックでは、Alibaba Cloud が提供する GPU 共有ソリューションを紹介し、GPU Sharing Professional Edition の利点を説明します。また、GPU Sharing Basic Edition と GPU Sharing Professional Edition の機能と利用シナリオを比較することで、GPU 共有をより深く理解し、活用しやすくなります。

背景情報

GPU 共有により、同一の GPU デバイス上で複数のコンテナを実行できます。Alibaba Cloud Container Service for Kubernetes (ACK) が GPU 共有をオープンソース化したことで、Alibaba Cloud 上およびオンプレミスデータセンター内のコンテナクラスターに GPU 共有フレームワークを実装できるようになりました。これにより、複数のコンテナで同一の GPU デバイスを共有し、利用コストを削減できます。

しかし、コスト効率を実現する一方で、GPU 上でコンテナを安定して動作させることも重要です。各コンテナに割り当てられた GPU リソースを隔離することで、同一 GPU 上の各コンテナのリソース使用量を制限し、リソースの過剰使用による相互干渉を防ぐことができます。この課題を解決するため、コンピューティング業界では NVIDIA vGPU、Multi-Process Service (MPS)、vCUDA などの多くのソリューションが提供されており、より細かい GPU 利用管理を実現しています。

これらの要件を満たすため、ACK は GPU 共有ソリューションを導入しました。このソリューションは、単一の GPU を複数のタスクで共有できるだけでなく、同一 GPU 上の異なるアプリケーションに対してメモリ隔離と GPU 計算能力のパーティショニングを実現します。

機能と利点

GPU 共有ソリューションは、Alibaba Cloud が開発したサーバーカーネルドライバーを使用し、NVIDIA GPU の基盤ドライバーをより効率的に活用します。GPU 共有は、以下の機能を提供します。

  • 高い互換性: GPU 共有は、Kubernetes や NVIDIA Docker などの標準的なオープンソースソリューションと互換性があります。

  • 使いやすさ: GPU 共有は優れたユーザーエクスペリエンスを提供します。AI アプリケーションの Compute Unified Device Architecture (CUDA) ライブラリを置き換える際、アプリケーションの再コンパイルや新しいコンテナイメージの作成は不要です。

  • 安定性: GPU 共有は、NVIDIA GPU 上で安定した基盤操作を提供します。CUDA ライブラリの API 操作や、CUDA Deep Neural Network (cuDNN) の一部のプライベート API 操作は直接呼び出すことが困難ですが、これによりシステム全体の安定性が確保されています。

  • リソース隔離: GPU 共有は、割り当てられた GPU メモリと計算能力が相互に影響しないことを保証します。

GPU 共有は、GPU スケジューリングとメモリ隔離を実現する、費用対効果が高く、信頼性が高く、使いやすいソリューションを提供します。

利点

説明

GPU 共有、スケジューリング、メモリ隔離をサポート

  • 1 つの Pod に 1 つの GPU を割り当てる方式で、GPU 共有、スケジューリング、メモリ隔離をサポートします。これは、モデル推論シナリオで一般的に利用されます。

  • 1 つの Pod に複数の GPU を割り当てる方式で、GPU 共有、スケジューリング、メモリ隔離をサポートします。これは、分散モデルをトレーニングするコードのビルドに一般的に利用されます。

柔軟な GPU 共有およびメモリ隔離ポリシーをサポート

  • binpack アルゴリズムと spread アルゴリズムを使用した GPU 割り当てをサポートします。

    • binpack: システムは、1 つの GPU を複数の Pod で優先的に共有します。これは、高い GPU 使用率が必要なシナリオに適しています。

    • spread: システムは、各 Pod に 1 つの GPU を割り当てることを試みます。これは、GPU の高可用性が必要なシナリオに適しています。システムは、アプリケーションの異なるレプリカ Pod に同じ GPU を割り当てることを回避しようとします。

  • メモリ隔離なしの GPU 共有をサポートします。これは、アプリケーション層でユーザー定義の隔離システムが構成されているディープラーニングシナリオに適しています。

  • 複数の GPU での GPU 共有とメモリ隔離をサポートします。

GPU リソースの包括的な監視をサポート

占有 GPU と共有 GPU の両方の監視をサポートします。

無料

GPU 共有を利用する前に、クラウドネイティブ AI スイートをアクティブ化する必要があります。2024年6月6日 00:00:00 (UTC+8) 以降、クラウドネイティブ AI スイートは完全に無料で利用できます。

注意事項

GPU 共有は、ACK Pro クラスターでのみサポートされています。GPU 共有のインストールと利用方法の詳細については、以下のトピックをご参照ください。

GPU 共有が提供する以下の高度な機能も使用できます。

用語

共有モードと占有モード

共有モードでは、複数の Pod が 1 つの GPU を共有できます。次の図をご参照ください。TU2.png

占有モードでは、1 つの Pod が 1 つ以上の GPU を占有します。次の図をご参照ください。TU1.png

GPU メモリ隔離

GPU 共有は、1 つの GPU 上で複数の Pod を実行できることを保証しますが、GPU メモリ隔離が無効になっている場合、Pod 間のリソースの競合を防ぐことはできません。以下に例を示します。

Pod 1 は 5 GiB の GPU メモリを要求し、Pod 2 は 10 GiB の GPU メモリを要求します。GPU メモリ隔離が無効になっている場合、Pod 1 は自身が要求した 5 GiB を超えてメモリを使用してしまう可能性があり、Pod 2 が使用するはずのメモリを侵害します。その結果、Pod 2 は必要な 10 GiB のメモリを確保できず、GPU メモリ不足により起動に失敗します。GPU メモリ隔離を有効にすると、Pod 1 が要求した値を超える GPU メモリを使用しようとした場合、GPU メモリ隔離モジュールが Pod 1 を強制的に失敗させます。TU3.png

GPU スケジューリングポリシー:binpack と spread

GPU 共有機能が有効になっているノードに複数の GPU がある場合、以下の GPU 選択ポリシーのいずれかを選択できます。

  • binpack: デフォルトでは、binpack ポリシーが使用されます。スケジューラは、別の GPU に切り替える前に、1 つの GPU のすべてのリソースを Pod に割り当てます。これにより、GPU フラグメントの発生を防ぎます。

  • spread: スケジューラは、GPU に障害が発生した際のビジネスの中断を防ぐため、ノード上の異なる GPU に Pod を分散させようとします。

この例では、ノードに 2 つの GPU があります。各 GPU は 15 GiB のメモリを提供します。Pod 1 は 2 GiB のメモリを要求し、Pod 2 は 3 GiB のメモリを要求します。

image

シングル GPU 共有とマルチ GPU 共有

  • シングル GPU 共有: 1 つの Pod は、1 つの GPU からのみ割り当てられる GPU リソースを要求できます。

  • マルチ GPU 共有: 1 つの Pod は、複数の GPU から均等に割り当てられる GPU リソースを要求できます。

image