GPU コンテナ ワークロードをデプロイする

このページでは、Google Distributed Cloud(GDC)Sandbox AI Optimized SKU に GPU コンテナ ワークロードをデプロイする方法について説明します。

GPU コンテナ ワークロードをデプロイする

GDC Sandbox AI Optimized SKU には、org-infra クラスタ内に 4 個の NVIDIA H100 80 GB HBM3 GPU が含まれています。これらの GPU には、リソース名 nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3 を使用してアクセスできます。このセクションでは、これらの GPU を使用するようにコンテナ構成を更新する方法について説明します。

GDC Sandbox AI Optimized SKU の GPU は、事前構成されたプロジェクト「sandbox-gpu-project」に関連付けられています。GPU を使用するには、このプロジェクトを使用してコンテナをデプロイする必要があります。

始める前に

  • 組織のインフラストラクチャ クラスタに対してコマンドを実行するには、クラスタを操作するで説明されているように、org-1-infra クラスタの kubeconfig があることを確認します。

    • gdcloud コマンドラインで構成と認証を行う。
    • 組織インフラストラクチャ クラスタの kubeconfig ファイルを生成し、そのパスを環境変数 KUBECONFIG に割り当てます。
  • ワークロードを実行するには、sandbox-gpu-admin ロールが割り当てられている必要があります。デフォルトでは、このロールは platform-admin ユーザーに割り当てられます。platform-admin としてログインし、次のコマンドを実行して、他のユーザーにロールを割り当てることができます。

    kubectl --kubeconfig ${KUBECONFIG} create rolebinding ${NAME} --role=sandbox-gpu-admin \
    --user=${USER} --namespace=sandbox-gpu-project
    

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

  1. ワークロードの GPU をリクエストするには、コンテナ仕様に .containers.resources.requests フィールドと .containers.resources.limits フィールドを追加します。sandbox-gpu-project 内のすべてのコンテナは、プロジェクト全体で最大 4 個の GPU をリクエストできます。次の例では、コンテナ仕様の一部として 1 つの GPU をリクエストします。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: sandbox-gpu-project
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            resources:
            requests:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
            limits:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
    
  1. コンテナが GPU にアクセスするには、追加の権限も必要です。GPU をリクエストするコンテナごとに、次の権限をコンテナ仕様に追加します。

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

    kubectl apply -f ${CONTAINER_MANIFEST_FILE_PATH} \
        -n sandbox-gpu-project \
        --kubeconfig ${KUBECONFIG}