如何建立企業級別的機器學習模型伺服器?- kdnuggets

banq發表於2020-09-16

隨著MLOps流程和最佳實踐的逐漸成熟,機器學習注入了更多的應用程式。對於這些軟體和系統而言,至關重要的是執行機器學習模型的伺服器,該伺服器應具有關鍵功能,以驅動成功的企業級機器學習大規模生產。
在本文中,我們重點介紹模型伺服器,這是實時或離線執行的機器學習服務的核心軟體。有兩種用於服務機器學習模型的常用方法:
第一種方法將模型計算嵌入到Web伺服器(例如Flask)中,作為專用於預測服務的API服務端點。
第二種方法將模型計算轉移到單獨的服務上。對於初創公司來說,這是一個活躍的領域,並且越來越多的選項屬於此類。產品包括 :雲提供商  (SageMaker,  Azure,  Google Cloud),  用於模型服務的開源專案  (Ray Serve,Seldon,TorchServe,TensorFlow Serving等),  專有軟體  (SAS,Datatron,ModelOp等)的服務,以及定製解決方案通常以某種通用框架編寫。
儘管機器學習可以用於一次性專案,但大多數開發人員都希望將機器學習嵌入其產品和服務中。模型伺服器是用於生產機器學習的軟體基礎結構的重要組成部分,因此,公司需要仔細評估他們的選擇。這篇文章重點介紹公司應該在模型伺服器中尋找的關鍵功能。
 

流行的工具包
模型伺服器可能與模型訓練系統分開。選擇一個模型伺服器,使其能夠使用使用多種流行工具生成的經過訓練的模型工件。開發人員和機器學習工程師使用許多不同的庫來構建模型,其中包括用於深度學習(PyTorch,TensorFlow),機器學習和統計的庫(scikit-learn,XGBoost,SAS,  statsmodel)。模型構建者還繼續使用各種程式語言。儘管Python已成為機器學習的主要語言,但其他語言(如R,Java,Scala,Julia,SAS)仍然有很多使用者。最近,許多公司已經實施了資料科學工作臺,例如Databricks,Cloudera,Dataiku,Domino Data Lab等。
 

用於模型部署的GUI
開發人員可以使用命令列介面,但是企業使用者將需要圖形化的使用者介面,以指導他們完成模型的部署過程,並突出顯示機器學習生命週期的不同階段。隨著部署過程的成熟,它們可能會遷移到指令碼和自動化方面。具有使用者介面的模型伺服器包括Seldon Deploy,  SAS模型管理器,  Datatron和其他針對企業使用者的模型伺服器  。
 

易於操作和部署,但具有高效能和可擴充套件性
隨著機器學習被嵌入到關鍵應用程式中,公司將需要能夠支援大規模預測服務的低延遲模型伺服器。像Facebook和Google這樣的公司提供的機器學習服務每天提供數十億次實時響應  。儘管這些情況可能是極端的情況,但許多公司還部署了推薦和個性化系統之類的應用程式,這些應用程式   每天與許多使用者進行互動。隨著諸如Ray Serve之類的開源軟體的可用性,公司現在可以訪問可擴充套件到許多計算機的低延遲模型伺服器。
大多數模型伺服器使用微服務架構,並且可以透過REST或gRPC API進行訪問。這使得將機器學習(“推薦器”)與其他服務(“購物車”)整合起來更加容易。根據您的設定,您可能需要一個模型伺服器,該伺服器可讓您在雲,本地或兩者上部署模型。模型伺服器必須參與基礎結構功能,例如自動縮放,資源管理和硬體供應。
一些模型伺服器增加了最新的創新,這些創新可以降低複雜性,提高效能並提供與其他服務整合的靈活選項。透過引入新的Tensor資料型別、RedisAI來支援“資料本地性”:該功能使使用者可以從自己喜歡的客戶端獲取和設定Tensors,並“在其資料所在的位置執行其AI模型”,Ray Serve  透過為開發人員提供從API端點到模型評估,再到API端點的端到端控制,使模型評估邏輯更接近業務邏輯 。此外,Ray Serve與簡單的Web伺服器一樣易於操作且易於部署。
 

包括用於測試,部署和推出的工具
訓練模型後,必須在部署模型之前對其進行檢查和測試。Seldon Deploy,Datatron和其他模型伺服器具有一些有趣的功能,可讓您透過單個預測或使用負載測試來測試模型。為了促進錯誤識別和測試,這些模型伺服器還允許您上載測試資料並視覺化測試預測。
對模型進行檢查和測試後,模型伺服器應使您能夠安全地升級和降級模型。其他流行的推出模式包括:

  • Canary:一小部分請求傳送到新模型,而大部分請求則路由到現有模型。
  • Shadowing:將生產流量複製到非生產服務中以在執行模型之前對其進行測試。

理想情況下,推出工具是完全自動化的,因此可以將部署工具插入CI / CD或MLOps流程中。
 

支援複雜的部署模式
隨著增加對機器學習的使用,模型伺服器應該能夠支援生產中的許多模型。您的模型伺服器還應該支援複雜的部署模式,該模式涉及一次部署多個模型。它應支援多種模式,包括:

  • A / B測試:一小部分預測使用一個模型,其餘預測則使用另一個模型。
  • 整合:將多個模型組合在一起,以形成更強大的預測模型。
  • 級聯:如果基線模型產生的預測具有較低的置信度,則會將流量路由到備用模型。另一個用例是改進:檢測圖片中是否有汽車,如果有,則將圖片傳送給讀取汽車牌照的模型。
  • Multi-arm bandit:強化學習的一種形式,bandit將流量分配給多個競爭模型。

 

開箱即用的指標和監控
機器學習模型會隨著時間的流逝而退化,因此重要的是要有適當的系統來指示何時模型變得不太準確或何時開始顯示偏差和其他意外行為。模型伺服器應發出效能、使用情況和其他自定義指標,視覺化和實時監視工具可以使用這些指標。一些模型伺服器開始提供高階功能,包括異常檢測和警報。甚至還有創業公司(Superwise,  Arize),重點是使用“機器學習來監視機器學習”。儘管這些工具是目前與模型伺服器分離並需要與模型伺服器整合的專用工具,但是某些模型伺服器很可能會在其產品中構建高階監視和可觀察性功能。
 

與模型管理工具整合
隨著將更多模型部署到生產中,模型伺服器將需要與模型管理工具整合。這些工具帶有很多標籤-訪問控制,模型目錄,模型登錄檔,模型管理儀表板-但本質上,它們為您提供了過去和當前模型的360度檢視。
由於需要定期檢查模型,因此模型伺服器應與用於審計和複製模型的服務介面。  現在,模型版本控制是標準的,並且隨我們檢查的大多數模型伺服器一起提供。Datatron有一個模型管理儀表板,該儀表板提供了用於稽核表現不佳的模型的工具。許多模型伺服器具有  資料沿襲  服務,這些服務記錄何時傳送請求以及模型輸入和輸出是什麼。除錯和審計模型還需要對其關鍵驅動程式有更深入的瞭解。Seldon Deploy與 用於模型檢查和解釋性的開源工具整合  。

 

統一批處理和線上評分
假設您更新了模型,或者收到了許多新記錄。在這兩個示例中,您可能需要將模型應用於大型資料集。您將需要一個模型伺服器,該伺服器可以在小型批次中有效地對大型資料集進行評分,並提供低延遲的線上評分(例如,Ray Serve支援批次和線上評分)。
 

總結
隨著機器學習被嵌入更多軟體應用程式中,公司需要仔細選擇其模型伺服器。儘管  Ray Serve  是一個相對較新的開源模型伺服器,但它已經具有我們在本文中列出的許多功能。Ray Serve是用於部署,操作和監視機器學習模型的可擴充套件,簡單且靈活的工具。我們相信Ray和Ray Serve將成為未來許多ML平臺的基礎。

 

相關文章