単一ホスト Cloud TPU スライスを使用して MIG を作成する
このドキュメントでは、複数の独立した単一ホスト TPU スライスを使用してマネージド インスタンス グループ(MIG)を作成する方法について説明します。
前提条件
次の前提条件を満たしていることを確認してください。
- TPU のプロジェクトを設定するの説明に従って、TPU のプロジェクトを作成します。
- リソースを計画するの説明に従って、TPU の要件を決定します。
複数の単一ホスト TPU スライスを使用して MIG を作成する
MIG に複数の独立した TPU VM を作成するには:
- インスタンス テンプレートを作成します。
- 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
各プレースホルダを次のように置き換えます。
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" }, ... ] }
各プレースホルダを次のように置き換えます。
次のステップ
- TPU VM と MIG について学習する。
- マルチホスト Cloud TPU スライスを使用して MIG を作成する方法を学習する。
- TPU VM を管理する方法を学習する。
- GKE の TPU について学習する。
- TPU で ML ワークロードを実行する方法を学習する(例: TPU で vLLM を使用して Qwen2-72B-Instruct をサービングする)。