マルチホスト TPU スライスを使用して MIG を作成する

このドキュメントでは、マルチホスト TPU スライスを形成するマネージド インスタンス グループ(MIG)を作成する方法について説明します。

始める前に

  • TPU インスタンスを使用して MIG を作成する際の制限事項を確認します。
  • まだ設定していない場合は、認証を設定します。認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
    1. Google Cloud CLI をインストールします。インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    2. デフォルトのリージョンとゾーンを設定します。

前提条件

マルチホスト TPU スライスの作成に進む前に、次の操作を行う必要があります。

  1. TPU のバージョンを選択する: ワークロードに適した TPU のバージョンを選択します。ワークロード タイプ別の TPU バージョンのリストについては、ワークロード タイプ別の推奨 TPU バージョンをご覧ください。

  2. 優先ロケーションで TPU の可用性を確認する: TPU は特定の Google Cloud リージョンで利用できます。TPU バージョンを使用するには、優先するリージョンでそのバージョンが使用可能であることを確認します。TPU のロケーションの一覧については、TPU の可用性をご覧ください。

  3. プロジェクトに十分な TPU 割り当てがあることを確認する: オンデマンド VM または Spot VM を使用してマルチホスト TPU スライスを作成する場合は、使用するリージョンに十分な TPU 割り当てが必要です。TPU 予約を使用するマルチホスト TPU スライスの作成には、TPU の割り当ては必要ありません。割り当ては予約の作成時に使用されるためです。TPU 割り当て名のリストについては、TPU 割り当てをご覧ください。割り当てを表示する手順については、割り当ての表示と管理をご覧ください。

  4. TPU の使用オプションを選択する: ワークロード、その期間、費用のニーズに最適な使用オプションを選択します。TPU バージョン別の使用オプションの可用性のリストについては、TPU の使用オプションをご覧ください。

  5. トポロジを選択する: 選択した TPU バージョンでサポートされているトポロジを選択します。TPU の各バージョンで使用可能なトポロジの一覧については、TPU トポロジをご覧ください。

マルチホスト TPU スライスを使用して MIG を作成する

  1. インスタンス テンプレートを作成します。
  2. ワークロード ポリシーを作成します。
  3. MIG を作成します。

インスタンス テンプレートの作成

インスタンス テンプレートを作成するコマンドは、使用する消費オプション(オンデマンド、Spot、予約で制限、Flex Start)によって異なります。使用量オプションの詳細については、VM プロビジョニング モデルについてをご覧ください。

オンデマンド TPU VM のインスタンス テンプレートを作成する

次のコマンドは、オンデマンド消費オプションを使用してインスタンス テンプレートを作成します。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --machine-type=MACHINE_TYPE \
  --maintenance-policy=TERMINATE \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT

各プレースホルダを次のように置き換えます。

  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
  • MACHINE_TYPE: TPU VM のマシンタイプ(例: ct6e-standard-8t)。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
  • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。

TPU Spot VM のインスタンス テンプレートを作成する

次のコマンドは、スポット消費オプションを使用してインスタンス テンプレートを作成します。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --machine-type=MACHINE_TYPE \
  --maintenance-policy=TERMINATE \
  --instance-termination-action=STOP \
  --provisioning-model=SPOT \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT

各プレースホルダを次のように置き換えます。

  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
  • MACHINE_TYPE: TPU VM のマシンタイプ(例: ct6e-standard-8t)。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
  • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。

TPU 予約バインド VM のインスタンス テンプレートを作成する

次のコマンドは、予約バインドの消費オプションを使用してインスタンス テンプレートを作成します。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --machine-type=MACHINE_TYPE \
  --maintenance-policy=TERMINATE \
  --instance-termination-action=DELETE \
  --reservation-affinity=specific \
  --provisioning-model=reservation-bound \
  --reservation=RESERVATION_NAME \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT

各プレースホルダを次のように置き換えます。

  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
  • MACHINE_TYPE: TPU VM のマシンタイプ(例: ct6e-standard-8t)。
  • RESERVATION_NAME: 使用する特定の予約の名前。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
  • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。

TPU Flex Start VM のインスタンス テンプレートを作成する

次のコマンドは、Flex Start 消費オプションを使用してインスタンス テンプレートを作成します。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --instance-termination-action=DELETE \
    --provisioning-model=FLEX_START \
    --max-run-duration=DURATION \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

各プレースホルダを次のように置き換えます。

  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
  • MACHINE_TYPE: TPU VM のマシンタイプ(例: ct6e-standard-8t)。
  • DURATION: TPU VM を実行できる最大期間。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
  • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。

ワークロード ポリシーの作成

accelerator-topology パラメータ(4x48x84x4x4 など)を使用してワークロード ポリシーを作成する必要があります。アクセラレータ トポロジは、インスタンスを 1 つの相互接続されたスライスとして扱うように MIG を構成します。

次のコマンドは、ワークロード ポリシーを作成します。

gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
  --type=high-throughput \
  --accelerator-topology=TOPOLOGY \
  --region=REGION

各プレースホルダを次のように置き換えます。

  • WORKLOAD_POLICY_NAME: ワークロード ポリシーの名前。
  • TOPOLOGY: TPU VM のトポロジ(4x4x8 など)。TPU の各バージョンのトポロジの詳細については、TPU トポロジをご覧ください。
  • REGION: ワークロード ポリシーのリージョン

MIG を作成する

次のように、gcloud compute instance-groups managed create コマンドを使用して、ゾーン MIG またはリージョン MIG を作成します。

  • マルチホスト TPU スライスを含むゾーン MIG を作成するには、次のコマンドを使用します。

     gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --zone=ZONE \
        --default-action-on-vm-failure=do-nothing \
        --workload-policy=WORKLOAD_POLICY_URL
    
  • マルチホスト TPU スライスを含むリージョン MIG を作成するには、次のコマンドを使用します。

     gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --region=REGION \
        --default-action-on-vm-failure=do-nothing \
        --workload-policy=WORKLOAD_POLICY_URL \
        --target-distribution-shape=any-single-zone \
        --instance-redistribution-type=none
    

各プレースホルダを次のように置き換えます。

  • MIG_NAME: MIG の名前。
  • MIG_SIZE: MIG 内の VM の数。
  • INSTANCE_TEMPLATE_URL: MIG でインスタンスの作成に使用するインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。
    • リージョン インスタンス テンプレートの場合: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • グローバル インスタンス テンプレートの場合: INSTANCE_TEMPLATE_ID
  • ZONE: MIG のゾーン
  • REGION: MIG のリージョン
  • WORKLOAD_POLICY_URL: MIG でインスタンスの作成に使用するワークロード ポリシーの URL。例: projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME

MIG にカスタム名で VM を作成する

MIG で VM を作成するには、各 VM のカスタム名を指定します。これは、デバッグや、インスタンスが特定の順序で作成されるようにする場合に便利です。

マルチホスト TPU スライスを含む MIG は、目標サイズ ポリシーのバルクモードを使用します。このような MIG でカスタム名を使用して VM を作成する場合、次のようになります。

  • まず、MIG に VM がないことを確認する必要があります。MIG に VM がある場合は、MIG のサイズをターゲット サイズ 0 に変更するか、ターゲット サイズ 0別の MIG を作成する必要があります。

  • カスタム名で VM を作成するには、REST API を使用する必要があります。

次のいずれかの REST API メソッドを使用して、カスタム名で VM を作成します。

  • ゾーン MIG の場合は、instanceGroupManagers.createInstances を使用します。

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

  • リージョン MIG の場合は、regionInstanceGroupManagers.createInstances を使用します。

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

各プレースホルダを次のように置き換えます。

  • PROJECT_ID: MIG が存在するプロジェクトの ID。
  • ZONE: MIG のゾーン
  • REGION: MIG のリージョン
  • INSTANCE_NAME_1,2,..: 指定された MIG に追加する VM の名前。

次のステップ