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

Container Service for Kubernetes:複数 GPU 共有の実現

最終更新日:May 01, 2025

Container Service for Kubernetes (ACK) マネージド Pro クラスタは、GPU 共有をサポートしています。 GPU 共有を使用すると、GPU リソースを共有し、メモリを分離できます。 このトピックでは、複数 GPU 共有ポリシーを構成する方法について説明します。

前提条件

複数 GPU 共有の概要

重要

複数 GPU 共有では、GPU メモリを分離した共有コンピューティングリソースが必要です。

モデル開発フェーズでは、アプリケーションは全リソースを占有せずに複数の GPU を必要とする場合があります。 すべての GPU を開発環境に割り当てると、リソースが浪費される可能性があります。 この問題を回避するには、複数 GPU 共有を使用します。

複数 GPU 共有を使用すると、アプリケーションは M 個の GPU に分散された N GiB の GPU メモリをリクエストできます。各 GPU は N/M GiB を割り当てます。 N/M の値は整数である必要があり、すべての M 個の GPU は同じ Kubernetes ノードに存在する必要があります。 たとえば、8 GiB のメモリをリクエストし、2 つの GPU を指定すると、各 GPU は 4 GiB を割り当てます。

  • 単一 GPU 共有: ポッドは、1 つの GPU のみによって割り当てられる GPU リソースをリクエストできます。

  • 複数 GPU 共有: ポッドは、複数の GPU によって均等に割り当てられる GPU リソースをリクエストできます。

複数 GPU 共有ポリシーの構成

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

  2. [クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。 左側のペインで、[ワークロード] > [ジョブ] を選択します。

  3. [ジョブ] ページで、[YAML から作成] をクリックします。 次の内容を [テンプレート] セクションにコピーし、[作成] をクリックします。

    YAML コンテンツを表示するにはクリックしてください

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: tensorflow-mnist-multigpu
    spec:
      parallelism: 1
      template:
        metadata:
          labels:
            app: tensorflow-mnist-multigpu
            # ポッドラベルとリソース制限を追加して、2 つの GPU によって割り当てられる 8 GiB のメモリをリクエストします。 各 GPU は 4 GiB のメモリを割り当てます。
            aliyun.com/gpu-count: "2"
        spec:
          containers:
          - name: tensorflow-mnist-multigpu
            image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:tensorflow-1.5
            command:
            - python
            - tensorflow-sample-code/tfjob/docker/mnist/main.py
            - --max_steps=100000
            - --data_dir=tensorflow-sample-code/data
            resources:
              limits:
                aliyun.com/gpu-mem: 8 # 8 GiB のメモリをリクエストします。
            workingDir: /root
          restartPolicy: Never

    YAML テンプレートの説明:

    • YAML テンプレートは TensorFlow MNIST ジョブを定義します。 ジョブは、2 つの GPU によって割り当てられる 8 GiB のメモリをリクエストします。 各 GPU は 4 GiB のメモリを割り当てます。

    • 2 つの GPU をリクエストするには、aliyun.com/gpu-count: 2 ポッドラベルを追加します。

    • 8 GiB のメモリをリクエストするには、aliyun.com/gpu-mem: 8 リソース制限を追加します。

複数 GPU 共有ポリシーの確認

  1. [クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。 左側のペインで、[ワークロード] > [ポッド] を選択します。

  2. 作成したポッド (例: tensorflow-mnist-multigpu-***) の [アクション] 列にある [ターミナル] をクリックしてポッドにログインし、次のコマンドを実行します。

    nvidia-smi

    期待される出力:

    Wed Jun 14 03:24:14 2023
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 470.161.03   Driver Version: 470.161.03   CUDA Version: 11.4     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Tesla V100-SXM2...  On   | 00000000:00:09.0 Off |                    0 |
    | N/A   38C    P0    61W / 300W |    569MiB /  4309MiB |      2%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    |   1  Tesla V100-SXM2...  On   | 00000000:00:0A.0 Off |                    0 |
    | N/A   36C    P0    61W / 300W |    381MiB /  4309MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    +-----------------------------------------------------------------------------+

    出力は、ポッドが 2 つの GPU のみを使用できることを示しています。 各 GPU は 4,309 MiB のメモリを提供でき、これはポッドによってリクエストされます。 各 GPU の実際のメモリサイズは 16,160 MiB です。

  3. ポッドのログを表示するには、ポッドの [アクション] 列にある [ログ] をクリックします。 次の情報が表示されます。

    totalMemory: 4.21GiB freeMemory: 3.91GiB
    totalMemory: 4.21GiB freeMemory: 3.91GiB

    デバイス情報は、各 GPU が 4 GiB のメモリを割り当てることを示しています。 各 GPU の実際のメモリサイズは 16,160 MiB です。 これは、メモリ分離が実装されていることを意味します。