Compute Engine で TPU Flex Start VM を作成する

Dynamic Workload Scheduler を活用した TPU Flex Start VM は、長期的な予約なしで最大 7 日間、AI ワークロードの TPU リソースに柔軟かつ費用対効果の高い方法でアクセスできるようにします。TPU Flex Start VM をリクエストすると、容量が利用可能になるまでリクエストはキューに保持されます。プロビジョニングされると、TPU VM は指定した期間実行されます。

TPU Flex Start VM は、迅速なテスト、小規模なテスト、推論ワークロード用の TPU の動的プロビジョニング、モデルのファインチューニング、7 日未満のワークロード実行に適しています。他の TPU 使用オプションの詳細については、Cloud TPU の使用オプションをご覧ください。

TPU リソースはいつでも削除して課金を停止できます。TPU の料金の詳細については、Cloud TPU の料金をご覧ください。

制限事項

TPU Flex Start VM には次の制限があります。

  • TPU Flex Start VM をリクエストできる期間は最大 7 日間です。
  • TPU7x、TPU v6e、TPU v5p のマシンタイプをリクエストできます。これらのマシンタイプを使用できるリージョンとゾーンの詳細については、TPU のリージョンとゾーンをご覧ください。

TPU を使用する MIG には次の制限があります。

  • ライフサイクル オペレーション: TPU インスタンスの停止、起動、再開、一時停止はできません。再起動が必要な構成を変更する場合や、課金を停止する場合は、インスタンスを削除する必要があります。

  • リージョン MIG のゾーン分配: ターゲット分配形態を ANY_SINGLE_ZONE に設定する必要があります。

  • MIG での構成の更新:

    • 定義されたアクセラレータ トポロジのため、マルチホスト TPU スライスを形成する MIG を更新することはできません。
    • 自動または選択的方法を使用して、単一ホスト TPU スライスを形成する MIG を更新できます。ただし、単一ホスト TPU スライスの更新では、再起動(RESTART)アクションはサポートされていません。再起動が必要で、許容される最も大がかりなアクションが置換(REPLACE)の場合、Updater はインスタンスを置き換えます。それ以外の場合、更新の試行はエラーで失敗します。

  • マルチホスト TPU スライスを形成する MIG には、次の制限も適用されます。

    • 目標サイズ ポリシー: 目標サイズ ポリシーモードを BULK に設定する必要があります。このモードを設定すると、変更できません。

    • ターゲット サイズ: バルクモードでは、ターゲット サイズを 0 またはアクセラレータ トポロジの形成に必要なインスタンス数に設定できます。

    • ワークロード ポリシー: アクセラレータ トポロジが定義されているワークロード ポリシーを指定する必要があります。ワークロード ポリシーを設定すると、MIG からポリシーを変更または削除できなくなります。

    • MIG によって開始された修復: defaultActionOnFailure フィールドを DO_NOTHING に設定して、MIG によって開始された修復をオフにする必要があります。この構成では、MIG は障害が発生したインスタンスに対してアクションを行いません。Compute Engine は、同じスライスのすべてのインスタンスを正常な容量で再起動することで、障害が発生したインスタンスを自動的に復元します。

  • サポートされていない機能: TPU を使用する MIG は、次の機能をサポートしていません。

始める前に

TPU Flex Start VM をリクエストする前に、次の作業を行う必要があります。

  • Google Cloud CLI をインストールする
  • Google Cloud プロジェクトを作成する
  • Compute Engine API(compute.googleapis.com)を有効にする
  • 必要な権限があることを確認します。
    • roles/compute.instanceAdmin.v1
    • roles/iam.serviceAccountUser

詳細については、TPU 用の Google Cloud プロジェクトを設定するをご覧ください。

TPU Flex Start VM を使用するために十分なプリエンプティブル割り当てがあることを確認します。ワークロードに現在の割り当てよりも多くのコアが必要な場合は、割り当ての増加をリクエストできます。詳細については、Cloud TPU の割り当てをご覧ください。

MIG を使用して TPU Flex Start VM を作成する

TPU Flex Start VM を使用するには、特定のインスタンス テンプレート構成でマネージド インスタンス グループ(MIG)を作成します。

Flex Start VM の作成に関する一般的な手順については、Flex Start VM を作成するをご覧ください。

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

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

FLEX_START プロビジョニング モデルと選択した実行期間を指定して、インスタンス テンプレートを作成します。

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "FLEX_START",
        "instanceTerminationAction": "DELETE",
        "maxRunDuration": {
          "seconds": "DURATION"
        }
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
  • MACHINE_TYPE: TPU VM のマシンタイプ(例: ct6e-standard-8t)。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー(例: ubuntu-accelerator-2204-amd64-with-tpu-v6e)
  • IMAGE_PROJECT: TPU VM の OS イメージ プロジェクト(例: ubuntu-os-accelerator-images)
  • DURATION: 最大実行時間。REST の場合は、秒数として指定します(たとえば、1 時間の場合は 3600、7 日の場合は 604800)。
  • REGION: インスタンス テンプレートを作成するリージョン。

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

次のコマンドは、ワークロード ポリシーを作成します。これは、単一ホスト スライスでは省略可能です。

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "WORKLOAD_POLICY_NAME",
    "workloadPolicy": {
      "type": "HIGH_THROUGHPUT",
      "acceleratorTopology": "TOPOLOGY"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • WORKLOAD_POLICY_NAME: ワークロード ポリシーの名前。
  • TOPOLOGY: TPU VM のトポロジ(例: 4x4x8)。
  • REGION: ワークロード ポリシーを作成するリージョン。

MIG を作成する

テンプレートを使用して MIG を作成します。

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --zone=ZONE \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --workload-policy=WORKLOAD_POLICY_URL \
    --default-action-on-vm-failure=do-nothing \
    --target-size-policy-mode=bulk

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": SIZE,
    "targetSizePolicy": {
      "mode": "BULK"
    },
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "instanceLifecyclePolicy": {
      "defaultActionOnFailure": "DO_NOTHING"
    },
    "resourcePolicies": {
      "workloadPolicy": "WORKLOAD_POLICY_URL"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"

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

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

単一ホスト スライスを使用して TPU Flex Start VM を作成する

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

FLEX_START プロビジョニング モデルと選択した実行期間を指定して、インスタンス テンプレートを作成します。

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "FLEX_START",
        "instanceTerminationAction": "DELETE",
        "maxRunDuration": {
          "seconds": "DURATION"
        }
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
  • MACHINE_TYPE: TPU VM のマシンタイプ(例: ct6e-standard-8t)。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー(例: ubuntu-accelerator-2204-amd64-with-tpu-v6e)
  • IMAGE_PROJECT: TPU VM の OS イメージ プロジェクト(例: ubuntu-os-accelerator-images)
  • DURATION: 最大実行時間。REST の場合は、秒数として指定します(たとえば、1 時間の場合は 3600、7 日の場合は 604800)。
  • REGION: インスタンス テンプレートを作成するリージョン。

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

次のコマンドは、ワークロード ポリシーを作成します。これは、単一ホスト スライスでは省略可能です。

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "WORKLOAD_POLICY_NAME",
    "workloadPolicy": {
      "type": "HIGH_THROUGHPUT"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • WORKLOAD_POLICY_NAME: ワークロード ポリシーの名前。
  • REGION: ワークロード ポリシーを作成するリージョン。

MIG を作成する

テンプレートを使用して MIG を作成します。

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --zone=ZONE \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --workload-policy=WORKLOAD_POLICY_URL

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": SIZE,
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "resourcePolicies": {
      "workloadPolicy": "WORKLOAD_POLICY_URL"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"

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

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