GPU コンテナ ワークロードを管理する

コンテナでグラフィック プロセッシング ユニット(GPU)リソースを有効にして管理できます。たとえば、GPU 環境で AI と ML のノートブックを実行することが望ましい場合があります。GPU コンテナ ワークロードを実行するには、GPU デバイスをサポートする Kubernetes クラスタが必要です。GPU マシンがプロビジョニングされている Kubernetes クラスタでは、GPU サポートはデフォルトで有効になっています。

始める前に

コンテナに GPU をデプロイするには、次のものが必要です。

  • GPU マシンクラスを含む Kubernetes クラスタ。クラスタ マシンで構成できるオプションについては、サポートされている GPU カードのセクションをご覧ください。

  • GPU を確認するためのユーザー クラスタ ノード閲覧者ロール(user-cluster-node-viewer)と、プロジェクト Namespace に GPU ワークロードをデプロイするための Namespace 管理者ロール(namespace-admin)。

  • Kubernetes クラスタをホストするゾーン管理 API サーバーの kubeconfig パス。kubeconfig ファイルがない場合は、ログインして生成します。

  • GPU をホストするゾーンの組織インフラストラクチャ クラスタの kubeconfig パス。kubeconfig ファイルがない場合は、ログインして生成します。

  • Kubernetes クラスタ名。この情報がない場合は、プラットフォーム管理者に問い合わせてください。

  • Kubernetes クラスタの kubeconfig パス。kubeconfig ファイルがない場合は、ログインして生成します。

GPU リソースを使用するようにコンテナを構成する

コンテナでこれらの GPU を使用するには、次の操作を行います。

  1. Kubernetes クラスタに GPU をサポートするノードプールがあることを確認します。

    kubectl describe nodepoolclaims -n KUBERNETES_CLUSTER_NAME \
        --kubeconfig ORG_INFRASTRUCTURE_CLUSTER
    

    関連する出力は次のスニペットのようになります。

    Spec:
      Machine Class Name:  a2-ultragpu-1g-gdc
      Node Count:          2
    

    サポートされている GPU マシンタイプと Multi-Instance GPU(MIG)プロファイルの完全なリストについては、クラスタノードのマシンタイプをご覧ください。

  2. コンテナ仕様に .containers.resources.requests フィールドと .containers.resources.limits フィールドを追加します。各リソース名は、マシンクラスによって異なります。GPU リソースの割り当てを確認して、GPU リソース名を確認します。

    たとえば、次のコンテナ仕様は、a2-ultragpu-1g-gdc ノードから GPU の 3 つのパーティションをリクエストします。

     ...
     containers:
     - name: my-container
       image: "my-image"
       resources:
         requests:
           nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3
         limits:
           nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3
     ...
    
  3. コンテナが GPU にアクセスするには、追加の権限も必要です。GPU をリクエストするコンテナごとに、次の権限をコンテナ仕様に追加します。

    ...
    securityContext:
     seLinuxOptions:
       type: unconfined_t
    ...
    
  4. コンテナ マニフェスト ファイルを適用します。

    kubectl apply -f CONTAINER_MANIFEST_FILE \
        -n NAMESPACE \
        --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

GPU リソースの割り当てを確認する

  • GPU リソースの割り当てを確認するには、次のコマンドを使用します。

    kubectl describe nodes NODE_NAME
    

    NODE_NAME は、検査する GPU を管理するノードに置き換えます。

    関連する出力は次のスニペットのようになります。

    Capacity:
      nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    Allocatable:
      nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    

GPU のリソース名をメモします。GPU リソースを使用するようにコンテナを構成するときに、これらのリソース名を指定する必要があります。