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

Container Service for Kubernetes:GPU 共有コンポーネントの管理

最終更新日:Nov 09, 2025

Container Service for Kubernetes (ACK) は、複数のモデルが 1 つの GPU を共有し、NVIDIA カーネルモードドライバーに基づく GPU メモリ隔離をサポートする GPU 共有機能を提供します。クラスターに GPU 共有コンポーネントがインストールされているが、ノードの GPU ドライバーバージョンまたはオペレーティングシステムバージョンがクラスター内の既存の cGPU バージョンと互換性がない場合は、GPU 共有コンポーネントを最新バージョンにアップグレードする必要があります。このトピックでは、GPU 高速化ノードで GPU 共有コンポーネントを管理して、GPU スケジューリングと隔離機能を実装する方法について説明します。

前提条件

制限事項

  • GPU 共有が有効になっているノードでは、CPU ポリシーを static に設定しないでください。

  • KubeConfig ファイルのカスタムパスを指定するには、export KUBECONFIG=<kubeconfig> コマンドを実行します。kubectl inspect cgpu コマンドは --kubeconfig パラメーターをサポートしていないことにご注意ください。

  • cGPU を使用して GPU リソースを隔離する場合、Unified Virtual Memory (UVM) を使用して GPU メモリをリクエストすることはできません。したがって、Compute Unified Device Architecture (CUDA) API の cudaMallocManaged() を呼び出して GPU メモリをリクエストすることはできません。他のメソッドを使用して GPU メモリをリクエストできます。たとえば、cudaMalloc() を呼び出すことができます。詳細については、「Unified Memory for CUDA Beginners」をご参照ください。

  • 共有 GPU の DaemonSet によって管理される Pod は、最も高い優先度を持ちません。したがって、リソースはより高い優先度の Pod にスケジュールされる可能性があり、ノードは DaemonSet によって管理される Pod を退去させる可能性があります。この問題を回避するには、共有 GPU の実際の DaemonSet を変更します。たとえば、GPU メモリを共有するために使用される gpushare-device-plugin-ds DaemonSet を変更し、priorityClassName: system-node-critical を指定して、DaemonSet によって管理される Pod の優先度を確保できます。

  • パフォーマンスの最適化のため、cGPU を使用する場合、GPU ごとに最大 20 個の Pod を作成できます。作成された Pod の数がこの制限を超えると、同じ GPU にスケジュールされた後続の Pod は実行に失敗し、Error occurs when creating cGPU instance: unknown というエラーが返されます。

  • GPU 共有コンポーネントはリージョンの制限なくインストールできます。ただし、GPU メモリの隔離は、次の表に記載されているリージョンでのみサポートされています。ACK クラスターがこれらのリージョンのいずれかにデプロイされていることを確認してください。

    リージョン

    リージョン

    ID

    中国 (北京)

    cn-beijing

    中国 (上海)

    cn-shanghai

    中国 (杭州)

    cn-hangzhou

    中国 (張家口)

    cn-zhangjiakou

    中国 (ウランチャブ)

    cn-wulanchabu

    中国 (深圳)

    cn-shenzhen

    中国 (成都)

    cn-chengdu

    中国 (河源)

    cn-heyuan

    中国 (香港)

    cn-hongkong

    日本 (東京)

    ap-northeast-1

    インドネシア (ジャカルタ)

    ap-southeast-5

    シンガポール

    ap-southeast-1

    米国 (バージニア)

    us-east-1

    米国 (シリコンバレー)

    us-west-1

    ドイツ (フランクフルト)

    eu-central-1

  • バージョン要件。

    構成

    バージョン要件

    Kubernetes バージョン

    • ack-ai-installer コンポーネントのバージョンが 1.12.0 未満の場合、Kubernetes 1.18.8 以降がサポートされます。

    • ack-ai-installer コンポーネントのバージョンが 1.12.0 以降の場合、Kubernetes 1.20 以降のみがサポートされます。

    NVIDIA ドライバーバージョン

    ≥ 418.87.01

    コンテナーランタイムバージョン

    • Docker: ≥ 19.03.5

    • containerd: ≥ 1.4.3

    オペレーティングシステム

    Alibaba Cloud Linux 3.x (コンテナー最適化 OS には ack-ai-installer コンポーネントバージョン 1.12.6 以降が必要)、Alibaba Cloud Linux 2.x、CentOS 7.6、CentOS 7.7、CentOS 7.9、Ubuntu 22.04

    GPU モデル

    NVIDIA P、NVIDIA T、NVIDIA V、NVIDIA A、および NVIDIA H シリーズ

GPU 共有コンポーネントのインストール

ステップ 1: GPU 共有コンポーネントをインストールする

クラウドネイティブ AI スイートがデプロイされていない場合

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [クラウドネイティブ AI スイート] を選択します。

  3. [クラウドネイティブ AI スイート] ページで、[デプロイ] をクリックします。

  4. [クラウドネイティブ AI スイートのデプロイ] ページで、[スケジューリングポリシー拡張 (バッチタスクスケジューリング、GPU 共有、トポロジー対応 GPU スケジューリング)] を選択します。

  5. (オプション) [スケジューリングポリシー拡張 (バッチタスクスケジューリング、GPU 共有、トポロジー対応 GPU スケジューリング)] の右側にある [詳細設定] をクリックします。[パラメーター] パネルで、cGPU の policy パラメーターを変更します。変更が完了したら、[OK] をクリックします。

    cGPU が提供する計算能力共有機能の要件がない場合は、ネイティブスケジューリングであるデフォルト設定の policy: 5 を使用することをお勧めします。cGPU でサポートされているポリシーの詳細については、「cGPU のインストールと使用」をご参照ください。image

  6. [クラウドネイティブ AI スイート] ページの下部で、[クラウドネイティブ AI スイートのデプロイ] をクリックします。

    コンポーネントがインストールされると、[クラウドネイティブ AI スイート] ページのコンポーネントリストに、インストールされた GPU 共有コンポーネント [ack-ai-installer] が表示されます。

クラウドネイティブ AI スイートがデプロイされている場合

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [クラウドネイティブ AI スイート] を選択します。

  3. [ack-ai-installer] コンポーネントを見つけ、[アクション] 列の [デプロイ] をクリックします。

  4. (オプション) [パラメーター] パネルで、cGPU の policy パラメーターを変更します。

    cGPU が提供する計算能力共有機能の要件がない場合は、ネイティブスケジューリングであるデフォルト設定の policy: 5 を使用することをお勧めします。cGPU でサポートされているポリシーの詳細については、「cGPU のインストールと使用」をご参照ください。image

  5. 変更が完了したら、[OK] をクリックします。

    コンポーネントがインストールされると、[ack-ai-installer][ステータス][デプロイ済み] に変わります。

ステップ 2: GPU 共有と GPU メモリ隔離を有効にする

  1. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

  2. [ノードプール] ページで、[ノードプールの作成] をクリックします。ノードプールの構成方法の詳細については、「ノードプールの作成と管理」をご参照ください。

  3. [ノードプールの作成] ページで、パラメーターを構成してノードプールを作成し、[確認] をクリックします。次の表に、主要なパラメーターを示します。

    パラメーター

    説明

    期待されるノード数

    ノードプール内のノードの初期数。ノードプールにノードを作成したくない場合は、このパラメーターを 0 に設定します。

    ノードラベル

    ビジネス要件に基づいてラベルを追加します。ノードラベルの詳細については、「GPU ノードモデルの仕様とスケジューリングラベルのガイドライン」をご参照ください。

    次の例では、ラベルの値が cgpu に設定されており、ノードで GPU 共有が有効になっていることを示します。ノード上の Pod は GPU メモリのみをリクエストする必要があります。複数の Pod が同じ GPU を共有して、GPU メモリの隔離と計算能力の共有を実装できます。

    [ノードラベル] の横にある Node Label アイコンをクリックし、[キー]ack.node.gpu.schedule に、[値]cgpu に設定します。

    重要

ステップ 3: GPU 高速化ノードを追加する

説明

ノードプールを作成する際にすでに GPU 高速化ノードをノードプールに追加している場合は、このステップをスキップしてください。

ノードプールが作成された後、GPU 高速化ノードをノードプールに追加できます。GPU 高速化ノードを追加するには、インスタンスタイプのアーキテクチャを [Elastic GPU Service] に設定する必要があります。詳細については、「既存の ECS インスタンスの追加」または「ノードプールの作成と管理」をご参照ください。

ステップ 4: GPU 検査ツールをインストールして使用する

  1. kubectl-inspect-cgpu をダウンロードします。実行可能ファイルは、PATH 環境変数に含まれるディレクトリにダウンロードする必要があります。この例では、/usr/local/bin/ が使用されます。

    • Linux を使用している場合は、次のコマンドを実行して kubectl-inspect-cgpu をダウンロードします。

      wget http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/gpushare/kubectl-inspect-cgpu-linux -O /usr/local/bin/kubectl-inspect-cgpu
    • macOS を使用している場合は、次のコマンドを実行して kubectl-inspect-cgpu をダウンロードします。

      wget http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/gpushare/kubectl-inspect-cgpu-darwin -O /usr/local/bin/kubectl-inspect-cgpu
  2. 次のコマンドを実行して、kubectl-inspect-cgpu に実行権限を付与します。

    chmod +x /usr/local/bin/kubectl-inspect-cgpu
  3. 次のコマンドを実行して、クラスターの GPU 使用状況をクエリします。

    kubectl inspect cgpu

    システムは、次の出力のような情報を表示します。

    NAME                       IPADDRESS      GPU0(Allocated/Total)  GPU Memory(GiB)
    cn-shanghai.192.168.6.104  192.168.6.104  0/15                   0/15
    ----------------------------------------------------------------------
    Allocated/Total GPU Memory In Cluster:
    0/15 (0%)

GPU 共有コンポーネントの更新

ステップ 1: GPU 共有コンポーネントの更新方法を決定する

クラスターに GPU 共有コンポーネント (ack-ai-installer) がどのようにインストールされたかに基づいて、更新方法を選択する必要があります。GPU 共有コンポーネントをインストールするには 2 つの方法があります。

  • クラウドネイティブ AI スイートの使用 (推奨): [クラウドネイティブ AI スイート] ページで GPU 共有コンポーネント ack-ai-installer をインストールします。

  • アプリカタログの使用 (この方法は利用できなくなりました): [マーケットプレイス][アプリカタログ] ページで GPU 共有コンポーネント ack-ai-installer をインストールします。このインストール方法は利用できなくなりました。ただし、この方法ですでにインストールされているコンポーネントについては、引き続きこの方法で更新できます。

    重要

    この方法でインストールされたコンポーネントをクラスターからアンインストールした場合、コンポーネントを再インストールする際には、クラウドネイティブ AI スイートサービスを有効にしてインストールを完了する必要があります。

クラスター内の GPU 共有コンポーネントのインストール方法を決定する方法

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [クラウドネイティブ AI スイート] を選択します。

  3. [クラウドネイティブ AI スイート] ページで ack-ai-installer コンポーネントがデプロイされているかどうかを確認します。

    デプロイされている場合、GPU 共有コンポーネントは [クラウドネイティブ AI スイート] を通じてインストールされています。そうでない場合は、[アプリカタログ] を通じてインストールされています。

ステップ 2: コンポーネントを更新する

クラウドネイティブ AI スイートによる更新

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [クラウドネイティブ AI スイート] を選択します。

  3. [コンポーネント] セクションで、[ack-ai-installer] コンポーネントを見つけ、[アクション] 列の [アップグレード] をクリックします。

アプリカタログによる更新

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。

  3. Helm リストで ack-ai-installer コンポーネントを見つけ、[アクション] 列の [更新] をクリックします。ページの指示に従って最新のチャートバージョンを選択し、コンポーネントの更新を完了します。

    重要

    チャート構成をカスタマイズする場合は、構成を変更した後にコンポーネントの更新を確認してください。

    更新後、Helm リストを確認して、ack-ai-installer コンポーネントのチャートバージョンが最新バージョンであることを確認します。

ステップ 3: 既存のノードを更新する

[ack-ai-installer] コンポーネントが更新された後、既存のノードの cGPU バージョンは自動的に更新されません。ノードで cGPU 隔離が有効になっているかどうかを判断するには、次の手順を参照してください。

  • クラスターに cGPU 隔離が有効になっている GPU 高速化ノードが含まれている場合は、これらの既存のノードで cGPU バージョンを更新する必要があります。詳細については、「ノード上の cGPU バージョンを更新する」をご参照ください。

  • クラスターに cGPU 隔離が有効になっているノードが含まれていない場合は、このステップをスキップしてください。

    説明
    • ノードに ack.node.gpu.schedule=cgpu または ack.node.gpu.schedule=core_mem ラベルがある場合、そのノードでは cGPU 隔離が有効になっています。

    • 既存のノードで cGPU バージョンを更新するには、ノード上のすべてのアプリケーション Pod を停止する必要があります。ビジネスシナリオに基づいて、オフピーク時にこの操作を実行してください。