建立含有多主機 Cloud TPU 配量的 MIG
本文說明如何使用多主機 TPU 節點建立代管執行個體群組 (MIG)。
必要條件
完成下列必要條件:
- 如「為 TPU 設定專案」一文所述,為 TPU 建立專案。
- 如「規劃資源」一文所述,判斷 TPU 需求。
建立含有多主機 TPU 配量的 MIG
- 建立執行個體範本。
- 建立工作負載政策。
- 建立 MIG。
建立執行個體範本
建立執行個體範本的指令取決於您使用的消耗選項:隨選、Spot、取決於預留項目或彈性啟動。如要進一步瞭解用量方案,請參閱「規劃 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",
"scheduling": {
"onHostMaintenance": "TERMINATE"
},
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
替換下列預留位置:
PROJECT_ID:專案的 ID。 Google CloudINSTANCE_TEMPLATE_NAME:執行個體範本的名稱。MACHINE_TYPE:TPU VM 的機型,例如ct6e-standard-8t。IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 OS 版本,請使用--image旗標。如要進一步瞭解 OS 映像檔,請參閱「OS 映像檔」。IMAGE_PROJECT:包含 OS 映像檔的專案。如果是 TPU 映像檔,則為ubuntu-os-accelerator-images。
建立 TPU Spot VM 的執行個體範本
以下指令會使用 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:專案的 ID。 Google CloudINSTANCE_TEMPLATE_NAME:執行個體範本的名稱。MACHINE_TYPE:TPU VM 的機型,例如ct6e-standard-8t。IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 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:專案的 ID。 Google CloudINSTANCE_TEMPLATE_NAME:執行個體範本的名稱。MACHINE_TYPE:TPU VM 的機型,例如ct6e-standard-8t。RESERVATION_NAME:要使用的特定預訂項目名稱。IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 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 \
--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:專案的 ID。 Google CloudINSTANCE_TEMPLATE_NAME:執行個體範本的名稱。MACHINE_TYPE:TPU VM 的機型,例如ct6e-standard-8t。DURATION:TPU VM 的執行時間上限。如果是 REST,請以秒數指定這個值 (例如3600代表 1 小時,604800代表 7 天)。IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 OS 版本,請使用--image旗標。如要進一步瞭解 OS 映像檔,請參閱「OS 映像檔」。IMAGE_PROJECT:包含 OS 映像檔的專案。如果是 TPU 映像檔,則為ubuntu-os-accelerator-images。
建立工作負載政策
您必須使用 accelerator-topology 參數 (例如 4x4、8x8 或 4x4x4) 建立工作負載政策。加速器拓撲會將 MIG 設定為將執行個體視為單一互連的切片。
下列指令會為特定拓撲建立工作負載政策:
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:專案的 ID。 Google CloudWORKLOAD_POLICY_NAME:工作負載政策的名稱。TOPOLOGY:TPU VM 的拓撲,例如4x4x8。如要進一步瞭解各個 TPU 版本的拓撲,請參閱「系統架構」。REGION:工作負載政策的區域。
建立 MIG
如要建立包含多主機 TPU 配量的可用區 MIG,請使用下列指令:
gcloud
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
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": MIG_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:專案的 ID。 Google CloudMIG_NAME:MIG 的名稱。MIG_SIZE:MIG 的大小。INSTANCE_TEMPLATE_URL:您要用於在 MIG 中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的ID 或名稱。請指定下列其中一個值:- 如果是區域執行個體範本:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 全域執行個體範本:
INSTANCE_TEMPLATE_ID
- 如果是區域執行個體範本:
ZONE:MIG 的區域。WORKLOAD_POLICY_URL:您要用來在 MIG 中建立執行個體的執行個體政策網址。例如:projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME。
如要建立包含多主機 TPU 配量的區域性 MIG,請使用下列指令:
gcloud
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
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": MIG_SIZE,
"targetSizePolicy": {
"mode": "BULK"
},
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"instanceLifecyclePolicy": {
"defaultActionOnFailure": "DO_NOTHING"
},
"resourcePolicies": {
"workloadPolicy": "WORKLOAD_POLICY_URL"
},
"distributionPolicy": {
"targetShape": "ANY_SINGLE_ZONE"
},
"updatePolicy": {
"instanceRedistributionType": "NONE"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers"
替換下列預留位置:
PROJECT_ID:專案的 ID。 Google CloudMIG_NAME:MIG 的名稱。MIG_SIZE:MIG 中的 VM 數量。INSTANCE_TEMPLATE_URL:您要用於在 MIG 中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的ID 或名稱。請指定下列其中一個值:- 如果是區域執行個體範本:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 全域執行個體範本:
INSTANCE_TEMPLATE_ID
- 如果是區域執行個體範本:
ZONE:MIG 的區域。REGION:MIG 的區域。WORKLOAD_POLICY_URL:您要用來在 MIG 中建立執行個體的執行個體政策網址。例如:projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME。
在 MIG 中使用自訂名稱建立 VM
您可以為每個 VM 指定自訂名稱,在 MIG 中建立 VM。這有助於偵錯,並確保執行個體是以特定順序建立。
含有多主機 TPU 配量的 MIG 會使用目標大小政策的大量模式。在這種 MIG 中使用自訂名稱建立 VM 時,適用下列事項:
您必須先驗證 MIG 中沒有 VM,如果 MIG 含有 VM,您必須調整 MIG 大小,將目標大小設為
0,或是建立另一個 MIG,並將目標大小設為0。您只能使用 REST API 建立自訂名稱的 VM。
使用下列其中一種 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 上執行機器學習工作負載,例如在 TPU 上使用 vLLM 提供 Qwen2-72B-Instruct 服務。