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 是一個原生提供所有這些功能的工具。
想要了解更多關于使用 Kubernetes 加速 AI 的資訊?探索這本 Gcore 電子書。