使用 Compute Engine 建立 TPU Flex-start VM
TPU 彈性啟動型 VM 採用 Dynamic Workload Scheduler,可讓您靈活且經濟實惠地存取 TPU 資源,執行 AI 工作負載最多 7 天,不需長期預留。要求 TPU Flex-start VM 時,要求會保留在佇列中,直到有可用容量為止。佈建完成後,TPU VM 會在指定時間內運作。
TPU 彈性啟動 VM 非常適合用於快速實驗、小規模測試、動態佈建 TPU 以處理推論工作負載、微調模型,以及執行時間少於 7 天的工作負載。如要進一步瞭解其他 TPU 用量方案,請參閱 Cloud TPU 用量方案。
您隨時可以刪除 TPU 資源,停止計費。如要進一步瞭解 TPU 定價,請參閱 Cloud TPU 定價。
限制
TPU Flex-start VM 有下列限制:
- 您可以要求 TPU 彈性啟動 VM,最長可達 7 天。
- 您可以要求下列 Cloud TPU 版本和可用區:
使用 TPU 的 MIG 有下列限制:
生命週期作業:您無法停止、啟動、繼續或暫停 TPU 執行個體。如要變更需要重新啟動的設定,或停止產生費用,請刪除執行個體。
區域性 MIG 可用區分配:您必須將目標分配型態設為
ANY_SINGLE_ZONE。MIG 中的設定更新:
- 由於定義的加速器拓撲,您無法更新構成多主機 TPU 節點的 MIG。
- 如要更新構成單一主機 TPU 節點的 MIG,請使用自動或選擇性方法。
不過,單一主機 TPU 節點的更新作業不支援重新啟動 (
RESTART) 動作。如果必須重新啟動,但允許的最大干擾動作是取代 (REPLACE),則更新程式會取代執行個體;否則,更新嘗試會失敗並顯示錯誤訊息。
如果 MIG 構成多主機 TPU 配量,也會受到下列限制:
目標大小政策:您必須將目標大小政策模式設為
BULK。模式設定後即無法變更。目標大小:在大量模式中,您可以將目標大小設為
0,或是形成加速器拓撲所需的執行個體數量。工作負載政策:您必須指定定義加速器拓撲的工作負載政策。設定工作負載政策後,就無法變更或移除 MIG 的政策。
不支援的功能:使用 TPU 的 MIG 不支援下列功能:
事前準備
要求 TPU Flex-start VM 前,請務必完成下列事項:
- 安裝 Google Cloud CLI
- 建立 Google Cloud 專案
- 啟用 Compute Engine API (
compute.googleapis.com) - 確認您具備必要權限:
roles/compute.instanceAdmin.v1roles/iam.serviceAccountUser
詳情請參閱「設定 TPU 專案」。 Google Cloud
請確認您有足夠的先占配額,可以使用 TPU 彈性啟動型 VM。如果工作負載需要的核心數超過目前分配到的數量,可以申請提高配額。詳情請參閱「Cloud TPU 配額」。
使用 MIG 建立 TPU 彈性啟動 VM
如要使用 TPU 彈性啟動 VM,請建立代管執行個體群組 (MIG),並採用特定的執行個體範本設定。
如需建立彈性啟動 VM 的一般操作說明,請參閱「建立彈性啟動 VM」。
建立具有多主機配量的 TPU 彈性啟動 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:專案的 ID。 Google Cloud
- 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,請以秒數指定這個值 (例如
3600代表 1 小時,604800代表 7 天)。 - 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:專案的 ID。 Google Cloud
- 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:專案的 ID。 Google Cloud
- MIG_NAME:MIG 的名稱。
- ZONE:MIG 的可用區。
INSTANCE_TEMPLATE_URL:您要用於在 MIG 中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的ID 或名稱。請指定下列其中一個值:- 如果是區域執行個體範本:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 全域執行個體範本:
INSTANCE_TEMPLATE_ID
- 如果是區域執行個體範本:
- SIZE:要建立的執行個體數量。
- WORKLOAD_POLICY_URL:您要用來在 MIG 中建立執行個體的 workload 政策網址。例如:
projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME。
使用單一主機配量建立 TPU 彈性啟動 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:專案的 ID。 Google Cloud
- 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,請以秒數指定這個值 (例如
3600代表 1 小時,604800代表 7 天)。 - 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:專案的 ID。 Google Cloud
- WORKLOAD_POLICY_NAME:Workload 政策的名稱。
- 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:專案的 ID。 Google Cloud
- MIG_NAME:MIG 的名稱。
- ZONE:MIG 的可用區。
INSTANCE_TEMPLATE_URL:您要用於在 MIG 中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的ID 或名稱。請指定下列其中一個值:- 如果是區域執行個體範本:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 全域執行個體範本:
INSTANCE_TEMPLATE_ID
- 如果是區域執行個體範本:
- SIZE:要建立的執行個體數量。
- WORKLOAD_POLICY_URL:您要用來在 MIG 中建立執行個體的 workload 政策網址。例如:
projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME。