[机器学习] PMML实现模型上线
機器學(xué)習(xí)在用于產(chǎn)品的時候,經(jīng)常會遇到跨平臺的問題。
比如用Python基于一系列的機器學(xué)習(xí)庫訓(xùn)練了一個模型,但是有時候其他的產(chǎn)品和項目想把這個模型集成進(jìn)去,但是這些產(chǎn)品很多只支持某些特定的生產(chǎn)環(huán)境比如Java,為了上一個機器學(xué)習(xí)模型去大動干戈修改環(huán)境配置很不劃算,此時我們就可以考慮用預(yù)測模型標(biāo)記語言(Predictive Model Markup Language,以下簡稱PMML)來實現(xiàn)跨平臺的機器學(xué)習(xí)模型部署。
?
一. PMML概述
PMML是數(shù)據(jù)挖掘的一種通用的規(guī)范,它用統(tǒng)一的XML格式來描述我們生成的機器學(xué)習(xí)模型。這樣無論你的模型是sklearn,R還是Spark MLlib生成的,我們都可以將其轉(zhuǎn)化為標(biāo)準(zhǔn)的XML格式來存儲。當(dāng)我們需要將這個PMML的模型用于部署的時候,可以使用目標(biāo)環(huán)境的解析PMML模型的庫來加載模型,并做預(yù)測。
可以看出,要使用PMML,需要兩步的工作,都需要相關(guān)的庫支持。
?
二. PMML模型的生成和加載相關(guān)類庫
大部分模型都可以用PMML的方式實現(xiàn)
- jpmml的說明文檔:GitHub - jpmml/jpmml-evaluator: Java Evaluator API for PMML
- Jpmml支持的轉(zhuǎn)換語言,主流的機器學(xué)習(xí)語言都支持了;
- 從下圖可以看到,它支持R、python和spark、xgboost、lightgbm等模型的轉(zhuǎn)換,用起來非常方便;
?
三、工具的工程實踐:
1. Python模型上線,使用了模型轉(zhuǎn)換成PMML上線方法
如果我們使用的是sklearn,那么可以使用sklearn2pmml這個python庫來做模型文件的生成,這個庫安裝很簡單,使用"pip install sklearn2pmml"即可。python-sklearn里面的模型都支持,也支持xgboost,并且PCA,歸一化可以封裝成preprocess轉(zhuǎn)換成PMML,所以調(diào)用起來很方便。特別需要注意的是:缺失值的處理會影響到預(yù)測結(jié)果,大家可以可以看一下, 用PMML方式預(yù)測,模型預(yù)測一條記錄速度是1ms,可以用這個預(yù)測來預(yù)估一下根據(jù)你的數(shù)據(jù)量,整體的速度有多少
2. 如果使用的是Spark MLlib, 這個庫有一些模型已經(jīng)自帶了保存PMML模型的方法,可惜并不全。如果是R,則需要安裝包"XML"和“PMML”。此外,JAVA庫JPMML可以用來生成R,SparkMLlib,xgBoost,Sklearn的模型對應(yīng)的PMML文件。github地址是:https://github.com/jpmml/jpmml。加載PMML模型需要目標(biāo)環(huán)境支持PMML加載的庫,如果是JAVA,則可以用JPMML來加載PMML模型文件。
?
?
?
?
https://zhuanlan.zhihu.com/p/39021238
?
?
總結(jié)
以上是生活随笔為你收集整理的[机器学习] PMML实现模型上线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的世界木质别墅怎么做
- 下一篇: [数据处理] Pandas利用group