使用Kubernetes進行AI推理的五個理由
Kubernetes 的關鍵特性如何自然地滿足 AI 推理的需求,以及它們如何使推理工作負載受益。
譯自5 Reasons To Use Kubernetes for AI Inference,作者 Zulyar Ilakhunov。
Kubernetes的許多關鍵特性自然適合 AI 推理的需求,無論是 AI 驅動的微服務還是 ML 模型,幾乎像是專門為這個目的而設計的。讓我們來看看這些特性以及它們如何使推理工作負載受益。
1. 可擴展性
AI 驅動的應用程序和 ML 模型的可擴展性確保它們能夠處理所需的負載,例如并發用戶請求的數量。Kubernetes 有三種原生自動擴展機制,每種機制都對可擴展性有益:水平 Pod 自動擴展器 (HPA)、垂直 Pod 自動擴展器 (VPA) 和集群自動擴展器 (CA)。
- 水平 Pod Autoscaler根據各種指標(例如 CPU、GPU 和內存利用率)擴展運行應用程序或 ML 模型的 Pod 數量。當需求增加時,例如用戶請求激增,HPA 會向上擴展資源。當負載減少時,HPA 會向下擴展資源。
- 垂直 Pod Autoscaler根據 Pod 的實際使用情況調整 Pod 中容器的 CPU、GPU 和內存需求和限制。通過更改 Pod 規范中的limits,您可以控制 Pod 可以接收的特定資源量。它對于最大化節點上每個可用資源的利用率很有用。
- 集群 Autoscaler調整整個集群中可用的計算資源池,以滿足工作負載需求。它根據 Pod 的資源需求動態地向集群添加或刪除工作節點。這就是為什么 CA 對推理具有龐大用戶群的大型 ML 模型至關重要。
以下是 K8s 可擴展性對 AI 推理的主要益處:
- 通過根據需要自動向上和向下擴展 Pod 副本數量,確保 AI 工作負載的高可用性
- 通過根據需要自動調整集群大小來支持產品增長
- 根據應用程序的實際需求優化資源利用率,從而確保您只為 Pod 使用的資源付費
2. 資源優化
通過徹底優化推理工作負載的資源利用率,您可以為它們提供適當數量的資源。這可以為您節省資金,這在租用通常昂貴的 GPU 時尤其重要。允許您優化推理工作負載的資源使用的關鍵 Kubernetes 特性是高效的資源分配、對limits和requests的詳細控制以及自動擴展。
- 高效的資源分配: 您可以通過在 Pod 清單中指定來為 Pod 分配特定數量的 GPU、CPU 和 RAM。但是,目前只有 NVIDIA 加速器支持 GPU 的時間切片和多實例分區。如果您使用 Intel 或 AMD 加速器,Pod 只能請求整個 GPU。
- 對資源“limits”和“requests”的詳細控制:requests定義容器所需的最小資源,而limits阻止容器使用超過指定資源的資源。這提供了對計算資源的細粒度控制。
- 自動擴展: HPA、VPA 和 CA 可以防止浪費閑置資源。如果您正確配置這些功能,您將不會有任何閑置資源。
借助這些 Kubernetes 功能,您的工作負載將獲得所需的計算能力,不多不少。由于在云中租用中檔 GPU 的成本可能在每小時 1 美元到 2 美元之間,因此從長遠來看,您可以節省大量資金。
3. 性能優化
雖然 AI 推理通常比訓練資源密集度低,但它仍然需要 GPU 和其他計算資源才能高效運行。HPA、VPA 和 CA 是 Kubernetes 能夠提高推理性能的關鍵貢獻者。它們確保即使負載發生變化,也能為 AI 驅動的應用程序分配最佳資源。但是,您可以使用其他工具來幫助您控制和預測 AI 工作負載的性能,例如StormForge或Magalix Agent。
總的來說,Kubernetes 的彈性和微調資源使用能力使您能夠為 AI 應用程序實現最佳性能,無論其大小和負載如何。
4. 可移植性
對于 AI 工作負載(例如 ML 模型)來說,可移植性至關重要。這使您能夠在不同環境中一致地運行它們,而無需擔心基礎設施差異,從而節省時間和資金。Kubernetes 主要通過兩個內置功能實現可移植性:容器化和與任何環境的兼容性。
- 容器化: Kubernetes 使用容器化技術(如 containerd 和 Docker)將 ML 模型和 AI 驅動的應用程序與其依賴項一起打包到可移植容器中。然后,您可以在任何集群、任何環境中甚至使用其他容器編排工具使用這些容器。
- 支持多云和混合環境: Kubernetes 集群可以分布在多個環境中,包括公有云、私有云和本地基礎設施。這為您提供了靈活性并減少了供應商鎖定。
以下是 K8s 可移植性的主要優勢:
- 在不同環境中一致的 ML 模型部署
- 更輕松地遷移和更新 AI 工作負載
- 選擇云提供商或本地基礎設施的靈活性
在運行 AI 推理時,基礎設施故障和停機可能會導致顯著的精度下降、不可預測的模型行為或僅僅是服務中斷。對于許多 AI 驅動的應用程序來說,這是不可接受的,包括安全關鍵型應用程序,例如機器人、自動駕駛和醫療分析。Kubernetes 的自我修復和容錯功能有助于防止這些問題。
- Pod 級和節點級容錯: 如果 Pod 出現故障或沒有響應,Kubernetes 會自動檢測問題并重新啟動 Pod。這確保了應用程序保持可用和響應。如果運行 Pod 的節點出現故障,Kubernetes 會自動將 Pod 調度到健康的節點。
- 滾動更新: Kubernetes 支持滾動更新,因此您可以以最小的停機時間更新容器鏡像。這使您能夠快速部署錯誤修復或模型更新,而不會中斷正在運行的推理服務。
- 就緒性和存活性探測: 這些探測是健康檢查,用于檢測容器何時無法接收流量或變得不健康,并在必要時觸發重新啟動或替換。
- 集群自我修復: K8s 可以自動修復控制平面和工作節點問題,例如替換故障節點或重新啟動不健康的組件。這有助于維護運行 AI 推理的集群的整體健康狀況和可用性。
以下是 K8s 容錯的主要優勢:
- 通過保持 AI 驅動的應用程序高度可用和響應,提高了應用程序的彈性
- 出現問題時停機時間和中斷最小
- 通過使應用程序和模型高度可用并更能抵御意外的基礎設施故障,提高了用戶滿意度
結論
隨著組織繼續將 AI 整合到其應用程序中,使用大型 ML 模型并面臨動態負載,采用 Kubernetes 作為基礎技術至關重要。作為托管 Kubernetes 提供商,我們看到了對可擴展、容錯且經濟高效的基礎設施的需求不斷增長,這種基礎設施可以處理AI 推理規模。Kubernetes 是一個原生提供所有這些功能的工具。