本頁說明如何在 Google Kubernetes Engine (GKE) 中規劃 Tensor 處理單元 (TPU) 用量,以降低 TPU 設定錯誤、無法使用錯誤或超出配額中斷的風險。
在 GKE 中使用 TPU 之前,請務必先熟悉 GKE 中的 TPU 定義和術語。
規劃 TPU 設定
如要在 GKE 叢集中使用 TPU,您必須規劃 TPU 的設定。建議您按照下列步驟操作:
選擇 GKE 作業模式:在 GKE Autopilot 或 Standard 叢集中的 TPU 上執行工作負載。
最佳做法: 使用 Autopilot 叢集,享受全代管 Kubernetes 體驗。
選擇 TPU 版本:不同 TPU 類型的功能各異,例如價格效能比、訓練輸送量和服務延遲時間。TPU 類型會影響可用的 CPU 和記憶體容量。
驗證 TPU 可用性:TPU 僅適用於特定 Google Cloud地區。如要在 GKE 工作負載中使用 TPU 類型,叢集必須位於該類型支援的區域。
選擇 TPU 拓撲:TPU 配量中 TPU 的實體排列方式。選取符合模型平行處理需求的拓撲。
請使用本頁面的參考表格,判斷節點集區是單一主機還是多主機 TPU 節點。
選擇 GKE 作業模式
您可以在叢集的可用 GKE 作業模式中使用 TPU:
- Autopilot 模式 (建議):GKE 會管理底層基礎架構,例如節點設定、自動調度資源、自動升級、基準安全性設定和基準網路設定。在 Autopilot 中,您可以選擇 TPU 類型和拓撲,然後在 Kubernetes 資訊清單中指定這些項目。GKE 會管理節點的佈建作業 (包括 TPU),並排程工作負載。
- 標準模式:您需要管理底層基礎架構,包括設定個別節點。
如要為工作負載選擇最合適的 GKE 作業模式,請參閱「選擇 GKE 作業模式」。
選擇 TPU 版本
TPU 節點中的 VM 具有下列技術特性。
Autopilot
TPU 版本 | 機型 | vCPU 數量 | 記憶體 (GiB) | NUMA 節點數量 | TPU 配量節點中的 TPU 晶片數量上限 |
---|---|---|---|---|---|
TPU Trillium (v6e) | tpu-v6e-slice |
44 到 180 | 176 至 1440 | 1 至 2 | 256 |
TPU v5p |
tpu-v5p-slice |
208 | 448 | 2 | 6,144 |
TPU v5e |
tpu-v5-lite-podslice |
24 到 224 | 48 至 384 | 1 | 256 |
TPU v4 |
tpu-v4-podslice |
240 | 407 | 2 | 4,096 |
TPU v3 (僅限單一主機) |
tpu-v3-device |
96 | 340 | 2 | 8 |
TPU v3 |
tpu-v3-slice |
48 | 340 | 1 | 256 |
標準
TPU 版本 | 機型 | vCPU 數量 | 記憶體 (GiB) | NUMA 節點數量 | 遭到搶占的機率 |
---|---|---|---|---|---|
TPU Trillium (v6e) | ct6e-standard-1t |
44 | 448 | 2 | 較高 |
TPU Trillium (v6e) | ct6e-standard-4t |
180 | 720 | 1 | 中 |
TPU Trillium (v6e) | ct6e-standard-8t |
180 | 1440 | 2 | 較低 |
TPU v5p |
ct5p-hightpu-4t |
208 | 448 | 2 | |
TPU v5e |
ct5lp-hightpu-1t |
24 | 48 | 1 | 較高 |
TPU v5e |
ct5lp-hightpu-4t |
112 | 192 | 1 | 中 |
TPU v5e |
ct5lp-hightpu-8t |
224 | 384 | 1 | 低 |
TPU v4 |
ct4p-hightpu-4t |
240 | 407 | 2 | |
TPU v3 (僅限單一主機) |
ct3-hightpu-4t |
96 | 340 | 2 | |
TPU v3 |
ct3p-hightpu-4t |
48 | 340 | 1 |
多主機 ct5lp-
機器類型更適合用於提供大型模型或訓練。多主機 ct5lp-
機器會透過高速連結相互連線。
請參閱 Cloud TPU 定價說明文件中的 TPU 規格和價格,決定要使用的 TPU 設定。
限制
選擇要使用的 TPU 時,請考量下列限制:
- TPU Trillium 提供下列版本:
- 1.31.1-gke.1846000 以上版本的標準叢集。
- 1.31.2-gke.1115000 以上版本的 Autopilot 叢集。
- TPU Trillium 不支援在
ct6e-standard-8t
上將 SMT 設為2
。 - GKE 費用分配和用量計算功能不會納入預留 TPU v4 的用量或費用資料。
- 如要在 GKE 叢集上使用 TPU v5p 自動調整功能,控制層至少須為 1.29.2-gke.1035000 或 1.28.7-gke.1020000 版。
- 如為容量預留項目,請使用特定預留項目。
- 單一 TPU VM 最多可執行 256 個 Pod。
- GKE 費用分配和用量計算功能不會納入任何 TPU 的用量或費用資料。
- 如果 TPU 節點集區的擴充作業等待時間超過 10 小時,叢集自動配置器就會取消作業。資源可用時,叢集自動配置器會重試這類擴充作業。如果您未使用預訂功能,這項行為可能會降低 TPU 取得率。
- 不支援 Ubuntu 節點。
- TPU 節點架構已淘汰。TPU v3 是唯一仍支援 GKE 中 TPU 節點架構的 TPU 版本。
驗證 GKE 中的 TPU 可用性
TPU 僅於特定 Google Cloud 地區提供。如要在 GKE 叢集中使用 TPU 類型,叢集必須位於該類型支援的區域。
Autopilot
TPU 版本 |
cloud.google.com/gke-tpu-accelerator
|
最低 GKE 版本 | 可用性 | 可用區 |
---|---|---|---|---|
TPU Trillium (v6e) |
tpu-v6e-slice
|
1.31.2-gke.1384000 | 正式發布版 |
|
TPU v5e |
tpu-v5-lite-podslice
|
1.27.2-gke.2100 | 正式發布版 |
|
TPU v5p |
tpu-v5p-slice
|
1.28.3-gke.1024000 | 正式發布版 |
|
TPU v4 |
tpu-v4-podslice
|
1.26.1-gke.1500 | 正式發布版 |
|
TPU v3 |
tpu-v3-slice
|
1.31.1-gke.1146000 | 正式發布版 |
|
TPU v3 |
tpu-v3-device
|
1.31.0-gke.1500 | 正式發布版 |
|
標準
TPU 版本 | 機器類型開頭為 | 最低 GKE 版本 | 可用性 | 可用區 |
---|---|---|---|---|
TPU Trillium (v6e) |
ct6e- |
1.31.2-gke.1115000 | 正式發布版 |
|
TPU v5e |
ct5lp- |
1.27.2-gke.2100 | 正式發布版 |
|
TPU v5p |
ct5p- |
1.28.3-gke.1024000 | 正式發布版 |
|
TPU v4 |
ct4p- |
1.26.1-gke.1500 | 正式發布版 |
|
TPU v3 |
ct3p- |
1.31.1-gke.1146000 | 正式發布版 |
|
TPU v3 |
ct3- |
1.31.0-gke.1500 | 正式發布版 |
|
- 您可以在特定區域 (
europe-west4-a
、us-east5-b
和us-west4-b
) 中,使用開頭為ct5lp-
的機器類型,建立單一主機 TPU v5e 節點集區。在這些區域中,您可以使用ct5lp-hightpu-4t
,拓撲至少為2x4
或更大。 - 如要在
us-west4
區域中建立單一主機 TPU v5e,請選擇us-west4-a
區域,並使用以ct5lp-
開頭的機器類型,例如ct5lp-hightpu-1t
。
選擇拓撲
決定 TPU 版本後,請選取該 TPU 類型支援的拓撲。拓撲為二維或三維,取決於 TPU 類型。模型的平行處理需求有助於決定拓撲。如要找出切片中的 TPU 晶片數量,請計算拓撲中每個大小的乘積。例如:
2x2x2
是 8 晶片多主機 TPU v4 配量2x2
是 4 晶片的單一主機 TPU v5e 配量
如果特定拓撲同時支援單一主機和多主機 TPU 配量節點,工作負載要求的 TPU 晶片數量會決定主機類型。
舉例來說,TPU v5e (tpu-v5-lite-podslice
) 支援單一和多主機的 2x4
拓撲。如果您:
- 在工作負載中要求 4 個晶片,您會取得具有 4 個 TPU 晶片的多主機節點。
- 在工作負載中要求 8 個晶片,您會取得具有 8 個 TPU 晶片的單一主機節點。
請參閱下表,為您的用途選擇 TPU 機器類型和拓撲:
- 如要進行小規模模型訓練或推論,請使用 TPU v4 或 TPU v5e,並搭配單一主機 TPU 切片節點集區。
- 如要進行大規模模型訓練或推論,請使用 TPU v4 或 TPU v5e,搭配多主機 TPU 配量節點集區。
- 如要進行大規模訓練或推論,請使用 Pathways。Pathways 可讓單一 JAX 用戶端協調多個大型 TPU 配量的工作負載,簡化大規模機器學習運算。詳情請參閱「路徑」。
Autopilot
選擇 TPU 類型和拓撲後,請在工作負載資訊清單中指定這些項目。如需操作說明,請參閱「在 GKE Autopilot 上部署 TPU 工作負載」。
TPU 版本 | 機型 | 節點集區類型 | 技術規格 |
---|---|---|---|
TPU Trillium (v6e) | tpu-v6e-slice |
單一主機 |
|
TPU Trillium (v6e) | tpu-v6e-slice |
單一主機 |
|
TPU Trillium (v6e) | tpu-v6e-slice |
單一主機 |
|
TPU Trillium (v6e) | tpu-v6e-slice |
多主機 |
|
TPU Trillium (v6e) | tpu-v6e-slice |
多主機 |
|
TPU Trillium (v6e) | tpu-v6e-slice |
多主機 |
|
TPU Trillium (v6e) | tpu-v6e-slice |
多主機 |
|
TPU Trillium (v6e) | tpu-v6e-slice |
多主機 |
|
TPU v5p | tpu-v5p-slice |
單一主機 |
|
TPU v5p | tpu-v5p-slice |
多主機 |
|
TPU v5p | tpu-v5p-slice |
多主機 |
|
TPU v5p | tpu-v5p-slice |
多主機 |
|
TPU v5p | tpu-v5p-slice |
多主機 |
|
TPU v5p | tpu-v5p-slice |
多主機 |
|
TPU v5e | tpu-v5-lite-podslice |
單一主機 |
|
TPU v5e | tpu-v5-lite-podslice |
單一主機 |
|
TPU v5e | tpu-v5-lite-podslice |
單一主機 |
|
TPU v5e | tpu-v5-lite-podslice |
多主機 |
|
TPU v5e | tpu-v5-lite-podslice |
多主機 |
|
TPU v5e | tpu-v5-lite-podslice |
多主機 |
|
TPU v5e | tpu-v5-lite-podslice |
多主機 |
|
TPU v5e | tpu-v5-lite-podslice |
多主機 |
|
TPU v5e | tpu-v5-lite-podslice |
多主機 |
|
TPU v5e (僅限單一主機) | tpu-v5-lite-device |
單一主機 |
|
TPU v5e (僅限單一主機) | tpu-v5-lite-device |
單一主機 |
|
TPU v5e (僅限單一主機) | tpu-v5-lite-device |
單一主機 |
|
TPU v4 | tpu-v4-podslice |
單一主機 |
|
TPU v4 | tpu-v4-podslice |
多主機 |
|
TPU v4 | tpu-v4-podslice |
多主機 |
|
TPU v4 | tpu-v4-podslice |
多主機 |
|
TPU v4 | tpu-v4-podslice |
多主機 |
|
TPU v4 | tpu-v4-podslice |
多主機 |
|
TPU v3 | tpu-v3-slice |
多主機 |
|
TPU v3 | tpu-v3-slice |
多主機 |
|
TPU v3 | tpu-v3-slice |
多主機 |
|
TPU v3 | tpu-v3-slice |
多主機 |
|
TPU v3 | tpu-v3-slice |
多主機 |
|
TPU v3 | tpu-v3-device |
單一主機 |
|
-
計算方式為拓撲產品除以四。 ↩
支援超過 64 個晶片的自訂拓撲。 申請條件如下:
- 如果晶片超過 64 個,
{A}
、{B}
和{C}
必須是 4 的倍數 - 最大的拓撲為
16x16x24
- 值必須為
{A}
≤{B}
≤{C}
,例如8x12x16
。
- 如果晶片超過 64 個,
-
不支援自訂拓撲。
標準
選擇 TPU 類型和拓撲後,請在工作負載資訊清單中指定這些項目。如需操作說明,請參閱「在 GKE Standard 上部署 TPU 工作負載」。
TPU 版本 | 機型 | 節點集區類型 | 技術規格 |
---|---|---|---|
TPU Trillium (v6e) | ct6e-standard-1t |
單一主機 |
|
TPU Trillium (v6e) | ct6e-standard-8t |
單一主機 |
|
TPU Trillium (v6e) | ct6e-standard-4t |
單一主機 |
|
TPU Trillium (v6e) | ct6e-standard-4t |
多主機 |
|
TPU Trillium (v6e) | ct6e-standard-4t |
多主機 |
|
TPU Trillium (v6e) | ct6e-standard-4t |
多主機 |
|
TPU Trillium (v6e) | ct6e-standard-4t |
多主機 |
|
TPU Trillium (v6e) | ct6e-standard-4t |
多主機 |
|
TPU Trillium (v6e) | ct6e-standard-4t |
多主機 |
|
TPU v5p | ct5p-hightpu-4t |
單一主機 |
|
TPU v5p | ct5p-hightpu-4t |
多主機 |
|
TPU v5p | ct5p-hightpu-4t |
多主機 |
|
TPU v5p | ct5p-hightpu-4t |
多主機 |
|
TPU v5p | ct5p-hightpu-4t |
多主機 |
|
TPU v5e | ct5lp-hightpu-1t |
單一主機 |
|
TPU v5e | ct5lp-hightpu-4t |
單一主機 |
|
TPU v5e | ct5lp-hightpu-8t |
單一主機 |
|
TPU v5e | ct5lp-hightpu-4t |
多主機 |
|
TPU v5e | ct5lp-hightpu-4t |
多主機 |
|
TPU v5e | ct5lp-hightpu-4t |
多主機 |
|
TPU v5e | ct5lp-hightpu-4t |
多主機 |
|
TPU v5e | ct5lp-hightpu-4t |
多主機 |
|
TPU v5e | ct5p-hightpu-4t |
多主機 |
|
TPU v5e | ct5p-hightpu-4t |
單一主機 |
|
TPU v4 | ct4p-hightpu-4t |
多主機 |
|
TPU v4 | ct4p-hightpu-4t |
多主機 |
|
TPU v4 | ct4p-hightpu-4t |
多主機 |
|
TPU v4 | ct4p-hightpu-4t |
多主機 |
|
TPU v3 | ct3-hightpu-4t |
單一主機 |
|
TPU v3 | ct3p-hightpu-4t |
多主機 |
|
TPU v3 | ct3p-hightpu-4t |
多主機 |
|
TPU v3 | ct3p-hightpu-4t |
多主機 |
|
TPU v3 | ct3p-hightpu-4t |
多主機 |
|
TPU v3 | ct3p-hightpu-4t |
多主機 |
|
TPU v3 | ct3p-hightpu-4t |
多主機 |
|
TPU v3 | ct3p-hightpu-4t |
多主機 |
|
-
計算方式為拓撲產品除以四。 ↩
進階設定
下列各節說明進階 TPU 設定的排程最佳做法。
預訂 TPU
購買承諾時,即可使用 TPU 預留項目。任何 TPU 預訂項目都可搭配 GKE 使用。
建立 TPU 節點集區時,請使用 --reservation
和 --reservation-affinity=specific
標記,以使用預留的 TPU 執行個體。
在 GKE 中自動調度 TPU
GKE 支援 Tensor Processing Unit (TPU),可加快機器學習工作負載的速度。單一主機 TPU 配量節點集區和多主機 TPU 配量節點集區都支援自動調度資源和自動佈建。
在 GKE 叢集上使用 --enable-autoprovisioning
標記時,GKE 會建立或刪除單一主機或多主機 TPU 配量節點集區,並使用符合待處理工作負載需求的 TPU 版本和拓撲。
使用 --enable-autoscaling
時,GKE 會根據節點集區類型調整節點集區大小,如下所示:
單一主機 TPU 配量節點集區:GKE 會在現有節點集區中新增或移除 TPU 節點。節點集區可包含任意數量的 TPU 節點,介於零和節點集區大小上限之間,而節點集區大小上限是由 --max-nodes 和 --total-max-nodes 旗標決定。節點集區擴充時,節點集區中的所有 TPU 節點都會具有相同的機器類型和拓撲。如要進一步瞭解如何建立單一主機 TPU 節點集區,請參閱「建立節點集區」。
多主機 TPU 配量節點集區:GKE 會將節點集區從零原子擴展至滿足 TPU 拓撲所需的節點數量。舉例來說,如果 TPU 節點集區的機器類型為
ct5lp-hightpu-4t
,拓撲為16x16
,則節點集區會包含 64 個節點。GKE 自動調度器會確保這個節點集區的節點數為 0 或 64。縮減時,GKE 會排除所有排定的 Pod,並將整個節點集區排除至零。如要進一步瞭解如何建立多主機 TPU 節點集區,請參閱「建立節點集區」。
為 TPU 配量佈建額外儲存空間
TPU 配量中的 VM 包含 100 GiB 的開機磁碟。如果 TPU 節點需要額外的儲存空間來進行訓練或前處理,或是需要儲存檢查點,可以使用 Google Cloud Hyperdisk 或平衡型 Persistent Disk 儲存空間 (如果 TPU 支援的話)。如要進一步瞭解各個 TPU 版本支援的磁碟類型,請參閱「TPU support for Hyperdisk and Persistent Disk」(TPU 支援 Hyperdisk 和永久磁碟)。
Standard 叢集的 CPU
本節不適用於 Autopilot 叢集,因為 GKE 會將每個 TPU 節點放在自己的節點上。詳情請參閱「Autopilot 模式的 TPU 運作方式」。
如果是標準叢集,請考慮採用下列排程最佳做法。
如要在 TPU 配量節點的 VM 上排定非 TPU 工作負載,請確保 GKE Pod 可以容許 google.com/tpu
汙點。如要將工作負載部署到特定節點,請使用節點選取器。
Kubernetes 資源管理和優先順序會將 TPU 中的 VM 視為其他 VM 類型。如要優先排程需要 TPU 的 Pod,而非同一節點上的其他 Pod,請為這些 TPU 配量要求最大 CPU 或記憶體。低優先順序 TPU 配量應執行下列操作:
- 設定較低的 CPU 和記憶體要求,確保節點有足夠的可分配資源供 TPU 工作負載使用。詳情請參閱Kubernetes 如何套用資源要求和限制。
- 設定 CPU 無限制,確保 Pod 可以爆量使用所有未使用的週期。
- 設定適當的記憶體限制,確保 Pod 能正常運作,不會有節點壓力剔除的風險。
如果 Kubernetes Pod 未要求 CPU 和記憶體 (即使要求 TPU 也是如此),Kubernetes 會將其視為盡力服務的 Pod,且無法保證該 Pod 需要任何 CPU 和記憶體。只有明確要求 CPU 和記憶體的 Pod 才能享有這類保證。如要進行特定的 Kubernetes 排程,請設定 Pod 需求,並明確指定 CPU 和記憶體要求。詳情請參閱「Pod 和容器的資源管理」。
如要進一步瞭解最佳做法,請參閱「Kubernetes 最佳做法:資源要求和限制」。
減少工作負載中斷
如果您使用 TPU 訓練機器學習模型,但工作負載中斷,自上次檢查點以來的所有工作都會遺失。如要降低工作負載中斷的機率,請採取下列措施:
- 將這項工作的優先順序設為高於所有其他工作:如果資源不足,GKE 排程器會搶占優先順序較低的工作,排定優先順序較高的工作。這也能確保高優先順序工作負載獲得所需的所有資源 (最多可達叢集中的可用資源總數)。詳情請參閱「Pod 優先順序和搶占」。
- 設定維護作業排除時段:維護作業排除時段是指禁止自動執行維護作業的一段非週期性時間。詳情請參閱「維護作業排除時段」。
- 在 Autopilot 中使用延長執行時間的 Pod:使用延長執行時間的 Pod,在 GKE 因縮減或節點升級而終止 Pod 之前,最多可享有七天的緩衝期。
- 在 TPU Trillium 中使用集合排程:使用集合指出 TPU 節點集區是服務工作負載的一部分。 Google Cloud 可限制並簡化推論工作負載作業的中斷情形。詳情請參閱「收款排程的運作方式」。
這些建議有助於盡量減少中斷,但無法完全避免。舉例來說,因硬體故障而搶占資源,或是為了重整而搶占資源,仍有可能發生。同樣地,設定 GKE 維護排除項目不會防止 Compute Engine 維護事件。
請經常儲存檢查點,並在訓練指令碼中加入程式碼,以便在恢復訓練時從上一個檢查點開始。
處理因節點維護作業而導致的中斷
主機 TPU 的 GKE 節點可能會發生維護事件或其他中斷情形,導致節點關機。在控制平面執行 1.29.1-gke.1425000 以上版本的 GKE 叢集中,您可以將 GKE 設為正常終止工作負載,減少工作負載中斷情形。
如要瞭解、設定及監控執行 AI/機器學習工作負載的 GKE 節點上可能發生的中斷事件,請參閱「管理 GPU 和 TPU 的 GKE 節點中斷」。
盡量提高 TPU 使用率
如要充分運用 TPU 投資,請排定各種優先順序的工作,並將這些工作加入佇列,盡可能延長 TPU 的運作時間。如要進行工作層級的排程和搶占,您必須使用 Kubernetes 外掛程式,將工作自動調度到佇列中。
使用 Kueue 將工作調度至佇列。
後續步驟
- 按照「在 GKE 中部署 TPU 工作負載」一文,設定 Cloud TPU 搭配 GKE。
- 瞭解使用 Cloud TPU 執行機器學習工作的最佳做法。
- 在 GKE 中使用 Cloud TPU 建構大規模機器學習模型。
- 在 TPU 上使用 KubeRay 提供大型語言模型。