簡化 GKE 中 AI/機器學習工作負載的自動調度概念

本文提供 Google Kubernetes Engine (GKE) 中 AI/機器學習工作負載的自動調度概念總覽。

本文適用於剛接觸 GKE 的機器學習 (ML) 工程師。建議您閱讀本系列中的下列文件,逐步瞭解如何使用 GKE 處理 AI/ML 工作負載:

  1. 為何要使用 GKE 進行 AI/機器學習推論
  2. 關於 GKE 的 AI/機器學習模型推論功能
  3. 簡化 GKE 中 AI/機器學習工作負載的自動調度概念 (本文)

事前準備

您應已基本瞭解下列概念:

挑戰:滿足尖峰需求

虛構的線上零售商 Cymbal Shops 正在籌備年度特賣活動。商店的 AI 輔助推薦引擎必須即時提供個人化建議,給大量湧入的線上購物者。

如果推薦引擎速度變慢,使用者體驗就會受到影響,銷售量也會下滑。不過,在流量正常期間,提供過多的伺服器容量並不符合成本效益。目標是讓資源根據需求自動調整規模,確保使用者享有優質體驗,同時控管成本。

解決方案:隨選自動調度

GKE 自動調度資源功能就像商店經理為銷售旺季做準備一樣。經理不必讓大型建築物隨時保持滿員和供電狀態,而是會根據任何時間的購物者需求,動態調整商店的整體容量 (員工、樓層空間和設備)。

GKE 也是採用相同原則:根據即時需求,自動調整分配給應用程式的資源 (工作負載和基礎架構)。

GKE 自動調度資源功能帶來的業務效益

GKE 結合水平和垂直調度策略,提供強大的方法,可帶來三項核心優勢:

  • 成本最佳化:您只需為實際使用的運算資源付費,避免過度佈建而產生額外費用。GKE 自動調度功能會根據應用程式的實際 CPU 和記憶體需求,自動調整大小,避免浪費資源。此外,還能只在需要時佈建昂貴的專用硬體 (例如 GPU),並在工作完成後移除。
  • 提升可靠性和效能:應用程式可自動擴充 (新增更多副本) 來處理突然的流量高峰,確保使用者體驗穩定。同時,GKE 的自動調整功能可協助避免常見的「記憶體不足」(OOM) 錯誤,以免應用程式異常終止。對於要求嚴苛的 AI/機器學習工作,這有助於確保提供必要的高效能硬體,以便有效率地執行工作並準時完成。
  • 降低營運負擔:GKE 的多維度自動調整資源配置策略可大幅簡化資源管理作業。GKE 會自動執行複雜的工作,例如調整資源要求,以及管理不同硬體的專用節點集區。這項自動化功能可讓工程團隊專心開發應用程式,不必費心調整基礎架構。

工作負載自動調度資源

工作負載自動調度資源功能會自動調整應用程式的運算能力,以符合需求。GKE 採用雙層自動調度資源系統,可有效管理應用程式的資源。

水平 Pod 自動配置器 (HPA):新增更多資源

水平 Pod 自動調度器 (HPA) 會監控應用程式 Pod 的資源用量。以我們的類比來說,Pod 是「銷售人員」,而 HPA 則是「團隊經理」,負責觀察銷售人員的忙碌程度。

當 Pod 的需求增加時,水平 Pod 自動配置器會自動佈建更多 Pod,以分散負載。需求減少時,HPA 會終止閒置的 Pod,以節省資源。

詳情請參閱「自動水平調度 Pod 資源」。

垂直 Pod 自動調度器 (VPA):提升資源效能

水平擴充著重於增加資源數量,垂直擴充則是一種互補策略,著重於提升現有資源的效能。以實體商店為例,這並非指聘請更多員工,而是提升現有團隊的能力,進而提高個人效率。

Pod 層級的垂直調度方法是由垂直 Pod 自動配置器 (VPA) 管理。VPA 會分析應用程式的資源消耗量,並視實際用量調高或調低 Pod 的 CPU 和記憶體要求。

VPA 可以調整 Pod 的資源要求和限制,例如重新佈建 Pod,將資源從 1 個 CPU 和 16 GB 擴充至 4 個 CPU 和 64 GB。這個程序會以功能更強大的新設定重新啟動 Pod,以便更妥善地處理工作負載。

詳情請參閱下列資源:

HPA 和 VPA 相輔相成。HPA 會根據流量變化調整 Pod 數量,而 VPA 則可確保每個 Pod 的大小都適合執行工作。這些擴充策略可避免浪費資源、產生不必要的費用,並確保應用程式在流量波動期間保持回應能力和可用性。不過,我們不建議在相同指標 (CPU 和記憶體) 上使用 HPA 和 VPA,因為這可能會發生衝突。詳情請參閱「Pod 自動水平調度限制」。

基礎架構自動調度資源

基礎架構自動調度資源功能會自動新增或移除硬體,以符合工作負載需求。

叢集自動調度器:大樓管理員

叢集自動調度器可確保有足夠的基礎架構 (VM 或 GKE 環境中的節點) 來容納 Pod。節點可以比喻為商店的「樓層」,而叢集自動調度器就是「大樓管理員」。

如果 HPA 需要新增更多 Pod,但現有節點的可用容量不足,叢集自動調度器就會佈建新節點。相反地,如果任何節點使用量過低,叢集自動配置器會將該節點的 Pod 移至其他節點,並終止現在為空的節點。

詳情請參閱「叢集自動配置器」。

自動建立節點集區:自動化專家

叢集自動配置器會在現有節點集區中新增節點,而節點集區自動建立功能則會自動建立符合 Pod 特定需求的新節點集區,藉此擴充叢集自動配置器的功能。

某些 AI/機器學習工作負載需要 GPU 或 TPU 等專用高效能硬體,但一般用途節點集區無法提供這類硬體。當工作負載需要這類專用硬體時,節點集區自動建立功能會完全自動佈建。確保即使是運算量最大的工作,也能在需要時取得所需硬體。

詳情請參閱「關於節點集區自動建立功能」。

如要瞭解 GKE 中可用的加速器,請參閱下列內容:

ComputeClasses:節點集區自動建立的觸發條件

雖然 Pod 要求特定硬體類型 (例如 nvidia-l4-vws) 時,可以觸發節點集區自動建立作業,但使用 ComputeClass 是更具彈性且更現代的方法。ComputeClass 是您定義的 GKE 資源,可根據一組規則控管及自訂硬體自動調度資源的方式。雖然這不是自動調度程式本身,但可與叢集自動調度程式搭配運作。

以這個比喻來說,ComputeClasses 就像商店設備的「智慧申請表」。

銷售人員 (你的 Pod) 不會要求使用特定硬體 (例如「我需要 Brand X Model 500 收銀機」),而是使用申請表單要求功能 (例如「我需要高速結帳站」)。這個表單 (即 ComputeClass) 包含一組規則,供採購團隊 (GKE) 瞭解如何完成該訂單。

ComputeClasses 會將 Pod 的硬體要求與 GKE 的佈建動作分開。Pod 可以要求 ComputeClass,而不是要求特定機器 (例如 a3-highgpu-8g)。ComputeClass 本身會定義「智慧」邏輯,也就是優先順序清單,其中列出規則,說明 GKE 應如何滿足要求。

詳情請參閱「關於 GKE ComputeClass」。

如要深入瞭解 ComputeClass,並查看實際範例和 YAML 設定,請參閱技術指南:使用自訂 ComputeClass 最佳化 GKE 工作負載

自動調度資源的重要指標和觸發條件

自動調度資源元件會監控不同信號,以做出明智的調度決策。下表列出以指標為準的自動調度觸發條件比較。

元件 回應 信號來源 思考過程 GKE 的動作
HPA 目前負載 即時消耗量,例如 CPU 目前為 90%。 「目前的 Pod 負荷過重。我們必須立即分配這項流量。」 擴大或縮減:變更 Pod 副本數量,以滿足需求。
VPA 規模調整效率 過往的消耗量,例如過去 24 小時的平均 RAM 使用量。 「這個 Pod 的資源需求已變更,或我們最初的預估有誤。我們需要調整資源分配,以符合實際用量」 調高或調低:變更 Pod 的大小 (CPU 或 RAM 限制),以調整為適當大小。
自動建立節點集區 硬體供應情形 未完成的要求,例如 Pod 處於「擱置中」狀態,因為沒有 GPU 節點。 「This Pod can't start because the physical hardware it requested is missing.」(這個 Pod 無法啟動,因為要求的實體硬體遺失。) 佈建基礎架構:使用特定硬體建立新的節點集區。

水平 Pod 自動配置器 (HPA) 觸發條件:因應負載

HPA 會監控即時效能指標,藉此調整 Pod 數量 (增加或減少)。舉例來說,水平 Pod 自動調度資源可直接使用CPU 和記憶體使用率,這兩項基本指標可指出 Pod 的處理負載。

不過,部分指標需要明確設定,例如:

垂直 Pod 自動配置器 (VPA) 觸發條件:因應資源需求

垂直 Pod 自動配置器會監控 Pod 的資源消耗記錄,並據此調整 Pod 大小 (放大或縮小):

  • CPU 和記憶體用量:VPA 會分析 Pod 的過往用量,判斷資源要求是否正確。VPA 的主要目標是增加或減少 Pod 的記憶體和 CPU 要求,以符合實際需求,避免資源爭用。

節點集區自動建立觸發條件:回應硬體要求

節點集區自動建立功能會佈建具有專用硬體的新節點集區。不會因 CPU 負載等效能指標而觸發。而是由 Pod 的資源要求觸發:

  • 無法排程的資源要求:主要觸發條件。建立 Pod 時,系統會要求特定硬體。如果叢集無法滿足這項要求 (因為現有節點沒有該硬體),系統就會自動建立節點集區。
  • ComputeClass 要求:Pod 要求 ComputeClass,例如 cloud.google.com/compute-class: premium-gpu。如果叢集中沒有任何節點可提供「premium-gpu」功能,節點集區自動建立功能就會自動建立可提供這些功能的新節點集區。

如要瞭解如何使用自訂、Prometheus 和外部指標自動調度資源,請參閱「根據指標自動調度工作負載資源」。

結論

套用這些自動調度策略後,您就能有效管理波動的 AI/機器學習工作負載。就像 Cymbal Shops 店長靈活管理資源,順利度過銷售高峰期一樣,您也可以使用 GKE 自動調整功能,自動擴充及縮減基礎架構和工作負載資源。這有助於確保模型在流量高峰期間維持效能,並在流量較少的期間維持成本效益,讓環境規模適中。

後續步驟