KServe:一個健壯且可擴展的云原生模型服務器
如果你熟悉Kubeflow,你就會知道KFServing是平臺的模型服務器和推理引擎。去年9月,KFServing項目經(jīng)歷了一次轉(zhuǎn)型,變成了KServe。
除了名稱變更之外,KServe現(xiàn)在是從Kubeflow項目畢業(yè)的獨立組件。這種分離允許KServe發(fā)展為一個單獨的、云原生推理引擎,部署為一個獨立的模型服務器。當然,它將繼續(xù)與Kubeflow緊密集成,但它們將被視為獨立的開源項目來處理和維護。
KServe是由谷歌、IBM、彭博社、Nvidia和Seldon合作開發(fā)的,是Kubernetes的開源云原生模型服務器。最新版本0.8的重點是將模型服務器轉(zhuǎn)換為一個獨立的組件,并對分類法和命名法進行了更改。
讓我們了解KServe的核心功能
模型服務器用于機器學習模型,就像應用程序用于編寫二進制代碼一樣。兩者都為部署提供運行時和執(zhí)行上下文。KServer作為模型服務器,為機器學習和大規(guī)模的學習模型提供了基礎。
KServe可以部署為傳統(tǒng)的Kubernetes部署,也可以部署為支持零擴展的無服務器部署。對于無服務器,它利用了面向無服務器的Knative Serving的優(yōu)勢,具有自動縮放功能。Istio用作入口,向API使用者公開服務端點。Istio和Knative服務的結(jié)合實現(xiàn)了令人興奮的場景,例如模型的藍/綠和金絲雀部署。
Kserve架構(gòu)圖
RawDeployment模式允許你在不使用Knative服務的情況下使用KServe,它支持傳統(tǒng)的縮放技術,如水平pod自動縮放(HPA),但不支持縮放到零。
KServe架構(gòu)
KServe model server有一個控制平面和一個數(shù)據(jù)平面。控制平面管理并協(xié)調(diào)負責推理的自定義資源。在無服務器模式下,它與Knative資源協(xié)調(diào)管理自動縮放。
KServe控制平面的核心是管理推理服務生命周期的KServe控制器。它負責創(chuàng)建服務、入口資源、模型服務器容器、模型代理容器,用于請求/響應日志記錄、批處理,以及從模型存儲中提取模型。模型存儲是在模型服務器上注冊的模型的存儲庫。它通常是一種對象存儲服務,如Amazon S3、谷歌云存儲、Azure Storage或MinIO。
數(shù)據(jù)平面管理針對特定模型的請求/響應周期。它有一個預測器、轉(zhuǎn)換器和解釋器組件。
AI應用程序向預測器端點發(fā)送REST或gRPC請求。預測器充當調(diào)用transformer組件的推理管道,transformer組件可以執(zhí)行入站數(shù)據(jù)(請求)的預處理和出站數(shù)據(jù)(響應)的后處理?;蛘?,可能會有一個解釋器組件,為托管模型帶來AI解釋能力。KServe鼓勵使用可互操作和可擴展的V2協(xié)議。
數(shù)據(jù)平面還具有端點,用于檢查模型的就緒性和運行狀況。它還公開了用于檢索模型元數(shù)據(jù)的API。
支持的框架和運行時
KServe支持廣泛的機器學習和深度學習框架。深度學習框架和運行時與現(xiàn)有的服務基礎設施(如TensorFlow Serving、TorchServe和Triton推理服務器)配合使用。KServe可以通過Triton 托管TensorFlow、ONNX、PyTorch和TensorRT運行時。
對于基于SKLearn的經(jīng)典機器學習模型,XGBoost、Spark MLLib和LightGBM KServe依賴于Seldon的MLServer。
KServe的可擴展框架使其能夠插入任何遵守V2推理協(xié)議的運行時。
使用ModelMesh的多模式服務
KServe為每個推理部署一個模型,將平臺的可擴展性限制在可用的CPU和GPU上。當在昂貴且稀缺的計算資源GPU上運行推理時,這種限制變得很明顯。
通過多模式服務,我們可以克服基礎設施的限制——計算資源、最大pod和最大IP地址。
ModelMesh Serving由IBM開發(fā),是一個基于Kubernetes的平臺,用于實時服務ML/DL模型,針對高容量/密度用例進行了優(yōu)化。與管理流程以最佳利用可用資源的操作系統(tǒng)類似,ModelMesh優(yōu)化部署的模型以在集群內(nèi)高效運行。
通過跨部署的pod集群智能管理內(nèi)存中的模型數(shù)據(jù),以及隨著時間的推移對這些模型的使用,系統(tǒng)最大限度地利用了可用的集群資源。
ModelMesh Serving基于KServe v2數(shù)據(jù)平面API進行推理,這使得它可以部署為類似于NVIDIA Triton推理服務器的運行時。當一個請求到達KServe數(shù)據(jù)平面時,它被簡單地委托給ModelMesh Serving。
ModelMesh Serving與KServe的集成目前處于Alpha階段。隨著這兩個項目的成熟,將有一個更緊密的集成,使混合和匹配兩個平臺的功能和能力成為可能。
隨著模型服務成為MLOP的核心構(gòu)建塊,像KServe這樣的開源項目變得非常重要。KServe的可擴展性使其能夠使用現(xiàn)有和即將出現(xiàn)的運行時,從而成為一個獨特的模型服務平臺。