本指南說明如何使用日曆模式的預約功能,最佳化 Tensor 處理單元 (TPU) 的佈建作業。日曆模式的未來預留項目是內建的日曆顧問和建議工具,可協助您尋找 TPU 容量並提前規劃。您可以要求特定開始時間和時長 (1 到 90 天) 的容量,推薦工具會提供建議日期。
本指南適用於機器學習 (ML) 工程師、平台管理員和操作員,以及有興趣使用 Kubernetes 容器自動化調度管理功能執行批次工作負載的資料和 AI 專家。如要進一步瞭解 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。
詳情請參閱「日曆模式中的未來預留項目簡介」。
用途
在日曆模式下預訂未來資源,最適合有排程、短期且需求量高的工作負載,例如訓練或批次推論模型,這類工作負載需要在要求開始時間提供高可用性。
如果工作負載需要視情況動態佈建資源,且最多 7 天內不需要長期預訂或複雜的配額管理,建議使用彈性啟動消耗量選項。詳情請參閱「關於使用彈性啟動模式佈建 GPU 和 TPU」。
事前準備
開始之前,請確認您已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文中的指令。
- 請確認你已備妥下列任一項目:
- 執行 1.28.3-gke.1098000 以上版本的現有標準叢集。
- 執行 1.30.3-gke.1451000 以上版本的現有 Autopilot 叢集。
在日曆模式中要求 TPU 的未來預留項目
如要以日曆模式預留 TPU,請按照下列步驟操作:
- 建立 VM 時,請確保您有足夠的配額,可供不屬於預留資源的任何資源使用,例如磁碟或 IP 位址。日曆模式的預訂要求不需要 Compute Engine 配額。
- 完成「在日曆模式中建立要求」一文中的步驟。這些步驟包括:
- 查看 TPU 未來適用資格。
- 在日曆模式中,為 TPU 建立及提交未來預留項目要求。
- 等待 Google Cloud 核准要求。
- 建立使用預訂項目的 TPU 節點集區。
建立節點集區
本節僅適用於 Standard 叢集,因為 Autopilot 模式會根據工作負載自動建立節點。
建立單一主機或多主機 TPU 節點集區時,可以使用保留項目。
建立單一主機 TPU 節點集區
您可以使用 Google Cloud CLI 建立單一主機 TPU 節點集區。
gcloud container node-pools create NODE_POOL_NAME \
--location=CONTROL_PLANE_LOCATION \
--cluster=CLUSTER_NAME \
--node-locations=NODE_ZONES \
--machine-type=MACHINE_TYPE \
--reservation-affinity=specific \ This is required
--reservation=RESERVATION
更改下列內容:
NODE_POOL_NAME:新節點集區的名稱。CONTROL_PLANE_LOCATION:可用區名稱,取決於您要使用的 TPU 版本。如要找出可用位置,請參閱「GKE 中的 TPU 可用性」。CLUSTER_NAME:叢集名稱。NODE_ZONES:以半形逗號分隔的清單,列出 GKE 建立節點集區的一或多個區域。MACHINE_TYPE:節點使用的機器類型。如要進一步瞭解與 TPU 相容的機器類型,請參閱「選擇 TPU 版本」一文中的表格。RESERVATION:要使用的日曆預約名稱。
如要查看可指定的所有旗標完整清單,請參閱 gcloud container clusters create 參考資料。
使用日曆預留項目建立節點集區後,您就可以像使用其他 TPU 節點集區一樣部署工作負載。在日曆模式中,使用未來預留項目的方式與其他類型的預留項目相同。詳情請參閱「耗用可用區保留資源」。
建立多主機 TPU 配量節點集區
建立多主機 TPU 配量節點集區的步驟,取決於您使用的是 Ironwood (TPU7x) 還是較早的 TPU 版本。Ironwood (TPU7x)
您可以使用 Google Cloud CLI 或 Terraform,在 Ironwood (TPU7x) 版本中建立多主機 TPU 節點集區:
gcloud
如要使用 Ironwood (TPU7x) 建立多主機 TPU 配量節點集區,請先建立工作負載政策。
建立工作負載政策:
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \ --type=HIGH_THROUGHPUT \ --accelerator-topology=TPU_TOPOLOGY \ --project=PROJECT_ID \ --region=REGION更改下列內容:
WORKLOAD_POLICY_NAME:工作負載政策的名稱。TPU_TOPOLOGY:TPU Ironwood (TPU7x) 拓撲。例如,2x2x2。如要查看所有支援的 Ironwood (TPU7x) 拓撲,請參閱拓撲部分。PROJECT_ID:您的 Google Cloud 專案 ID。REGION:工作負載政策的區域。工作負載政策是區域資源,可在共用相同拓撲的節點集區中重複使用。
使用工作負載政策建立節點集區:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=us-central1 \ --node-locations=us-central1-c \ --machine-type=tpu7x-standard-4t \ --reservation-affinity=specific \ --reservation=FUTURE_RESERVATION_NAME \ --placement-policy=WORKLOAD_POLICY更改下列內容:
NODE_POOL_NAME:新節點集區的名稱。WORKLOAD_POLICY:您建立的 Workload 政策名稱。FUTURE_RESERVATION_NAME:未來預留項目的名稱。
這個指令會建立名為 NODE_POOL_NAME 的節點集區,並具備下列特徵:
--machine-type=tpu7x-standard-4t會指定 Ironwood (TPU7x) 機型。
Terraform
- 請確認您使用的是
google4.84.0 以上版本。 建立工作負載政策:
resource "google_compute_resource_policy" { name = "WORKLOAD_POLICY_NAME" region = CLUSTER_LOCATION workload_policy { type = "HIGH_THROUGHPUT" accelerator_topology = "TPU_TOPOLOGY" } }更改下列內容:
WORKLOAD_POLICY_NAME:工作負載政策的名稱。CLUSTER_LOCATION:叢集的運算位置。建議您使用區域叢集,提高 Kubernetes 控制層的可靠性。您也可以使用區域叢集。 詳情請參閱「選取 TPU 版本和拓撲」。TPU_TOPOLOGY:TPU Ironwood (TPU7x) 拓撲。例如,2x2x2。如要查看所有支援的 Ironwood (TPU7x) 拓撲,請參閱「規劃 TPU」。
如要進一步瞭解
google_compute_resource_policy參考資料,請參閱 Terraform Provider。在 Terraform 設定中,新增下列區塊:
resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" { provider = google project = PROJECT_ID cluster = CLUSTER_NAME name = POOL_NAME location = CLUSTER_LOCATION node_locations = [NODE_ZONES] initial_node_count = NUM_NODES autoscaling { max_node_count = MAX_NODES location_policy = "ANY" } node_config { machine_type = MACHINE_TYPE reservation_affinity { consume_reservation_type = "SPECIFIC_RESERVATION" key = "compute.googleapis.com/reservation-name" values = [RESERVATION_LABEL_VALUES] } flex_start = false } placement_policy { policy_name = WORKLOAD_POLICY_NAME } }更改下列內容:
NODE_POOL_RESOURCE_NAME:Terraform 範本中的節點集區資源名稱。PROJECT_ID:您的專案 ID。CLUSTER_NAME:要新增節點集區的現有叢集名稱。POOL_NAME:要建立的節點集區名稱。NODE_ZONES:以半形逗號分隔的清單,列出 GKE 建立節點集區的一或多個區域。NUM_NODES:節點集區中的節點數量。這個值必須是零,或是 TPU 晶片數量除以四的結果,因為在多主機 TPU 配量中,每個 TPU 配量節點都有四個晶片。舉例來說,如果TPU_TOPOLOGY是4x8,則代表有 32 個晶片,因此NUM_NODES必須是 8。如要進一步瞭解 TPU 拓撲,請參閱「選擇 TPU 版本」一文中的表格。TPU_TOPOLOGY:這表示所選 TPU 配量的實體拓撲。拓撲格式取決於所用 TPU 版本。如要進一步瞭解 TPU 拓撲,請參閱「選擇拓撲」一文中的表格。
您也可以視需要使用下列變數:
RESERVATION_NAME:如果您使用 TPU 預留項目,請提供建立節點集區時要使用的預留項目資源標籤清單。如要進一步瞭解如何填寫reservation_affinity欄位中的RESERVATION_LABEL_VALUES,請參閱 Terraform 供應商。autoscaling:建立啟用自動調度資源功能的節點集區。當 GKE 擴大多主機 TPU 配量節點集區時,會不可分割地將節點集區從零擴大到最大大小。MAX_NODES:節點集區的大小上限。這個值必須等於TPU_TOPOLOGY({A}x{B}x{C}) 中定義的值的乘積,再除以每個 VM 中的晶片數。舉例來說,如果TPU_TOPOLOGY為2x2x2,則產品為 8。由於tpu7x-standard-4t中的每個 VM 都有 4 個晶片,因此節點數為 2。
spot:將使用 Spot VM 做為 TPU 配量節點的節點集區。 節點集區建立後,這項設定就無法再變更。詳情請參閱「Spot VM」。flex_start:將使用彈性啟動消耗選項的節點集區。如果已啟用spot,這項設定就無法設為true。
其他 TPU 版本
您可以使用 Google Cloud CLI、Terraform 或 Google Cloud 控制台,在 v3、v4、v5p、v5e 和 Trillium (v6e) 版本中建立多主機 TPU 節點集區。
gcloud
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--node-locations=NODE_ZONES \
--machine-type=MACHINE_TYPE \
--tpu-topology=TPU_TOPOLOGY \
--reservation-affinity=specific \
--reservation=FUTURE_RESERVATION_NAME
更改下列內容:
NODE_POOL_NAME:新節點集區的名稱。CLUSTER_NAME:叢集名稱。CONTROL_PLANE_LOCATION:根據您要使用的 TPU 版本,指定區域名稱。如要找出可用位置,請參閱「GKE 中的 TPU 可用性」。NODE_ZONES:以半形逗號分隔的清單,列出 GKE 建立節點集區的一或多個區域。MACHINE_TYPE:節點使用的機器類型。如要進一步瞭解與 TPU 相容的機器類型,請參閱「選擇 TPU 版本」一文中的表格。TPU_TOPOLOGY:TPU 拓撲。 例如,2x2x2。如要查看所有支援的 TPU 拓撲,請參閱拓撲部分。FUTURE_RESERVATION_NAME:未來預留項目的名稱。
Terraform
- 請確認您使用的是
google4.84.0 以上版本。 在 Terraform 設定中新增下列區塊:
resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" { provider = google project = PROJECT_ID cluster = CLUSTER_NAME name = POOL_NAME location = CLUSTER_LOCATION node_locations = [NODE_ZONES] initial_node_count = NUM_NODES autoscaling { max_node_count = MAX_NODES location_policy = "ANY" } node_config { machine_type = MACHINE_TYPE reservation_affinity { consume_reservation_type = "SPECIFIC_RESERVATION" key = "compute.googleapis.com/reservation-name" values = [RESERVATION_LABEL_VALUES] } flex_start = false } placement_policy { type = "COMPACT" tpu_topology = TPU_TOPOLOGY } }更改下列內容:
NODE_POOL_RESOURCE_NAME:Terraform 範本中的節點集區資源名稱。PROJECT_ID:您的專案 ID。CLUSTER_NAME:要新增節點集區的現有叢集名稱。POOL_NAME:要建立的節點集區名稱。CLUSTER_LOCATION:叢集的運算位置。建議您使用區域叢集,提高 Kubernetes 控制層的可靠性。您也可以使用區域叢集。 詳情請參閱「選取 TPU 版本和拓撲」。NODE_ZONES:以半形逗號分隔的清單,列出 GKE 建立節點集區的一或多個區域。NUM_NODES:節點集區中的節點數量。這個值必須是零,或是 TPU 晶片數量除以四的結果,因為在多主機 TPU 配量中,每個 TPU 配量節點都有 4 個晶片。舉例來說,如果TPU_TOPOLOGY是4x8,則代表有 32 個晶片,因此NUM_NODES必須是 8。如要進一步瞭解 TPU 拓撲,請參閱「選擇 TPU 版本」一文中的表格。TPU_TOPOLOGY:這表示 TPU 配量的實體拓撲。拓撲格式取決於所用 TPU 版本。如要進一步瞭解 TPU 拓撲,請參閱「選擇拓撲」一文中的表格。
您也可以視需要使用下列變數:
RESERVATION_NAME:如果您使用 TPU 預留,這是建立節點集區時要使用的預留資源標籤清單。如要進一步瞭解如何填寫reservation_affinity欄位中的RESERVATION_LABEL_VALUES,請參閱 Terraform 供應商。autoscaling:建立啟用自動調度資源功能的節點集區。當 GKE 擴大多主機 TPU 配量節點集區時,會不可分割地將節點集區從零擴大到最大大小。MAX_NODES:節點集區的大小上限。這個值必須等於TPU_TOPOLOGY({A}x{B}x{C}) 中定義的值的乘積,除以每個 VM 中的晶片數量。
spot:允許節點集區將 Spot VM 用於 TPU 配量節點。節點集區建立後即無法變更這項設定。詳情請參閱「Spot VM」。flex_start:將節點集區設為使用彈性啟動消耗選項。如果已啟用spot,則無法設為true。
控制台
如要建立具有 TPU 的節點集區:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下您要修改的叢集名稱。
按一下 add_box「Add node pool」(新增節點集區)。
在「節點集區詳細資料」部分中,勾選「指定節點位置」方塊。
根據要使用的 TPU 版本選取區域名稱。如要找出可用位置,請參閱「GKE 中的 TPU 可用性」。
按一下導覽窗格中的「Nodes」(節點)。
在「機器設定」專區中,選取「TPU」。
在「系列」下拉式選單中,選取下列其中一個選項:
- CT3:TPU v3,單一主機裝置
- CT3P:TPU v3,多主機 Pod 配量
- CT4P:TPU v4
- CT5LP:TPU v5e
- CT5P:TPU v5p
- CT6E:TPU Trillium (v6e)
在「Machine type」(機器類型) 下拉式選單中,選取要用於節點的機器名稱。請參閱「選擇 TPU 版本」表格,瞭解如何定義機型和 TPU 拓撲,建立多主機 TPU 配量節點集區。
在「TPU Topology」(TPU 拓撲) 下拉式選單中,選取 TPU 配量的實體拓撲。
在「需要變更」對話方塊中,按一下「進行變更」。
確認「開機磁碟類型」為「標準永久磁碟」或「SSD 永久磁碟」。
或者,您也可以勾選「啟用 Spot VM 上的節點」核取方塊,為節點集區中的節點使用 Spot VM。
點選「建立」。
使用日曆預留項目建立節點集區後,您就可以像使用其他 TPU 節點集區一樣部署工作負載。在日曆模式中,使用未來預留項目的方式與其他類型的預留項目相同。詳情請參閱「耗用可用區保留資源」。
後續步驟
試用生成式 AI 模型的 GKE 部署範例,這些模型會使用您預留的 TPU 資源:
在 GKE AI Labs 中探索實驗性範例,瞭解如何運用 GKE 加速 AI/機器學習計畫。