PMML
EAS內(nèi)置的PMML Processor,支持將PMML格式的模型部署成在線服務(wù),并提供在線實(shí)時(shí)推理。本文為您介紹如何部署及調(diào)用PMML模型服務(wù)。
背景信息
在Designer上導(dǎo)出的PMML格式的算法模型,可以使用PMML Processor部署到EAS中;使用Sklearn、Xgboost等開源算法框架訓(xùn)練的算法模型,轉(zhuǎn)換成PMML格式后,也可以使用PMML Processor部署到EAS中,詳情請(qǐng)參見通用模型導(dǎo)出。
更多關(guān)于PMML模型的介紹,詳情請(qǐng)參見PMML模型介紹。
缺失值填充策略
PMML Processor提供默認(rèn)的缺失值填充策略。如果PMML模型文件中的特征字段沒有指定缺失值填充(isMissing)策略,則系統(tǒng)默認(rèn)以如下值進(jìn)行填充。
數(shù)據(jù)類型 | 默認(rèn)值填充 |
BOOLEAN | false |
DOUBLE | 0.0 |
FLOAT | 0.0 |
INT | 0 |
STRING | "" |
步驟一:部署服務(wù)
使用eascmd客戶端部署PMML模型服務(wù)時(shí),您需要指定Processor種類為pmml,服務(wù)配置文件示例如下。
{
"name": "eas_lr_example",
"processor": "pmml",
"model_path": "http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr.pmml",
"metadata": {
"instance": 1,
"cpu": 1
}
}
關(guān)于如何使用eascmd客戶端工具部署服務(wù),詳情請(qǐng)參見服務(wù)部署:EASCMD或DSW。
您也可以通過控制臺(tái)部署PMML模型服務(wù),詳情請(qǐng)參見服務(wù)部署:控制臺(tái)。
步驟二:調(diào)用服務(wù)
參考以下步驟進(jìn)行服務(wù)調(diào)用。
PMML服務(wù)部署完成后,在模型在線服務(wù)(EAS)頁面,單擊待調(diào)用服務(wù)服務(wù)方式列下的調(diào)用信息,查看服務(wù)訪問的Endpoint和用于服務(wù)鑒權(quán)的Token信息。
構(gòu)造服務(wù)請(qǐng)求。
PMML服務(wù)的輸入輸出格式為JSON格式的純文件,一次請(qǐng)求支持多條樣本輸入,每條樣本為KV格式的特征數(shù)據(jù),示例如下。
[ { "address": 12, "age": 22, "ed": 4, "marital": 3.0, "region": 2.0, "tenure": 4.0 }, { "address": 2, "age": 34, "ed": 6, "marital": 1.3, "region": 2.1, "tenure": 4.2 } ]
說明實(shí)際發(fā)送服務(wù)請(qǐng)求時(shí),可以去除JSON文件中的換行和空格,以減小網(wǎng)絡(luò)傳輸,提升服務(wù)性能。
發(fā)送服務(wù)請(qǐng)求。
支持以下兩種方式:
重要直接通過HTTP Header傳入,會(huì)使Token在網(wǎng)絡(luò)中以明文方式傳輸;使用EAS提供的SDK,會(huì)使用Token對(duì)請(qǐng)求做簽名后再發(fā)送,安全性更高。
使用curl命令對(duì)服務(wù)進(jìn)行快速請(qǐng)求測(cè)試。
服務(wù)提供HTTP訪問入口,發(fā)送請(qǐng)求時(shí),可以將鑒權(quán)Token直接通過HTTP Header傳入,示例如下。
// 發(fā)送請(qǐng)求。 curl -v 18284888792***.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml_test \ -H 'Authorization: YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA***' \ -d '[{"region": 2.0, "marital":3.0,"tenure":4.0, "age":22,"address":12,"ed":4},{"region": 2.1, "marital":1.3,"tenure":4.2, "age":34,"address":2,"ed":6}]'
其中:
18284888792***.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml_test:替換為步驟1查詢的服務(wù)訪問的Endpoint。
Authorization:配置為步驟1查詢的用于服務(wù)鑒權(quán)的Token信息。
返回結(jié)果示例如下。
[{"p_0":0.2856724025030001,"p_1":0.7143275974969999},{"p_0":0.18324957921381624,"p_1":0.8167504207861838}]
使用Python SDK發(fā)送請(qǐng)求,詳情請(qǐng)參見Python SDK使用說明。
示例代碼如下。
#!/usr/bin/env python from eas_prediction import PredictClient from eas_prediction import StringRequest if __name__ == '__main__': # 替換為步驟1查詢的服務(wù)訪問的Endpoint和服務(wù)名稱。 client = PredictClient('1828488879222***.cn-shanghai.pai-eas.aliyuncs.com', 'pmml_test') # 替換為步驟1查詢的用于服務(wù)鑒權(quán)的Token信息。 client.set_token('YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA***') client.init() req = StringRequest('[{"region": 2.0, "marital":3.0,"tenure":4.0, "age":22,"address":12,"ed":4},{"region": 2.1, "marital":1.3,"tenure":4.2, "age":34,"address":2,"ed":6}]') for x in range(100): resp = client.predict(req) print(resp)
其他語言客戶端SDK使用說明,詳情請(qǐng)參見服務(wù)調(diào)用SDK。
相關(guān)文檔
您也可以使用其他預(yù)置Processor部署EAS在線服務(wù),詳情請(qǐng)參見服務(wù)部署:預(yù)置Processor。
您也可以開發(fā)自定義Processor,使用自定義Processor部署EAS在線服務(wù),詳情請(qǐng)參見服務(wù)部署:自定義Processor。