N1 を使用するカスタム AI 最適化 GKE クラスタを作成する

このドキュメントでは、NVIDIA T4 または V100 GPU をアタッチした N1 汎用マシンシリーズを使用して、人工知能(AI)と機械学習(ML)のワークロードをサポートするカスタムの Google Kubernetes Engine(GKE)クラスタを作成する方法について説明します。GPU をアタッチした N1 マシンは一般的な GPUと見なされます。これは、独立したコンピューティング リソース を提供します。これは、小規模から中規模の推論や グラフィック処理を多用するアプリケーションなど、主流の AI タスク向けに設計されています。

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

N1 マシンシリーズを使用する 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 リソースを取得して使用する方法に基づいて選択します。詳細については、使用 オプションを選択するをご覧ください。

  2. 容量を取得します 。使用オプションの 容量を取得する方法を確認してください。

要件

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

制限事項

N1 を一般的な GPU マシンシリーズとして使用する場合、次の制限が適用されます。

  • マルチインスタンス GPU(NVIDIA): N1 マシンシリーズは、マルチインスタンス GPU(NVIDIA)をサポートしていません。
  • NCCL Fast Socket: GKE の N1 マシンで NCCL Fast Socket を使用することはできません。N1 マシンはマルチノード通信をサポートしていますが、標準の VPC ネットワーキングを使用します。最大ネットワーク スループットを必要とする大規模な分散トレーニングには、クラスタ化された GPU マシンシリーズ(GPUDirect TCPX を使用する A3 High または A3 Mega、GPUDirect RDMA を使用する A3 Ultra または A4)を使用することをおすすめします。

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. ノードプールを作成します。 クラスタを作成したら、T4 または V100 GPU をアタッチした N1 マシンを使用してノードプールを追加できます。

    ノードプールを作成するには、次のコマンドを使用します。

    T4 GPU をアタッチした N1

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

    V100 GPU をアタッチした N1

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

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

    • CLUSTER_NAME: クラスタの名前。
    • REGION: クラスタのリージョン。
    • ZONE: リクエストされた GPU が使用可能なリージョン内の 1 つ以上のゾーン(us-central1-a など)。これは、コンパクト プレースメントを使用する場合に必要です。
    • NODE_POOL_NAME: ノードプールの名前。
    • MACHINE_TYPE: ノードの N1 マシンタイプ(n1-standard-4 など)。
    • 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: 使用するアクセラレータ。T4 GPU には nvidia-tesla-t4、V100 GPU には nvidia-tesla-v100 を使用します。
    • RESERVATION_NAME: Compute Engine の容量予約の名前。共有予約、または予約の特定のブロックとサブブロックを使用するには、予約済みゾーンパス リソースの使用の該当するセクションをご覧ください。
  2. GPU をリクエストするコンテナに次のリソースを追加します。

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

    AMOUNT は、各ノードにアタッチする GPU の数に置き換えます。

次のステップ