目錄
- DaaS介紹
- PMML簡(jiǎn)介
- 模型部署準(zhǔn)備
- 部署實(shí)時(shí)預(yù)測(cè)Web服務(wù)
- 部署自定義實(shí)時(shí)預(yù)測(cè)Web服務(wù)
- 部署離線批量預(yù)測(cè)任務(wù)服務(wù)
- 部署模型評(píng)估任務(wù)服務(wù)
- 總結(jié)
- 參考
DaaS介紹
DaaS(Deployment-as-a-Service)是AutoDeployAI公司推出的AI模型自動(dòng)部署系統(tǒng)莹弊,支持PMML叔收,Scikit-learn狈谊,XGBoost,LightGBM,Spark以及主流深度學(xué)習(xí)ONNX,Keras,TensorFlow备燃,Pytorch,MxNet等多種模型的部署凌唬。
DaaS基于Kubernetes構(gòu)建并齐,提供可靠和可擴(kuò)展的模型部署服務(wù),彈性部署用戶AI和ML解決方案到生產(chǎn)環(huán)境中客税。用戶可以自由選擇在公有云或私有云的Kubernetes上安裝DaaS系統(tǒng)况褪,以滿足用戶對(duì)AI部署的多樣需求。本文中的DaaS演示系統(tǒng)部署在本地的Minikube上更耻。
DaaS設(shè)計(jì)框架:
PMML簡(jiǎn)介
PMML是一套與平臺(tái)和環(huán)境無(wú)關(guān)的AI模型序列化標(biāo)準(zhǔn)测垛,為模型的跨平臺(tái)部署提供了基礎(chǔ),簡(jiǎn)化了部署流程秧均,可實(shí)現(xiàn)模型的快速上線食侮。關(guān)于PMML的詳細(xì)信息,可以參考文章《使用PMML部署機(jī)器學(xué)習(xí)模型》目胡。
模型部署準(zhǔn)備
DaaS系統(tǒng)提供多種模型部署方式锯七,下面,我們演示在DaaS系統(tǒng)中如何部署模型誉己,生成Web服務(wù)眉尸;如何通過(guò)REST API測(cè)試Web服務(wù);以及如何部署任務(wù)來(lái)執(zhí)行批量離線預(yù)測(cè)和模型評(píng)估操作巫延。
在部署模型之前效五,我們需要完成以下操作:
-
打開(kāi)瀏覽器地消,登陸DaaS系統(tǒng)炉峰。
DaaS-login -
創(chuàng)建項(xiàng)目。登陸成功后脉执,進(jìn)入項(xiàng)目列表頁(yè)疼阔,點(diǎn)擊
新建項(xiàng)目
。DaaS-projectsDaaS使用項(xiàng)目來(lái)管理用戶的不同分析任務(wù)。項(xiàng)目中可以包含模型婆廊、部署迅细、程序腳本、數(shù)據(jù)淘邻、數(shù)據(jù)源等多種分析資產(chǎn)茵典。
DaaS-new-project -
導(dǎo)入模型。項(xiàng)目創(chuàng)建成功后宾舅,進(jìn)入項(xiàng)目主頁(yè)(儀表盤)统阿,切換到
模型
標(biāo)簽頁(yè),點(diǎn)擊命令導(dǎo)入模型
筹我。DaaS-models選擇要部署的PMML模型文件扶平,點(diǎn)擊此處可下載當(dāng)前使用的PMML模型
xgb-iris.pmml
。在該流程中蔬蕊,首先會(huì)對(duì)模型進(jìn)行驗(yàn)證结澄,如果模型不是一個(gè)有效的PMML,會(huì)導(dǎo)致添加失敗岸夯,DaaS將返回錯(cuò)誤信息麻献。DaaS-import-model -
模型概述。PMML導(dǎo)入成功后猜扮,進(jìn)入模型主頁(yè)(
概述
)赎瑰,顯示了模型的基本信息,比如輸入和目標(biāo)變量破镰、模型類型餐曼、使用算法、運(yùn)行引擎等鲜漩。DaaS-model-overview -
測(cè)試模型源譬。切換到
測(cè)試
標(biāo)簽頁(yè),通過(guò)表單輸入數(shù)據(jù)或者點(diǎn)擊JSON
命令直接輸入JSON格式的數(shù)據(jù)孕似,然后點(diǎn)擊提交
命令踩娘,等待預(yù)測(cè)結(jié)果的返回。DaaS-model-test
部署實(shí)時(shí)預(yù)測(cè)Web服務(wù)
-
添加Web服務(wù)喉祭。當(dāng)模型測(cè)試成功后养渴,切換到
部署
標(biāo)簽頁(yè),點(diǎn)擊命令添加服務(wù)
泛烙。DaaS-model-deployments這里有幾個(gè)重要的部署選項(xiàng):
- 模型版本:當(dāng)前模型只有一個(gè)版本理卑,選擇版本1。
- 網(wǎng)絡(luò)服務(wù)運(yùn)行環(huán)境:指定模型部署運(yùn)行的docker環(huán)境蔽氨,DaaS默認(rèn)包含兩個(gè)網(wǎng)絡(luò)部署環(huán)境分別針對(duì)Python 2.7和Python 3.7藐唠,每個(gè)環(huán)境都已經(jīng)安裝了以上常用模型庫(kù)帆疟。我們可以在項(xiàng)目的
運(yùn)行時(shí)定義
中查看系統(tǒng)中包含的運(yùn)行時(shí)定義,DaaS允許用戶添加自定義運(yùn)行環(huán)境宇立。這里選擇Python 3.7 - Function as a Service
踪宠。 - 預(yù)留CPU和預(yù)留內(nèi)存:為了降低系統(tǒng)的不穩(wěn)定風(fēng)險(xiǎn),用戶可以選擇為部署分配指定的CPU核數(shù)和內(nèi)存量妈嘹。
-
副本:提供Web服務(wù)的負(fù)載均衡柳琢。默認(rèn)為1。
DaaS-add-service
-
測(cè)試Web服務(wù)润脸。部署創(chuàng)建成功后染厅,進(jìn)入部署頁(yè)面(
概述
),可以看到一個(gè)副本津函,狀態(tài)是啟動(dòng)中
肖粮,等待狀態(tài)變成運(yùn)行中
后,該部署才算創(chuàng)建完成尔苦。這時(shí)候就可以接受預(yù)測(cè)請(qǐng)求涩馆。切換到測(cè)試
標(biāo)簽頁(yè),在請(qǐng)求正文中輸入測(cè)試數(shù)據(jù)允坚,測(cè)試該服務(wù)魂那。DaaS-web-service-testDaaS為部署服務(wù)提供標(biāo)準(zhǔn)的REST API,可以通過(guò)任意REST客戶端來(lái)調(diào)用稠项,方便生產(chǎn)環(huán)境的集成涯雅。點(diǎn)擊
生成代碼
命令,會(huì)生成通過(guò)curl調(diào)用REST API的命令參數(shù)展运。DaaS-web-service-generrate-code復(fù)制完整命令活逆,在Shell中執(zhí)行:
DaaS-run-generrate-code-web-service返回DaaS,切換到部署
模型
標(biāo)簽頁(yè)拗胜。指標(biāo)
頁(yè)面顯示W(wǎng)eb服務(wù)性能指標(biāo):執(zhí)行次數(shù)蔗候、平均響應(yīng)時(shí)間、最大最小時(shí)間等埂软∧穑可以看到寻狂,我們執(zhí)行了二次調(diào)用:第一次通過(guò)DaaS部署測(cè)試界面,第二次通過(guò)在Shell中執(zhí)行curl命令驹止。一般來(lái)說(shuō)魔熏,第一次調(diào)用是要慢一些甲捏,后面就會(huì)快很多磕蛇。DaaS-web-service-overview
部署自定義實(shí)時(shí)預(yù)測(cè)Web服務(wù)
以上流程生成的是默認(rèn)實(shí)時(shí)預(yù)測(cè)部署命锄,只是調(diào)用模型本身進(jìn)行預(yù)測(cè)。如果部署的Web服務(wù)需要執(zhí)行一些額外的操作诉字,比如增加數(shù)據(jù)的預(yù)處理功能懦尝。這時(shí)候我們可以使用DaaS提供的自定義實(shí)時(shí)預(yù)測(cè)功能:
-
打開(kāi)模型主頁(yè),切換到
實(shí)時(shí)預(yù)測(cè)
標(biāo)簽頁(yè)壤圃,點(diǎn)擊生成自定義實(shí)時(shí)預(yù)測(cè)腳本
命令陵霉。DaaS-generate-custom-scoringDaaS的Web服務(wù)部署功能是基于函數(shù)即服務(wù)實(shí)現(xiàn)的,我們可以在腳本的
prepare
函數(shù)中添加自定義的數(shù)據(jù)預(yù)處理操作伍绳。比如給每一個(gè)輸入變量值增加0.2踊挠,完成后,點(diǎn)擊右下方命令作為API測(cè)試
冲杀,來(lái)測(cè)試輸入的自定義代碼是否按預(yù)期的工作效床。可以通過(guò)當(dāng)前的測(cè)試頁(yè)面來(lái)測(cè)試权谁,也可以通過(guò)測(cè)試REST API來(lái)進(jìn)行剩檀。DaaS-custom-scoring-test -
測(cè)試完成后,切換到
部署
標(biāo)簽頁(yè)旺芽,點(diǎn)擊添加網(wǎng)絡(luò)服務(wù)
沪猴,為該腳本生成正式的Web服務(wù)。后續(xù)操作與以上流程1采章、2相同运嗜。DaaS-custom-scoring-deployments
部署離線批量預(yù)測(cè)任務(wù)服務(wù)
除了部署網(wǎng)絡(luò)(Web)服務(wù),DaaS還支持部署任務(wù)(Job)悯舟,在任務(wù)部署中我們可以完成一些模型相關(guān)的操作担租,比如批量預(yù)測(cè),模型評(píng)估等抵怎。下面我們首先看一下如何部署模型批量預(yù)測(cè)任務(wù)奋救。
-
導(dǎo)入數(shù)據(jù)。首先反惕,返回工程頁(yè)面菠镇,切換到
數(shù)據(jù)集
標(biāo)簽頁(yè),點(diǎn)擊添加數(shù)據(jù)集
命令承璃。
DaaS-datasets-emptyDaaS支持添加本地文件和遠(yuǎn)程數(shù)據(jù)利耍,遠(yuǎn)程數(shù)據(jù)支持多種數(shù)據(jù)源(HDFS以及常用關(guān)系數(shù)據(jù)數(shù)庫(kù)等)。當(dāng)前我們添加一個(gè)本地CSV文件盔粹。
DaaS-add-dataset -
生成批預(yù)測(cè)腳本隘梨。打開(kāi)模型頁(yè)面,切換到
批量預(yù)測(cè)
標(biāo)簽舷嗡,選擇添加CSV文件iris.csv
作為輸入數(shù)據(jù)集轴猎,輸入輸出的數(shù)據(jù)集仍為本地文件iris-batch-scoring.csv
。點(diǎn)擊生成批預(yù)測(cè)腳本
命令进萄。DaaS-generate-batch-scoring -
設(shè)置任務(wù)屬性捻脖。腳本成功后锐峭,點(diǎn)擊
高級(jí)設(shè)置
命令,彈出設(shè)置對(duì)話框可婶,有幾個(gè)重要的參數(shù):- 任務(wù)運(yùn)行環(huán)境:執(zhí)行該腳本任務(wù)的docker環(huán)境沿癞,和Web服務(wù)運(yùn)行環(huán)境類似,DaaS默認(rèn)包含兩個(gè)任務(wù)部署環(huán)境分別針對(duì)Python 2.7和Python 3.7矛渴,每個(gè)環(huán)境都已經(jīng)安裝了以上常用模型庫(kù)椎扬。我們可以在項(xiàng)目的
運(yùn)行時(shí)定義
中查看系統(tǒng)中包含的運(yùn)行環(huán)境定義,允許用戶添加自定義運(yùn)行環(huán)境具温。這里默認(rèn)選擇Python 3.7 - Script as a Service
蚕涤。 - 環(huán)境變量和命令參數(shù):設(shè)置執(zhí)行腳本的系統(tǒng)環(huán)境變量和命令行參數(shù),默認(rèn)是空铣猩。
- 調(diào)度:設(shè)置任務(wù)執(zhí)行調(diào)度揖铜,可以按需或者按計(jì)劃,比如每天幾時(shí)執(zhí)行該任務(wù)达皿。默認(rèn)
按需
蛮位。
DaaS-job-settings - 任務(wù)運(yùn)行環(huán)境:執(zhí)行該腳本任務(wù)的docker環(huán)境沿癞,和Web服務(wù)運(yùn)行環(huán)境類似,DaaS默認(rèn)包含兩個(gè)任務(wù)部署環(huán)境分別針對(duì)Python 2.7和Python 3.7矛渴,每個(gè)環(huán)境都已經(jīng)安裝了以上常用模型庫(kù)椎扬。我們可以在項(xiàng)目的
-
任務(wù)部署。腳本成功后鳞绕,點(diǎn)擊
立即執(zhí)行
命令失仁。DaaS會(huì)自動(dòng)部署任務(wù),并且立刻運(yùn)行一次該任務(wù)们何。頁(yè)面自動(dòng)轉(zhuǎn)移到任務(wù)部署界面萄焦,我們可以看到現(xiàn)在正在執(zhí)行的一次運(yùn)行操作。DaaS-job -
查看結(jié)果冤竹。當(dāng)執(zhí)行狀態(tài)由
啟動(dòng)中
和運(yùn)行中
變成成功
后拂封,返回到項(xiàng)目界面,切換到數(shù)據(jù)集
標(biāo)簽頁(yè)鹦蠕,可以看到多了一項(xiàng)新生成的數(shù)據(jù)文件iris-batch-scoring.csv
冒签,包含模型批量預(yù)測(cè)結(jié)果。在操作
菜單下钟病,可以選擇預(yù)覽或者下載該數(shù)據(jù)萧恕。DaaS-datasets -
再次執(zhí)行該任務(wù)。返回到任務(wù)部署頁(yè)面肠阱,切換到
測(cè)試
標(biāo)簽頁(yè)票唆,同Web服務(wù)部署類似,可以在該頁(yè)面或者通過(guò)REST API執(zhí)行相關(guān)操作屹徘,對(duì)于任務(wù)操作走趋,主要包含以下命令:- 執(zhí)行任務(wù):輸入可選的環(huán)境變量和命令參數(shù)。
- 獲取某次執(zhí)行的狀態(tài):必須提供該執(zhí)行的ID
- 停止某次執(zhí)行:同上噪伊,必須提供該執(zhí)行的ID
DaaS-job-test點(diǎn)擊
生成代碼
命令簿煌,同樣提供可執(zhí)行的curl命令調(diào)用對(duì)應(yīng)的REST API氮唯,在Shell中運(yùn)行執(zhí)行任務(wù)
:DaaS-run-generate-code-job
部署模型評(píng)估任務(wù)服務(wù):
導(dǎo)入數(shù)據(jù)。仍然使用批量預(yù)測(cè)添加的本地CSV文件
iris.csv
姨伟。-
生成模型評(píng)估腳本惩琉。打開(kāi)模型頁(yè)面,切換到
模型評(píng)估
標(biāo)簽頁(yè)授滓,選擇該CSV文件為輸入數(shù)據(jù)集琳水,選擇評(píng)估指標(biāo)Accuracy Score
肆糕,評(píng)估閥值使用默認(rèn)的[0.3, 0.7]般堆。點(diǎn)擊生成模型評(píng)估腳本
命令。DaaS-generate-model-evaluation 設(shè)置任務(wù)屬性诚啃。參考以上流程3
任務(wù)部署淮摔。參考以上流程4
-
查看結(jié)果。當(dāng)執(zhí)行狀態(tài)由
運(yùn)行中
變成成功
后始赎,返回到模型界面(概述)和橙,查看評(píng)估結(jié)果
,第一項(xiàng)就是最新的模型評(píng)估結(jié)果造垛。DaaS-model-overview-evaluation 再次執(zhí)行該任務(wù)魔招。參考以上流程6
總結(jié)
通過(guò)以上的演示,我們可以看到五辽,DaaS作為一個(gè)通用AI模型管理部署平臺(tái)办斑,具有很大的靈活性和可擴(kuò)展性,能滿足用戶的各種自定義部署需求杆逗。
參考
AutoDeployAI官網(wǎng):https://www.autodeploy.ai/