自動(dòng)部署PMML模型生成REST API

目錄

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ì)框架:

DaaS-design

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)估操作巫延。

在部署模型之前效五,我們需要完成以下操作:

  1. 打開(kāi)瀏覽器地消,登陸DaaS系統(tǒng)炉峰。

    DaaS-login
  2. 創(chuàng)建項(xiàng)目。登陸成功后脉执,進(jìn)入項(xiàng)目列表頁(yè)疼阔,點(diǎn)擊新建項(xiàng)目

    DaaS-projects

    DaaS使用項(xiàng)目來(lái)管理用戶的不同分析任務(wù)。項(xiàng)目中可以包含模型婆廊、部署迅细、程序腳本、數(shù)據(jù)淘邻、數(shù)據(jù)源等多種分析資產(chǎn)茵典。

    DaaS-new-project
  3. 導(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
  4. 模型概述。PMML導(dǎo)入成功后猜扮,進(jìn)入模型主頁(yè)(概述)赎瑰,顯示了模型的基本信息,比如輸入和目標(biāo)變量破镰、模型類型餐曼、使用算法、運(yùn)行引擎等鲜漩。

    DaaS-model-overview
  5. 測(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ù)

  1. 添加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
  2. 測(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-test

    DaaS為部署服務(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è)功能:

  1. 打開(kāi)模型主頁(yè),切換到實(shí)時(shí)預(yù)測(cè)標(biāo)簽頁(yè)壤圃,點(diǎn)擊生成自定義實(shí)時(shí)預(yù)測(cè)腳本命令陵霉。

    DaaS-generate-custom-scoring

    DaaS的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
  2. 測(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ù)奋救。

  1. 導(dǎo)入數(shù)據(jù)。首先反惕,返回工程頁(yè)面菠镇,切換到數(shù)據(jù)集標(biāo)簽頁(yè),點(diǎn)擊添加數(shù)據(jù)集命令承璃。

    DaaS-datasets-empty

    DaaS支持添加本地文件和遠(yuǎn)程數(shù)據(jù)利耍,遠(yuǎn)程數(shù)據(jù)支持多種數(shù)據(jù)源(HDFS以及常用關(guān)系數(shù)據(jù)數(shù)庫(kù)等)。當(dāng)前我們添加一個(gè)本地CSV文件盔粹。

    DaaS-add-dataset
  2. 生成批預(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
  3. 設(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
  4. 任務(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
  5. 查看結(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
  6. 再次執(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ù):

  1. 導(dǎo)入數(shù)據(jù)。仍然使用批量預(yù)測(cè)添加的本地CSV文件iris.csv姨伟。

  2. 生成模型評(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
  3. 設(shè)置任務(wù)屬性诚啃。參考以上流程3

  4. 任務(wù)部署淮摔。參考以上流程4

  5. 查看結(jié)果。當(dāng)執(zhí)行狀態(tài)由運(yùn)行中變成成功后始赎,返回到模型界面(概述)和橙,查看評(píng)估結(jié)果,第一項(xiàng)就是最新的模型評(píng)估結(jié)果造垛。

    DaaS-model-overview-evaluation
  6. 再次執(zhí)行該任務(wù)魔招。參考以上流程6

總結(jié)

通過(guò)以上的演示,我們可以看到五辽,DaaS作為一個(gè)通用AI模型管理部署平臺(tái)办斑,具有很大的靈活性和可擴(kuò)展性,能滿足用戶的各種自定義部署需求杆逗。

參考

AutoDeployAI官網(wǎng):https://www.autodeploy.ai/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乡翅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子罪郊,更是在濱河造成了極大的恐慌蠕蚜,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悔橄,死亡現(xiàn)場(chǎng)離奇詭異靶累,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)癣疟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門尺铣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人争舞,你說(shuō)我怎么就攤上這事凛忿。” “怎么了竞川?”我有些...
    開(kāi)封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵店溢,是天一觀的道長(zhǎng)叁熔。 經(jīng)常有香客問(wèn)我,道長(zhǎng)床牧,這世上最難降的妖魔是什么荣回? 我笑而不...
    開(kāi)封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮戈咳,結(jié)果婚禮上心软,老公的妹妹穿的比我還像新娘。我一直安慰自己著蛙,他們只是感情好删铃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著踏堡,像睡著了一般猎唁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顷蟆,一...
    開(kāi)封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天诫隅,我揣著相機(jī)與錄音,去河邊找鬼帐偎。 笑死逐纬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的削樊。 我是一名探鬼主播豁生,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嫉父!你這毒婦竟也來(lái)了沛硅?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤绕辖,失蹤者是張志新(化名)和其女友劉穎摇肌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仪际,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡围小,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了树碱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肯适。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖成榜,靈堂內(nèi)的尸體忽然破棺而出框舔,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布刘绣,位于F島的核電站樱溉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏纬凤。R本人自食惡果不足惜福贞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望停士。 院中可真熱鬧挖帘,春花似錦、人聲如沸恋技。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)猖任。三九已至你稚,卻和暖如春瓷耙,著一層夾襖步出監(jiān)牢的瞬間朱躺,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工搁痛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留长搀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓鸡典,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親彻况。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谁尸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354