運用 Gemini 在 GKE 上設計容量彈性和效率

本文說明如何設計彈性的 Google Kubernetes Engine (GKE) 叢集和工作負載排程策略,協助您取得 GPU、TPU 和高效能 CPU 等資源。運用Google Cloud 中的 Gemini 和 Compute Advisor (預先發布版),可避免 Pod 處於待處理狀態,並提高 AI 工作負載排程的可靠性。

本文適用對象為 Cloud 架構師、平台管理員和操作員,他們負責管理 GKE 基礎架構,並希望最佳化容量規劃和排程。

GKE 運算資源的彈性、效率和可用性總覽

Kubernetes 排程會依據宣告的資源要求進行。排定大規模加速器 (例如 GPU 或 TPU) 時,如果無法使用特定硬體,嚴格的資源要求可能會導致叢集無法向上擴充。您可以使用下列功能,在 GKE 最佳化調整容量可用性:

  • 自動建立節點集區:動態建立多系列節點集區。
  • 工作負載層級備用方案:設定容忍度和節點選取器,接受替代硬體。
  • 地理位置和區域調度:GKE 多可用區和多區域功能。
  • 預留項目管理:先使用預購容量,再要求隨選資源。

在 GKE 上靈活、有效率且可用地運用運算容量的最佳做法

本節提供建議,協助您在 GKE 排定工作負載時,提高可用容量。這些最佳做法涵蓋多項策略,例如設計彈性的硬體需求、設定節點集區自動建立功能,以及運用地理分布來因應資源限制。自動建立節點集區會根據 Pod 規格自動管理節點集區。您不必預先定義節點集區,只要在 Pod 資訊清單中指定資源需求,GKE 就會動態建立節點。

您也可以使用 Compute Advisor (預先發布版),探索及實作下列最佳做法。詳情請參閱「使用 Compute Advisor」。

提高運算資源可用性的選項

為盡可能提高容量可用性,您可以指示 GKE 避免將工作負載繫結至單一靜態機器家族或加速器類型。以下範例說明如何為不同工作負載類別,設定彈性節點集區和 Pod 親和性規則。具體替代方案取決於應用程式的資源需求:

  • 一般用途 CPU 節點集區:

    • 主要範例:N4 (Intel 一般用途)。
    • 替代方案範例:N4D (AMD EPYC 一般用途)、C4 或 C3 (Intel 一般用途),或 C4D 或 C3D (AMD EPYC 一般用途)。
    • 實作模式:使用自訂 ComputeClass 或節點親和性規則設定 Pod 規格,允許跨多個機器家族標籤進行排程,例如 ["n4", "n4d", "c4", "c4d"] 中的 cloud.google.com/machine-family。這項設定可讓 GKE 佈建任何有可用容量的集區。
  • GPU 節點集區:

    • 主要範例:A3 系列 (NVIDIA H100 GPU) 或 A4 系列 (NVIDIA B200 GPU)。
    • 替代方案範例:G2 系列 (NVIDIA L4 GPU) 或其他加速器級別。
    • 實作模式:為不同的 GPU 級別設定獨立的節點集區或 ComputeClass。如果推論或服務工作負載可在不同世代的加速器上執行,請允許 Pod 在主要加速器佈建受限時,改用 G2 (L4) 或其他 GPU 集區。
  • TPU 節點集區:

    • 主要範例:TPU Ironwood (TPU7x)。
    • 替代方案範例:TPU v6 (Trillium) 或 TPU v5 (v5e 或 v5p)。
    • 實作模式:TPU 配量佈建可能受到高度限制。設計訓練工作負載時,請採用架構層級的彈性 (例如支援可變配量拓撲的 JAX 或 PyTorch 設定),以便在 TPU Ironwood (TPU7x) 資源不足時,部署至 v6 或 v5 配量。

下表摘要說明不同類型工作負載的主要選項和硬體替代方案:

工作負載類型 主要選取範例 範例替代方案 架構考量
系統或核心工作負載 N4 N4D、C4、C4D、C3、C3D 涵蓋新式 Intel 和 AMD 硬體集區,可自動建立節點集區。
GPU 推論和處理 A3 (H100) 或 A4 (B200) G2 (L4) 靈活指定成本較低或可用性較高的 GPU 節點集區。
TPU 模型訓練 TPU Ironwood (TPU7x) TPU v6、TPU v5 (v5e 或 v5p) 採用彈性拓撲,可依據切片排程。

實作節點集區自動建立功能和 ComputeClasses

如要盡可能提高可用容量,請將節點集區自動建立功能與 ComputeClasses 搭配使用。以下列出最佳做法:

  • 定義 ComputeClass:建立 ComputeClass 資源,指定機器家族、GPU 類型或佈建模型的優先順序清單。GKE 會嘗試使用類別中優先順序最高的可用設定來佈建節點。排定優先順序的備用清單,可大幅協助您取得工作負載所需的資源。舉例來說,如要避免 GKE 在偏好的專用加速器無法使用時,改用一般用途機器,請在 ComputeClass 設定中新增 whenUnsatisfiable: DoNotScaleUp 設定。詳情請參閱「使用自訂 ComputeClass 控制自動調度節點屬性」。

  • 為無狀態或可容許中斷的工作負載啟用主動遷移 (optimizeRulePriority: true):在 ComputeClass 中設定主動遷移,當該位置的容量恢復時,GKE 就會自動封鎖、排空備用節點,並以優先順序較高的機器系列取代。

  • 使用動態 StorageClass 進行跨世代備用:在 GKE 1.35.3-gke.1290000 以上版本中,如果 ComputeClass 跨越僅限 Hyperdisk 的系列 (例如 C4、C4D 和 N4) 和永久磁碟系列 (例如 N2 和 N2D),請設定有狀態工作負載,讓 GKE 動態選取相容的磁碟類型。如要這麼做,請使用自動選取磁碟類型 (parameters.type: dynamic) 的 StorageClass 和 volumeBindingMode: WaitForFirstConsumer 設定。

  • 在 Pod 規格中參照 ComputeClass:在工作負載 Pod 規格中,使用 cloud.google.com/compute-class 標籤指定自訂 ComputeClass,而非特定機器家族或 GPU 類型。詳情請參閱「在工作負載中要求 ComputeClass」。

  • 定義多個容忍度:如果不使用 ComputeClass,請在 Pod 規格中使用節點親和性規則,允許一系列機器系列 (例如 ["n4", "n4d", "c4", "c4d"] 中的 cloud.google.com/machine-family)。詳情請參閱「設定節點集區自動建立功能」。

在 GKE 彈性選擇地理位置和多區域

如要提高容量可用性,請部署跨多個可用區的 GKE 叢集,或執行多叢集架構:

  • 多可用區叢集:確保節點集區已設定為在區域內的所有可用區自動調度資源。

  • 多區域叢集聯合:針對大型非同步工作 (例如離線批次推論或分散式訓練),部署多叢集自動調度管理工具 (例如 Kueue 或 Cluster Director),在全球範圍內排入工作負載,並調度至有可用容量的區域。

  • 在 Spot VM 上執行的 Pod:新增容忍度,並指示 GKE 在不同可用區分配超額容量,在 Spot VM 上執行可中斷的工作負載。

其他最佳做法,可提升 GKE 運算容量的彈性、效率和可用性

除了硬體多元化,您也可以採用下列 GKE 最佳做法,盡可能提高叢集擴充成功率:

  • 使用容量緩衝區:主動預留備用節點容量,以便立即排定高優先順序的 AI 工作負載,不必等待新的節點佈建。您可以搭配使用宣告式容量緩衝區和主動緩衝區策略,為 GPU 和 TPU 工作負載預留備用容量,讓叢集自動配置器自動維護備用容量。
  • 搭配使用彈性啟動和佇列式佈建:針對大型批次和 AI 模型訓練工作,請搭配使用彈性啟動和佇列式佈建,這項功能會與 Kueue 和 Dynamic Workload Scheduler 整合。彈性啟動搭配佇列式佈建,採用全有全無的原子節點分配方式,可避免部分叢集擴充失敗。詳情請參閱「透過彈性啟動搭配佇列式佈建執行大規模工作負載」。
  • 啟用映像檔串流和容器映像檔預先載入功能:針對大型 AI 容器映像檔 (例如超過 10 GB 的 PyTorch 或 TensorFlow 映像檔),啟用 GKE 映像檔串流功能,或使用次要開機磁碟預先載入映像檔。這項設定可縮短節點預熱時間,讓新佈建的節點在幾秒內開始執行工作負載。詳情請參閱「使用映像檔串流功能提取容器映像檔」和「使用次要開機磁碟預先載入資料或容器映像檔」。
  • 將叢集自動配置器位置政策設為 ANY:使用 ANY 位置政策設定節點集區 (特別是 Spot VM 或彈性啟動)。這項設定會指示叢集自動配置器,在所有指定可用區中搜尋要求的容量。叢集自動配置器會尋找容量,而非平衡節點數量。詳情請參閱「叢集自動配置器總覽」。
  • 透過 GPU 共用功能,充分運用加速器:如果工作負載不需要專屬 GPU,請使用 GPU 分時、多實體 GPU (MIG) 或 NVIDIA MPS,讓多個容器共用單一加速器。這種做法可最佳化節點集區的有效容量。詳情請參閱「關於 GKE 中的 GPU 共用策略」。

使用 Compute Advisor

Compute Advisor 是Google Cloud 控制台中的 AI 輔助介面,採用 Gemini 技術,可協助您為 GKE 設計具備韌性且符合成本效益的架構。

Compute Advisor 會提供彈性啟動型 VM 和 Spot VM 的近乎即時可用性指引,並在部署前驗證貴組織的政策和資源配額。Compute Advisor 不會針對需要隨選資源的工作負載,提供可用性指引。

如要在 Google Cloud 控制台存取 Gemini,請完成下列步驟:

  1. 前往 Google Cloud 控制台的「Overview」(總覽) 頁面。

    前往總覽頁面

  2. 在「運用 Compute Advisor 設計基礎架構」部分,提交提示詞。Gemini 會開始生成回覆。

  3. 如要生成架構建議,請在 Compute Advisor 執行下列其中一個範例提示。點選「Run prompt in Compute Advisor」(在 Compute Advisor 中執行提示) 按鈕時, Google Cloud 控制台可能需要超過 15 秒才能載入:

  • 一般加速器策略:

    用途:使用這則提示分析區域容量信號,並在設計叢集設定時,取得機型、可用區和備用排程策略的建議。

    Configure a GKE cluster to improve chances of obtaining scarce GPU or TPU capacity.
    

    在 Compute Advisor 執行提示詞

  • 地理位置彈性和備用方案:

    用途:設計多叢集架構或全域工作佇列系統 (例如使用 Kueue) 時,可使用這則提示,根據資源可用性跨區域轉移工作負載執行作業。

    Configure multi-region fallbacks and geographic scheduling on GKE to increase GPU availability.
    

    在 Compute Advisor 執行提示詞

  • 優先預留項目消耗:

    用途:使用這則提示生成 YAML 設定模式,用於 Pod 親和性和自動調度資源規則,優先使用預留容量。

    Configure GKE autoscaling rules and Pod specs to prioritize consuming active reservations before scaling into on-demand pools.
    

    在 Compute Advisor 執行提示詞

  • ComputeClasses 優先備用機制:

    用途:使用這則提示詞,為 ComputeClass CustomResourceDefinition 生成 YAML 資訊清單,優先採用高效能 GPU,但包含較低階的備用選項,確保工作負載排程。

    Define a ComputeClass manifest for GKE to prioritize A3 GPU nodes with automatic fallbacks to G2 (L4) GPUs.
    

    在 Compute Advisor 執行提示詞

  • 自動建立節點集區以分散資源:

    用途:使用這則提示詞,編寫 GKE 叢集自動配置器資源限制和 Pod 親和性規則的 YAML 資訊清單,讓 NAP 自動佈建替代 GPU 或 CPU 節點。

    Configure GKE node pool auto-creation to diversify machine families and prevent pending pods when regional accelerator capacity is constrained.
    

    在 Compute Advisor 執行提示詞

後續步驟