[機器學習] PMML實現模型上線

機器學習在用於產品的時候,經常會遇到跨平臺的問題。

比如用Python基於一系列的機器學習庫訓練了一個模型,但是有時候其他的產品和項目想把這個模型集成進去,但是這些產品很多隻支持某些特定的生產環境比如Java,爲了上一個機器學習模型去大動干戈修改環境配置很不划算,此時我們就可以考慮用預測模型標記語言(Predictive Model Markup Language,以下簡稱PMML)來實現跨平臺的機器學習模型部署。

 

一. PMML概述

PMML是數據挖掘的一種通用的規範,它用統一的XML格式來描述我們生成的機器學習模型。這樣無論你的模型是sklearn,R還是Spark MLlib生成的,我們都可以將其轉化爲標準的XML格式來存儲。當我們需要將這個PMML的模型用於部署的時候,可以使用目標環境的解析PMML模型的庫來加載模型,並做預測。

可以看出,要使用PMML,需要兩步的工作,都需要相關的庫支持。

  1. 將離線訓練得到的模型轉化爲PMML模型文件
  2. 將PMML模型文件載入在線預測環境,進行預測

 

二. PMML模型的生成和加載相關類庫

大部分模型都可以用PMML的方式實現


 

三、工具的工程實踐:

1. Python模型上線,使用了模型轉換成PMML上線方法

如果我們使用的是sklearn,那麼可以使用sklearn2pmml這個python庫來做模型文件的生成,這個庫安裝很簡單,使用"pip install sklearn2pmml"即可。python-sklearn裏面的模型都支持,也支持xgboost,並且PCA,歸一化可以封裝成preprocess轉換成PMML,所以調用起來很方便。特別需要注意的是:缺失值的處理會影響到預測結果,大家可以可以看一下, 用PMML方式預測,模型預測一條記錄速度是1ms,可以用這個預測來預估一下根據你的數據量,整體的速度有多少

2. 如果使用的是Spark MLlib, 這個庫有一些模型已經自帶了保存PMML模型的方法,可惜並不全。如果是R,則需要安裝包"XML"和“PMML”。此外,JAVA庫JPMML可以用來生成R,SparkMLlib,xgBoost,Sklearn的模型對應的PMML文件。github地址是:https://github.com/jpmml/jpmml。加載PMML模型需要目標環境支持PMML加載的庫,如果是JAVA,則可以用JPMML來加載PMML模型文件。

 

 

 

 

https://zhuanlan.zhihu.com/p/39021238

 

 

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