使用单主机 Cloud TPU 切片创建 MIG
本文档介绍如何使用多个独立的单主机 TPU 切片创建代管式实例组 (MIG)。
前提条件
满足以下前提条件:
- 按照为 TPU 设置项目中的说明,为 TPU 创建项目。
- 按照规划资源中的说明,确定您的 TPU 要求。
使用多个单主机 TPU 切片创建 MIG
如需在 MIG 中创建多个独立的 TPU 虚拟机,请执行以下操作:
- 创建一个实例模板。
- 创建 MIG。
创建实例模板
实例模板配置因您使用的使用选项而异:按需、竞价型、预留或灵活启动。如需详细了解 使用选项,请参阅 规划 TPU 资源 。
为按需 TPU 虚拟机创建实例模板
以下命令会创建一个使用按需使用选项的实例模板:
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 虚拟机的机器类型(例如ct6e-standard-8t)。IMAGE_FAMILY:TPU 虚拟机的 操作系统映像系列 。如需安装特定操作系统版本,请使用--image标志。如需详细了解操作系统映像,请参阅操作系统映像。IMAGE_PROJECT:包含操作系统映像的项目。 对于 TPU 映像,此值为ubuntu-os-accelerator-images。
为 TPU Spot 虚拟机创建实例模板
以下命令会创建一个使用竞价型使用选项的实例模板:
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 虚拟机的机器类型(例如ct6e-standard-8t)。IMAGE_FAMILY:TPU 虚拟机的 操作系统映像系列 。如需安装特定操作系统版本,请使用--image标志。如需详细了解操作系统映像,请参阅操作系统映像。IMAGE_PROJECT:包含操作系统映像的项目。 对于 TPU 映像,此值为ubuntu-os-accelerator-images。
为 TPU 受预留约束的虚拟机创建实例模板
以下命令会创建一个使用受预留约束的使用选项的实例模板:
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 虚拟机的机器类型 (例如ct6e-standard-8t)。RESERVATION_NAME:您要使用的特定预留的名称。IMAGE_FAMILY:TPU 虚拟机的 操作系统映像系列 。如需安装特定操作系统版本,请使用--image标志。如需详细了解操作系统映像,请参阅操作系统映像。IMAGE_PROJECT:包含操作系统映像的项目。 对于 TPU 映像,此值为ubuntu-os-accelerator-images。
为 TPU 灵活启动型虚拟机创建实例模板
以下命令会创建一个使用灵活启动使用选项的实例模板:
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 虚拟机的机器类型 (例如ct6e-standard-8t)。DURATION:TPU 虚拟机的最长运行时间。 对于 REST,请将其指定为包含秒数 后跟“s”的字符串(例如,1 小时为3600s,7 天为604800s)。IMAGE_FAMILY:TPU 虚拟机的 操作系统映像系列 。如需安装特定操作系统版本,请使用--image标志。如需详细了解操作系统映像,请参阅操作系统映像。IMAGE_PROJECT:包含操作系统映像的项目。 对于 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 中创建实例的实例模板的网址。网址可以包含实例模板的 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 中的虚拟机数量。INSTANCE_TEMPLATE_URL:您要用于在 MIG 中创建实例的实例模板的网址。网址可以包含实例模板的 ID 或名称。请指定以下某个值:- 对于区域级实例模板:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 对于全球实例模板:
INSTANCE_TEMPLATE_ID
- 对于区域级实例模板:
ZONE:您希望预配 MIG 的可用区 。REGION:您希望预配 MIG 的区域 。
在 MIG 中创建具有自定义名称的虚拟机
您可以在 MIG 中创建虚拟机,并为每个虚拟机指定自定义名称。这对于调试和确保实例按特定顺序创建非常有用。
gcloud
使用
create-instance命令
创建具有自定义名称的虚拟机,并指定 --instance 标志。如需创建多个虚拟机,请为每个虚拟机重复该命令。否则,请使用 REST API 方法在单个请求中指定多个虚拟机。
对于可用区级 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 方法之一创建具有自定义名称的虚拟机:
对于可用区级 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 虚拟机和 MIG。
- 了解如何使用多主机 Cloud TPU 切片创建 MIG。
- 了解如何管理 TPU 虚拟机。
- 了解 GKE 中的 TPU。
- 了解如何在 TPU 上运行机器学习工作负载,例如在 TPU 上使用 vLLM 部署 Qwen2-72B-Instruct。