A2 を使用する AI 向けに最適化されたカスタム GKE クラスタを作成する

このドキュメントでは、A2 Standard(A100 40 GB)または A2 Ultra(A100 80 GB)アクセラレータ最適化マシンタイプを使用して、人工知能(AI)と ML ワークロードをサポートするカスタム Google Kubernetes Engine(GKE)クラスタを作成する方法について説明します。A2 は汎用 GPU マシン シリーズで、小規模なモデルのトレーニングや単一ホストの推論など、主流の AI タスク向けに設計された独立したコンピューティング リソースを提供します。

GKE は、組織の多様なワークロードを実行するための単一のプラットフォーム サーフェスを提供し、複数のプラットフォームを管理する運用上の負担を軽減します。

A2 マシンシリーズを使用する AI 最適化 GKE クラスタを作成するには、次の操作を行います。

  1. GKE 環境を作成する
  2. クラスタに接続
  3. Pod マニフェストを構成する

始める前に

作業を始める前に、次のタスクが完了していることを確認してください。

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API を有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化します。gcloud CLI をインストール済みの場合は、gcloud components update コマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。

必要なロール

GKE クラスタの作成と管理に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

使用オプションを選択して容量を取得する

  1. 使用オプションを選択します。GPU リソースの取得方法と使用方法に基づいて選択します。詳細については、消費オプションを選択するをご覧ください。

    GKE の場合は、使用量オプションを選択する際に次の追加情報を考慮してください。

  2. 容量を取得する。使用オプションの容量を取得する方法を学習する。

要件

A2 マシンを使用する AI 最適化 GKE クラスタの場合、GPU ノードでは NVIDIA ドライバ バージョン 450.80.02 以降を使用する必要があります。

制限事項

汎用 GPU としての A2 マシンには、次の制限が適用されます。

  • マルチインスタンス GPU: A2(A100 GPU)はハードウェア パーティショニングをサポートしていますが、GKE Autopilot を使用する場合はマルチインスタンス GPU(NVIDIA)はサポートされていません。A100 GPU のパーティショニングを必要とするワークロードには、GKE Standard を使用する必要があります。

GKE 環境を作成する

Autopilot モードまたは標準モードでクラスタを作成できます。

Autopilot

Autopilot クラスタを作成するには、次のコマンドを実行します。

  gcloud container clusters create-auto CLUSTER_NAME \
      --region=REGION

次のように置き換えます。

  • CLUSTER_NAME: クラスタの名前。
  • REGION: クラスタのリージョン。

Standard

Standard クラスタと GPU ノードプールを作成します。

  1. Standard クラスタを作成するには、次のコマンドを実行します。

    gcloud container clusters create CLUSTER_NAME \
        --region=REGION \
        --enable-ip-alias
    

    次のように置き換えます。

    • CLUSTER_NAME: クラスタの名前。
    • REGION: クラスタのリージョン。
  2. ノードプールを作成します。クラスタを作成したら、A2 GPU を含むノードプールを追加できます。

    次の点にご注意ください。

    • A2 標準マシンタイプ(a2-highgpu)では、スクラッチ スペースまたはキャッシュ保存に使用するために、ローカル SSD ディスクをノードに手動でアタッチする必要があります。--local-ssd-count フラグを使用します。
    • A2 Ultra マシンタイプ(a2-ultragpu)には、デフォルトで一定数のローカル SSD ディスクが自動的に含まれます。
    • マルチノード トレーニング ワークロードでは、コンパクト プレースメント ポリシーを使用してノード間のネットワーク レイテンシを最小限に抑えることをおすすめします。
    • マルチノード トレーニング ワークロードでは、ネットワーク パフォーマンスを向上させるために NCCL Fast Socket を有効にすることもおすすめします。

    A2 標準(A100 40 GB)

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --node-locations=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=nvidia-tesla-a100,count=AMOUNT,gpu-driver-version=LATEST \
        --placement-type=COMPACT \
        --scopes="https://www.googleapis.com/auth/cloud-platform" \
        --local-ssd-count=LOCAL_SSD_COUNT
    

    A2 Ultra(A100 80 GB)

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --node-locations=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=nvidia-a100-80gb,count=AMOUNT,gpu-driver-version=LATEST \
        --placement-type=COMPACT \
        --scopes="https://www.googleapis.com/auth/cloud-platform"
    

    次のように置き換えます。

    • CLUSTER_NAME: クラスタの名前。
    • REGION: クラスタのリージョン。
    • ZONE: リクエストされた GPU が使用可能なリージョン内の 1 つ以上のゾーン(us-central1-a など)。これは、コンパクト プレースメントを使用する場合に必要です。
    • NODE_POOL_NAME: ノードプールの名前。
    • MACHINE_TYPE: ノードのマシンタイプ(a2-highgpu-1g など)。
    • AMOUNT: 各ノードに接続する GPU の数。
    • LOCAL_SSD_COUNT: 各ノードでプロビジョニングするローカル SSD ボリュームの数。

クラスタに接続する

次のセクションで kubectl コマンドを実行できるように、クラスタに接続します。

gcloud container clusters get-credentials CLUSTER_NAME \
    --region=REGION

次のように置き換えます。

  • CLUSTER_NAME: クラスタの名前。
  • REGION: クラスタのリージョン。

詳細については、kubectl をインストールしてクラスタ アクセスを構成するをご覧ください。

Pod マニフェストを構成する(Autopilot のみ)

Autopilot クラスタを作成した場合は、GKE がハードウェアをプロビジョニングできるように、Pod マニフェストで適切な GPU を選択する必要があります。

  1. ノードセレクタを使用して、選択した GPU タイプと特定の予約を指定します。

    spec:
      nodeSelector:
        cloud.google.com/gke-accelerator: ACCELERATOR
        cloud.google.com/gke-gpu-driver-version: latest
        # Optional: Include if using reserved capacity
        cloud.google.com/reservation-name: RESERVATION_NAME
        cloud.google.com/reservation-affinity: "specific"
    

    次のように置き換えます。

    • ACCELERATOR: 予約したアクセラレータ。nvidia-tesla-a100(A2 Standard の場合)または nvidia-a100-80gb(A2 Ultra の場合)を使用する必要があります。
    • RESERVATION_NAME: Compute Engine の容量予約の名前。共有予約、または予約の特定のブロックとサブブロックを使用するには、予約済みゾーンパスリソースを使用するの該当するセクションをご覧ください。
  2. GPU をリクエストするコンテナに次のリソースを追加します。

    containers:
      - name: my-container
        resources:
          limits:
            nvidia.com/gpu: AMOUNT
    

    AMOUNT は、各ノードに接続する GPU の数に置き換えます。

次のステップ