単一ホスト Cloud TPU スライスを使用して MIG を作成する

このドキュメントでは、複数の独立した単一ホスト TPU スライスを使用してマネージド インスタンス グループ(MIG)を作成する方法について説明します。

前提条件

次の前提条件を満たしていることを確認してください。

  1. TPU のプロジェクトを設定するの説明に従って、TPU のプロジェクトを作成します。
  2. リソースを計画するの説明に従って、TPU の要件を決定します。

複数の単一ホスト TPU スライスを使用して MIG を作成する

MIG に複数の独立した TPU VM を作成するには:

  1. インスタンス テンプレートを作成します。
  2. MIG を作成します。

インスタンス テンプレートを作成する

インスタンス テンプレートの構成は、使用する消費オプション(オンデマンド、スポット、予約、Flex Start)によって異なります。消費オプションの詳細については、 TPU リソースを計画する をご覧ください。

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

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

gcloud

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

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"
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • 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

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

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": "SPOT",
        "instanceTerminationAction": "STOP"
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • 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

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

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": "RESERVATION_BOUND",
        "instanceTerminationAction": "DELETE"
      },
      "reservationAffinity": {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values": [
          "RESERVATION_NAME"
        ]
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • 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

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

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/global/instanceTemplates"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
  • MACHINE_TYPE:TPU VM のマシンタイプ (例: ct6e-standard-8t)。
  • DURATION: TPU VM の最大実行時間。 REST の場合は、秒数を表す数字 に「s」を付けた文字列として指定します(例: 1 時間の場合は 3600s、7 日の場合は 604800s)。
  • IMAGE_FAMILY:TPU VM の OS イメージ ファミリー 。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
  • IMAGE_PROJECT: OS イメージを含むプロジェクト。 TPU イメージの場合、これは ubuntu-os-accelerator-images です。

MIG を作成する

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

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --size=MIG_SIZE \
    --template=INSTANCE_TEMPLATE_URL \
    --zone=ZONE

REST

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

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

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

単一ホスト TPU スライスを含むリージョン MIG を作成するには、次のコマンドを使用します。

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --size=MIG_SIZE \
    --template=INSTANCE_TEMPLATE_URL \
    --region=REGION \
    --target-distribution-shape=ANY_SINGLE_ZONE \
    --instance-redistribution-type=none

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": MIG_SIZE,
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "distributionPolicy": {
      "targetShape": "ANY_SINGLE_ZONE"
    },
    "updatePolicy": {
      "instanceRedistributionType": "NONE"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • 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 をプロビジョニングするリージョン

MIG でカスタム名を使用して VM を作成する

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

gcloud

create-instance コマンド を使用してカスタム名で VM を作成し、--instance フラグを指定します。複数の VM を作成するには、VM ごとにコマンドを繰り返します。それ以外の場合は、REST API メソッドを使用して、1 つのリクエストで複数の VM を指定します。

  • ゾーン MIG の場合は、次のコマンドを使用します。

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --zone=ZONE \
        --instance=INSTANCE_NAME
    
  • リージョン MIG の場合は、次のコマンドを使用します。

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --region=REGION \
        --instance=INSTANCE_NAME
    

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

  • MIG_NAME: MIG の名前。
  • ZONE: MIG のゾーン
  • REGION: MIG のリージョン
  • INSTANCE_NAME: 指定した MIG に追加する VM の名前。

REST

次のいずれかの 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 の名前 。

次のステップ