本最佳做法指南說明可用的指標,以及如何選取合適的指標,在 GKE 上為推論工作負載設定水平 Pod 自動調度器 (HPA)。HPA 可確保模型伺服器隨著負載適當擴充,是相當有效率的做法。微調 HPA 設定是主要方法,可根據流量需求調整佈建的硬體成本,以達成推論伺服器效能目標。
如需如何實作這些最佳做法的範例,請參閱「使用 GKE 為 GPU 上的 LLM 工作負載設定自動調度」。
目標
本指南適用於生成式 AI 客戶、新舊 GKE 使用者、機器學習工程師,以及有興趣使用 Kubernetes 和 GPU 最佳化 LLM 工作負載的 LLMOps (DevOps) 工程師。
閱讀本指南後,您應該能夠:
- 瞭解 LLM 推論的自動調度資源指標。
- 瞭解考慮要自動調度哪些指標時,高層級的取捨。
LLM 推論的自動調度資源指標總覽
GKE 提供下列指標:
伺服器指標
熱門的 LLM 推論伺服器 (例如 TGI、vLLM 和 NVIDIA Triton) 會發出工作負載專屬的效能指標。GKE 可簡化擷取作業,並根據這些伺服器層級指標自動調整工作負載的資源配置。您可以運用這些指標,深入瞭解批次大小、佇列大小和解碼延遲等成效指標。
根據這些指標,您可以針對最相關的效能指標,直接進行自動調度資源。自動調度資源的重要伺服器層級指標包括:
- 佇列大小:伺服器佇列中等待處理的要求數。在特定目標延遲時間門檻內,使用佇列大小盡量提高輸送量並降低成本。詳情請參閱相關的最佳做法一節。
- 批次大小:正在進行推論的要求數量。 使用批次大小,達到比佇列大小更低的目標延遲時間門檻。詳情請參閱相關的最佳做法一節。
這些指標通常不受效能和流量波動影響,因此是各種 GPU 硬體設定自動調度資源的可靠起點。
GPU 指標
GPU 會發出各種用量和效能指標,為任何以 GPU 為基礎的工作提供與工作負載無關的自動調整功能,包括缺少自訂指標的推論工作負載。如要瞭解如何設定 DCGM 收集作業,請參閱「設定 DCGM 收集作業」。
GKE 的常見 GPU 指標包括:
GPU 指標 | 用量 | 限制 |
---|---|---|
GPU 使用率 (DCGM_FI_DEV_GPU_UTIL ) |
測量工作週期,也就是 GPU 處於使用中狀態的時間長度。 | 不會測量 GPU 運作時的工作量。 因此,很難將延遲時間和輸送量等推論效能指標,對應至 GPU 使用率門檻。 |
GPU 記憶體用量 (DCGM_FI_DEV_FB_USED ) |
測量特定時間點的 GPU 記憶體用量。 這對於實作 GPU 記憶體動態分配的工作負載很有幫助。 | 如果工作負載預先分配 GPU 記憶體,或從不解除分配記憶體 (例如在 TGI 和 vLLM 上執行的工作負載),這項指標只適用於擴充,流量減少時不會縮減。 |
CPU 指標
在 GKE 中,HPA 可與 CPU 和記憶體自動調度功能搭配使用。對於在 CPU 上執行的工作負載,CPU 和記憶體使用率指標通常是主要的自動調度指標。
對於在 GPU 上執行的推論工作負載,我們不建議將 CPU 和記憶體使用率做為作業耗用資源量的唯一指標,因為推論工作負載主要依賴 GPU 資源。因此,單獨使用 CPU 指標進行自動調度資源,可能會導致效能和成本不盡理想。
選擇自動調度資源指標時的考量事項
請參考下列注意事項和最佳做法,為 GKE 自動調度資源選取最佳指標,以達成推論工作負載的效能目標。
最佳做法:在特定目標延遲時間門檻內,使用佇列大小盡量提高輸送量並降低成本
我們建議您在最佳化輸送量和成本時,以及在模型伺服器最大批次大小的最大輸送量可達成延遲時間目標時,自動調度佇列大小。
佇列大小與要求延遲時間直接相關。傳入的要求會在模型伺服器中排隊等候處理,而這段佇列時間會增加整體延遲時間。佇列大小是負載尖峰的敏感指標,因為負載增加會快速填滿佇列。
依據佇列大小自動調度資源,可在負載量增加時擴充資源,並在佇列為空時縮減資源,盡量縮短佇列時間。這種做法相對容易實作,且與工作負載無關,因為佇列大小與要求大小、模型或硬體無關。
如要盡量提高輸送量,同時遵守模型伺服器的設定,請考慮著重於佇列大小。佇列大小會追蹤待處理要求,而非處理中的要求。vLLM 和 TGI 使用連續批次處理,可盡量提高並行要求數量,並在批次空間可用時維持低佇列。批次空間有限時,佇列會明顯變長,因此請將成長點做為啟動擴充的信號。結合佇列大小自動調整功能和最佳化批次總處理量,即可盡量提高要求總處理量。
判斷 HPA 的最佳佇列大小門檻值
請注意 HPA 容許度,預設值為目標值周圍的 0.1 無動作範圍,可抑制震盪。
如要選擇正確的佇列大小門檻,請從 3 到 5 之間的值開始,然後逐步增加,直到要求達到偏好的延遲時間為止。使用 locust-load-inference
工具進行測試。如果閾值低於 10,請微調 HPA 擴充設定,以處理流量尖峰。
您也可以建立 Cloud Monitoring 自訂資訊主頁,以視覺化方式呈現指標行為。
限制
佇列大小不會直接控管並行要求,因此其門檻無法保證延遲時間低於批次大小上限。如要解決這個問題,可以手動調降批次大小上限,或根據批次大小自動調度資源。
最佳做法:使用批次大小達到低於佇列大小的目標延遲時間門檻
如果工作負載對延遲時間很敏感,且以佇列為準的調度資源速度不夠快,無法滿足需求,建議選擇以批次大小為準的自動調度資源。
批次大小與傳入要求的處理量和延遲時間直接相關。批次大小是負載尖峰的良好指標,因為負載增加會導致更多要求新增至現有批次,進而導致批次大小增加。一般來說,批次大小越大,延遲時間就越長。 自動調整批次大小可確保工作負載擴充,盡可能同時處理大量要求,並在同時處理的要求較少時縮減規模。
如果佇列大小已符合延遲目標,請優先進行自動調度資源。 這可大幅提高輸送量和成本效益。不過,批次大小對於容易受到延遲影響的工作負載來說非常重要。批量越大,輸送量就越高,但由於部分要求的預先填入階段會中斷連續批次處理模型伺服器中其他要求的解碼階段,因此延遲時間也會增加。您可以監控批次大小模式,並使用自動調度資源功能,在負載尖峰期間盡量減少並行要求。
如果模型伺服器允許,建議您自訂最大批次大小,做為額外的調整機制。您也可以將這項功能與以佇列為準的自動調度資源功能配對。
判斷 HPA 的最佳批次大小門檻值
請注意 HPA 容許度,這是目標值周圍的預設 0.1 無動作範圍,可抑制震盪。
如要選擇合適的批次大小門檻,請實驗性地增加伺服器負載,並觀察批次大小達到峰值的位置。此外,我們建議使用 locust-load-inference
工具進行測試。找出批次大小上限後,請將初始目標值設為略低於這個上限,然後逐步調降,直到達到偏好的延遲時間為止。
您也可以建立 Cloud Monitoring 自訂資訊主頁,以視覺化方式呈現指標行為。
限制
自動調整批次大小有助於控制延遲,但仍有其限制。要求大小各異,加上硬體限制,因此很難找出合適的批次大小門檻。
最佳做法:最佳化 HPA 設定
建議您設定下列 HPA 設定選項:
- 穩定期:使用這個 HPA 設定選項,可避免因指標波動而快速變更副本數量。預設值為縮減 5 分鐘 (避免過早縮減),以及擴增 0 分鐘 (確保回應能力)。根據工作負載的波動程度和偏好的回應速度調整值。
- 資源調度政策:使用這個 HPA 設定選項,微調資源調度行為。您可以設定「Pod」政策限制,指定每個時間單位變更的絕對備用資源數量,也可以設定「百分比」政策限制,指定百分比變化。
如要進一步瞭解這些選項,請參閱開放原始碼 Kubernetes 說明文件中的「水平 Pod 自動調度」一文。