Meetup 02期回顧:Prophecis 機器學習Studio版本更新介紹

主題:《Prophecis 機器學習Studio版本更新介紹》

講師:吳梓煜  微衆銀行大數據平臺工程師

GitHub:https://github.com/WeBankFinTech/Prophecis

以下內容爲分享文字版本,點擊閱讀原文可查看完整視頻


Prophecis介紹


Hello,各位社區小夥伴大家好。


現在由我來給大家介紹就是 Prophecis 機器學習 Studio 的版本更新介紹。

首先我給大家先介紹一下 Prophecis 的一些相關簡介,然後後續會給大家介紹一下0.3.0版本的一些新增功能。然後續兩個模塊會給大家介紹。

本次更新到比較重要的兩個模塊,一個是 MLFlow 的一個功能設計,還有一個是模型工廠 Model Factory 的一個功能設計。

然後續還有一些版後繼的一些版本優化的一些計劃給大家介紹一下。


然後首先介紹一下 Prophecis 的這個組件,然後 Prophecis 是微衆銀行這邊自研的一站式機學習平臺。它整合了各種開源的機器學習框架,具備的機器學習多租戶管理能力。整體是一個全棧的容器部署跟一個管理服務。整體的服務是以上這張圖有一個整體的管理臺界面。


後臺服務主要分爲幾個模塊:一個是分佈式建模、開發探索,、IDE 模塊,然後還有一個應用工廠,主要做底層的一些服務管理。還有一個是模型工廠就是做服務的部署。底最底層的基礎平臺是基於 K8S 的,是一個 covenue 的一個底層集羣這是整體的整個服務的框架。


Prophecis 全生命週期模型管理架構


這一套 Prophecis 的一個整體架構,整體想達成的一個目標。最終就這樣子,就是做到一個全生命週期的一模型管理框架。


首先我們會在 DataSphere Studio 裏面做一些數據清洗跟一些特徵工程的一些工作,做好這一步,數據就會在數倉裏面。

接下來我們可以在一個 IDE 環境或者說一個 MLFlow 的一個實驗工作流裏面做一些相關的模型訓練跟一些開發。這一塊依賴的底層引擎會分爲兩部分,一塊的話它計算是跑在 hadoop 集羣上面的,然後這一塊是依賴於 Linkis 來做一個任務的發佈。

另外一塊的任務它會是跑在那個 k8s 集羣上面。這一塊主要是跑 GPU 類型的一些任務,或者說一些任務也是跑在這一個集羣上面。然後把這些模型做一個訓練之後,最下面這一塊就是一些模型測試,發佈還有一些服務的模塊,這裏主要就是依賴我們最終的另外一個服務,就是模型工廠這一塊服務,然後還有一個機器學習應用工廠,這主要是做 CI 還有一些資源管控的,然後像旁側還有一些是元數據的,元數據的管理是在另外一些組件,還有一些調度是依賴 schedulis 這調度組件,然後整體想達成一個全生命週期模型管理的一個架構。


Prophecis V0.3.0版本功能介紹

然後接下來給大家介紹一下我們0.3.0的一個版本功能介紹。

本次0.3.0版本我們主要是發佈了 MLFlow 的一個實驗,還有一個模型工廠模塊,這兩個是比較大的模塊,然後同時也更新了 MLLbais 的一些部分功能。

首先第一塊比較大大的更新就是 MLFlow 它其實就是支持了一個機學習實驗工作流的管理。這一塊這後續會給大家介紹一下這塊設計跟一個演示。

第二塊的話是我們更新了 DSS 的一個第三方插件 Appconn 然後支持我們在 DSS 裏面嵌入一個機學習工作流的一節點,就是一個 subflow 的子工作流的形式去嵌入。

第三塊我們是把那個 DataBrick 的一個 MLFlow Server 把它做了一個嵌入,然後是想達到一個在這一塊可以做一個建模實驗的一個數據記錄,還有追蹤的一個效果。

第四塊主要是模型工廠服務,主要就是支持模型訓練完成之後的一些模型版本管理、模型註冊,然後還還有一些鏡像構建部署的一些功能。

剩下部分主要是 MLLabis 的一些功能,就是之前 Notebook 實例的一些管理能力,就之前類似於日誌查看、資源修改,還有資源釋放等功能。

還有還有往下的是優化的 Notebook 的一個 Spark Client 就是支持它可以創建多 Spark Client 然後對於對於文檔還有安裝模塊們也做了一定的更新。

這裏給大家稍微簡單展示一下,我先給大家展示下面4 到 6 的幾個功能的介紹。後面我再介紹一下 MLFlow 這個模塊。首先給大家介紹一下 MLFlow 一個新增的一些功能,在目前的話我們是增加了一些資源修改的一些能力。然後現在像界面上可以做一些資源修改的功能,還有資源也可以進行釋放,然後還有一些狀態查看,還有一些日誌之類的功能。還有一些日誌之類的功能,現在是支持在界面上做查看的。


還有另還有另外一塊是 DataBrick 的一個 MLFlow Server 然後這這一塊一會我是不會做詳細介紹。所以這裏先稍微看一下,就是在每一個實驗的工作流,這裏的話我們是提供了一個第一學習實驗工作流的能力。然後這裏我們可以拖一些節點,然後做一些建模實驗,然後在外層這裏會有一個實驗追蹤的一功能,這裏是一個 Tracing 可以記錄一些實驗的參數。其實這裏做到的一個能力,就是說把那個 DataBrick 的Tracing能力,把它做了一個嵌入,也是藉助他們這一塊開源的這一部分能力。對,然後然後這一這幾塊這幾塊是一些比較零散的一些新增功能。


後續我給大家介紹一下本次新增的重點的兩塊功能,一個是 MLFlow 還有一個是 Model Factory 然後首先給大家講一下,說本次功能發佈之後一些新增的安裝簡介,然後安裝大家可以到 github 上面。然後在 DOS 裏面會有提供一些文檔,是在QuickStart 裏面會有一些關於新版本介紹的一些安裝文檔。


本次的話相比於之前其實是相增加了這兩個部分,增加了 Seldon Core 還有 Istio 有這兩部分,這兩個部分主要其實是爲了支持模型部署的這一塊。然後 Istio 我們主要支持的是隻要使用的是1.8.2的版本,然後Seldon Core主要是1.13.0版本,主要是新增的這兩個服務的安裝。然後大家可以參考一下文檔,我這裏只是簡單做一下介紹,同樣的也是用 helm 去做一些相關部署。然後只要說 seldon system 的相關性 pod 正常 running 就可以 Istio 的話是用 Istio GTL 隊列部署,大家也可以參考一下文檔去看一下。然後主要主要增加了這就是這兩部分的介紹。


Prophecis V0.3.0安裝簡介

然後還有一部分比較重要的一些安裝。還有兩個部分,一個是兩個 Appconn, 一個是MLFlow  Appconn,還有一個 Prophecis Appconn。這一塊主要這第一個 Appconn 主要是支持說在那個工作流裏面,就是在 MLFlow 那實驗工作流需要這邊的這一個工作流節點,這工作流執行的時候是需要安裝第一個 Appconn 然後第二個 Appconn 的話是說在 DSS 裏面嵌入說這 Prophecis 的這 sub flow 節點需要安裝該 conn 然後這一塊同樣也是在 Docs 裏面提供了一個文檔,就有一個 Appconn 文檔,大家也可以說參考一下,都是跟 DSS 的一些文檔。

第三方組件內安裝文檔是類似,大家可以參考一下,這些把它拎包放到 DSS 對應的一個 App conn 目錄下面,然後再加載一下它對應的 SQL 就可以。對加載完成之後,這裏就會有一個機器學習的一個節點,然後這裏就可以跳轉過去做一些實驗的配置。

這塊不細講,大家可以自己看一下文檔,對應的是主要就這幾塊文檔,大家可以看一下行,然後我再繼續往下講。


Prophecis MLFlow功能設計

然後我再講一下本次版本的兩個比較大的功能。第一個是 MLFlow 的一個功能設計,然後 MLFlow 這一次功能其實比較大的一個特性是增加了那個實驗工作流的一個功能。然後這一塊工作流其實我們是依賴於 DataSphere Studio 的一個工作流功能的。說我們所有的工作流數據其實是存在那個 DSS 的服務裏面。所以說如果是你要運行這一塊實驗的能力,你需要前期有一個 DSS 的一個準備環境,一個完整的環境。然後我們的 Rest API 會跟 DSS 再是進行一個交互,然後把它的工作流存儲在它的上面。然後實驗的工作流節點,它是會在這裏這邊有一個 AppConnector 的功能,每次 DSS 的 From Execution 執行的時候,就會去調到這一個第三方插件,然後這個第三方插件會來會再調這個服務,然後再去發起下面的一些任務配置。


然後往往下其實就是一個 Trainer Service 這一塊,其實是一個機器學習任務生命週期管理的一個服務,然後它會管理每一個任務,子任務的一個執行。然後它底下其實是對接的各類的存儲,然後再往下其實是一個隊列服務隊列其實每個任務它其實都會有一個入隊操作,入隊之後,會判斷節點的資源是否充足,然後根據情況發佈到不同的集羣上面,就根據資源的情況跟任務的類型。然後往下是一個 Job Controller,Job Controller 其實就是對接各類的 CRD Controller 然後再往下再去發出每一個Training Job 也就 K8S 的一個 job 類型的一個任務。然後整體的整體的服務其實就分爲這幾部分。然後這這一塊的主要功能其實就是我們可以支持到這一個整體的實驗工作流能力,然後可以把一些訓練節點做一個串聯,然後最後達到一個模型部署的一些能力。


Prophecis MLFlow功能設計

另外一塊就是剛纔說到那個 Experiment Tracing 的一個功能,這一塊就是實驗的一些追溯功能,我然後還有一塊就是剛纔講到的同時也是支持說在 DSS 裏面遷出這個遷出一個 Prophecis  的一節點,就一個 subflow 的一個功能。然後這裏針對於 dss 發佈功能其實也是做了適配跟對接的,到時大家可以看一下。


Prophecis Model Factory功能設計

然後第二塊比較大的更新是 Model Factory 的這更新。然後先講一下這一塊整體的一個架構模型工廠,它整體的整整體的架構。其實中間這兩部分,一個是 MF-Server 還有一個是 MF-Controller 到這裏其實這裏相當於是一個 server 然後他去他去調他這裏有一個 Seldon Core 的一個 CRD cron 對 cron goal 做了一個封裝,然後去調他這裏去 deferral 一些 CRD 的對象核心服務其實就是這兩一塊。然後上層這裏其實是 Prophecis 的一個統一的標準,所有的一些資源都是通過 Control Center 的一個 geteway 讀進來,然後在這裏做一些鑑權的判斷,然後最後再到這裏的 MF-Server 然後 MF- Server 這一塊我們其實主要是分爲三個模塊來做的,一個是模型存儲,還有一個是模型發佈,還有一個是模型解釋。


然後上面這兩塊目前是比較完善,說模型存儲有一個基本可用的一個模型存儲功能,然後還有一個是模型發佈,這也是隻主要做一些鏡像的構建,還有把它發佈成一些測試服務,或者說把鏡像推送到生產的一些功能。然後像底層同一些模型,我們是存儲在那個 IO 裏,就是一個對象存儲,然後還有還有另外一個塊依賴,就是剛纔說到的 Istio 安裝這塊主要是因爲 Seldon Core 的一個 Seldon Core 這一塊,它是依賴 Istio 它一些流量需要通過 Istio 去導進來,還有它的一些轉發規則也是通過 Istio 去做一個構建。然後剩餘的就是一些底層的環境,就是 K8S 的一些底層環境,還有些 Docker 這些底層環境。所以大致架構其實這樣子。


Prophecis Model Factory 模型部署模塊

接着講剛纔的那功能的一些細節。比方說我講一下模型部署這一塊,說我們核心設置一個 MF-Server 。然後另外一塊是一個 Seldoon Operater 它這裏這個 reserver 它這個它會有一個封裝的 K8S 的一個 client 一個 USDK 然後它可以去調這一個 CRD 的 creator 然後再去做一個 CRD 的發佈。然後發佈發佈的時候它就是以一個 CRD 的形式作爲發佈,然後每個每個 CRD 對象它最後形成的其實是這種形式。它每一個 POD 它首先會有一個模型服務,然後另外一邊會有個 in Envoy 的流量的一個管控。這一塊其實就是 Istio 它去起的 decide 的模式去起一個 Envoy 每個模型服務它都是以這樣的一個形式,然後最最終最終流量流進來的時候,它會可以以 SCP 或者是 urpc 的形式。他是先經過一從 Istio 的網關,然後做一個轉發。然後我們這裏還做了一層,給他加了一個過濾過濾器的一個功能,就是請求的時候他先導到這個 Envoy 裏面,然後我們會去做一個鑑權,然後再給他再允許他去訪問這個模型服務。


Prophecis Model Factory鏡像構建模塊

這一塊是模型部署的一個鏈路,然後另外一塊是模型工廠的一個鏡像構建的一個鏈路,還是從這個 ML-Server。它其實底層的話它其實就是執行了一個 Doker build 操作。這裏底下會有兩它會冒兩個東西,一個是 Docker Client 然後還有一個是 DockerFile 的一個 ConfigMap 就類似於右下角它有一個 Docker file 然後每一次每一次發起一個鏡像。構建的時候,它其實就執行了一個 Docker build 一個流程,然後他會跟這個 Docker File 方案了,然後去構建這個鏡像,然後他的物料會從那個對象存儲裏面去拉下來,然後完成後再把它推送到自己的倉庫裏。

最終這個鏡像可以在 Model Factory 上面直接部署,當然也可以直接把它 pull 下來做一個部署。對,這一塊的這一塊底層的這個服務其實也是Seldon Core 的一個封裝的一個包,它有個 Micro Service 然後它這底層是一個 Python 的一個 web 這個的一個服務。然後它可以提供 http 的一些相關的服務調用行後。


後續版本計劃

然後下面就是後期版本的計劃。

因爲本次發佈的是相對來說比較功能大的一個版本,所以後繼版本我們暫時是以功能優化跟優化爲主。比方說 MLFloq Tracing 的話,目前其實我們只是做到把這個模塊嵌進來,它一些接口鑑權還有一些接口限制,其實還需要再繼續做一個完善。我們準備是在 Control Center 裏面做一下這一塊的 URL 的限制,就限制他一些功能。然後另外那塊還有一個隊列服務的功能,就是我們任務隊列還有任務發佈邏輯,這一塊還需要做進一步的一些優化。對後後繼暫時,我們以優化爲主,暫時版本計劃是這樣子。

在未來社區會繼續優化 prophecis 在業務系統中的應用,也期待和大家交流經驗。 

備註說明:
1、 參與社區提問的開發者 ,請掃碼添加小助手,可以獲得社區定製的開源精美禮品一份;
2、公衆號後臺回覆四大組件獲取講師分享材料
3、點擊“閱讀原文可查看完整視頻
掃碼添加WeDataSphere小助手



參與社區貢獻的方式

(1)新手任務:認領入門任務,詳見https://github.com/apache/incubator-Linkis/issues/1161

(2)作品沉澱:發佈WeDataSphere開源組建相關內容,包括但不限於安裝部署教程、使用經驗、案例實踐等,形式不限,請投稿給小助手。如:

(3)貢獻代碼:PR和Issue;

(4)答疑:熱心爲開發者答疑,如社區羣回答開發者問題、issue答疑等;

(5)其他:沙箱體驗、參與活動、成爲社區志願者等;





本文分享自微信公衆號 - WeDataSphere(gh_273e85fce73b)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章