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

本文說明如何設計彈性的 Google Kubernetes Engine (GKE) 叢集和工作負載排程策略,協助您取得 GPU、TPU 和高效能 CPU 等資源。運用Cloud de Confiance by S3NS 中的 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 是Cloud de Confiance 控制台中的 AI 輔助介面,採用 Gemini 技術,可協助您為 GKE 設計具備韌性且符合成本效益的架構。

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

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

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

    前往總覽頁面

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

  3. 如要生成架構建議,請在 Compute Advisor 執行下列其中一個範例提示。點選「Run prompt in Compute Advisor」(在 Compute Advisor 中執行提示) 按鈕時, Cloud de Confiance 控制台可能需要超過 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 執行提示詞

後續步驟