在機器學習(ML)領域,訓練出高性能模型只是第一步,真正的挑戰在于如何將模型快速、可靠且經濟、高效地部署到生產環境中進行推理。特別是在大規模場景下,GPU資源管理、延遲優化、批處理策略、模型版本控制、可觀測性以及輔助服務(如預處理器、特征存儲庫和向量數據庫)的編排,都是亟待解決的難題。Kubernetes作為容器編排領域的佼佼者,為AI/ML應用提供了一個可擴展、可移植的平臺,不僅能夠有效管理GPU等計算資源,還能自動調整工作負載規模,以應對批處理任務以及實時推理的不同需求。
Kubernetes,一個為AI/ML高效分配資源的理想平臺
Kubernetes通過其強大的調度能力,能夠高效分配GPU和其他計算資源,實現工作負載的緊密打包和自動伸縮。同時,還能協調包含模型服務器、預處理器、向量數據庫和特征存儲在內的復雜系統,確保低延遲端點的穩定運行。容器化技術為模型環境提供了可重復性和一致性,使得模型的持續集成與持續部署(CI/CD)成為可能。Kubernetes內置的滾動更新、流量分割以及指標追蹤功能,進一步增強了生產環境的安全性和可靠性。
對于追求操作簡便性的團隊,托管端點服務或許是一個選擇,但在需要高度控制、可移植性、高級編排以及實時服務能力的場景下,Kubernetes無疑是首選。
典型ML推理設置,KServe在Kubernetes上的應用
使用KServe在Kubernetes上進行機器學習推理,有一個典型架構,那就是客戶端(如數據科學家、應用程序或批處理作業)通過Ingress向KServe的InferenceService發送請求。內部,通過可選的Transformer組件負責預處理輸入數據,預測器用來加載模型并提供預測功能,而可選的解釋器則提供模型洞察。模型工件從模型存儲中提取,并通過TensorFlow、PyTorch、scikit-learn、ONNX或Triton等運行時進行處理。整個系統運行在Knative/Kubernetes之上,支持CPU和GPU計算層,并可與AWS、Azure、Google Cloud等云服務提供商集成。
![]()
至于,MLFlow與KServe的集成如何操作?MLFlow是一個開源的機器學習框架,旨在解決模型從實驗到生產過程中遇到的常見問題,如實驗數據丟失、結果重現困難以及模型版本管理混亂。它通過跟蹤運行情況、保存環境代碼和管理模型版本,為模型部署提供了有序的流程。MLFlow還支持將模型打包為Docker鏡像,便于分發到Kubernetes等服務平臺。
MLFlow與Kubernetes的集成,有一個關鍵點需要注意,雖然MLFlow提供了基于FastAPI的推理服務器,并通過mlflow models build-docker命令支持容器化部署,但這種方法在大規模生產環境中可能不夠高效。FastAPI的輕量級特性使其難以應對極端并發或復雜的自動伸縮模式。相比之下,KServe(前身為KFServing)為TensorFlow、XGBoost、scikit-learn和PyTorch等主流機器學習庫提供了高性能、可擴展且與框架無關的推理平臺。
更好地托管AutoML,把Azure ML轉為AKS
首先,Azure ML與AKS進行集成。Azure ML是一個全面的機器學習生命周期管理平臺,支持實驗跟蹤、模型注冊表、訓練、部署和監控。對于需要高度控制運行時、擴展和網絡的場景,Azure Kubernetes Service(AKS)是一個理想的選擇。它允許自定義運行時、進行嚴格的性能調整,并與現有Kubernetes基礎設施集成。
其次,進行分步操作,在AKS上部署Azure ML AutoML模型。
讓Kubernetes上的LLM服務更好地運行,還需要vLLM與KServe的集成。接下來的問題是,如何把LLM與Kubernetes進行結合?在Kubernetes上運行大型語言模型(LLM)可以實現可靠、可擴展且可重復的推理。Kubernetes提供了GPU調度、自動伸縮和基本功能編排,而vLLM等優化運行時則提供了高通量、高內存效率的推理能力。通過結合請求批處理和可觀測性(指標、日志記錄和健康檢查),可以提供低延遲的API服務。
使用vLLM和KServe部署LLM的步驟如下:
1.準備集群和KServe。配置Kubernetes集群(AKS/GKE/EKS或本地),并安裝KServe。
2.獲取vLLM。克隆vLLM倉庫,安裝vLLM,并在本地測試vllm serve命令。
3.創建vLLM服務運行時/容器。構建容器鏡像,或使用KServe支持的vLLM服務時間配置。
4.部署InferenceService。應用KServe InferenceService YAML文件,引用vLLM服務的運行時和模型存儲。
5.驗證和調諧。通過Ingress/負載均衡器調用端點,測量延遲/吞吐量,并調整vLLM批處理/令牌緩存設置和KServe自動伸縮規則。
另外, vLLM、KServe,還要與BentoML進行集成。vLLM,作為高通量、GPU高效的推理引擎,負責實際執行LLM;BentoML,封裝模型加載、自定義預處理/后處理以及穩定的REST/gRPC API,構建可重復的Docker鏡像或工件;KServe,作為Kubernetes控制平面,部署Bento鏡像或vLLM鏡像,并處理自動伸縮、路由、健康檢查和生命周期管理。最終,通過BentoML打包模型和請求邏輯,KServe將該容器以InferenceService的形式運行,提供自動伸縮、流量控制和可觀測性。
值得一提的是,不同的技術路線選擇,都有自己的優缺點。KServe作為Kubernetes-原生機器學習服務與編排框架,提供了豐富的路由、內置遙測和解釋器集成以及多運行時支持,但學習曲線較陡,操作面較大。BentoML以Python為中心,提供了出色的開發者人體工學設計和可重復的圖像,但集群原生控件較少。NVIDIA Triton推理服務器則以其出色的GPU吞吐量和混合幀支持著稱,但同樣需要額外的設置來實現自動伸縮和高級Kubernetes操作。
結論
在生產環境中運行可靠、低延遲的AI/ML應用,同時控制成本、性能和可重復性,是每個ML團隊的目標。Kubernetes通過其強大的編排能力,為模型及其支持服務提供了所需的資源管理和自動伸縮功能。結合優化的運行時、服務層和推理引擎,我們可以在保持高輸入性能的同時,獲得生產級操作控制。從小處著手,使用單個模型進行驗證,然后根據清晰的SLO選擇符合性能和操作需求的服務棧,最終迭代出彈性且可擴展的服務。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.