XGBoost/LightGBM
EAS內(nèi)置的GBDT Processor(包括XGBoost、LightGBM),支持將相應(yīng)格式的模型部署成在線服務(wù),并提供在線實(shí)時(shí)推理。本文為您介紹如何部署及調(diào)用GBDT模型服務(wù)。
背景信息
GBDT(Gradient Boosted Decision Trees)是一類機(jī)器學(xué)習(xí)算法,XGBoost和LightGBM是算法對(duì)應(yīng)的高效工程實(shí)現(xiàn)。
在Designer上,使用GBDT或XGBoost組件訓(xùn)練的算法模型導(dǎo)出成相應(yīng)格式,或您自己的模型均可部署到EAS中。
從Designer上導(dǎo)出的GBDT模型可以直接通過(guò)PMML的Processor來(lái)進(jìn)行部署,詳情請(qǐng)參見(jiàn)PMML。
步驟一:部署服務(wù)
使用eascmd客戶端部署模型服務(wù)時(shí),您需要指定processor為xgboost或lightgbm,服務(wù)配置文件示例如下:
{
"name": "gbdt_example",
"processor": "<processor類型>",
"model_path": "http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/xgb_model.json",
"metadata": {
"instance": 1,
"cpu": 1
}
}
其中:<processor類型>需要替換為xgboost或lightgbm。
當(dāng)模型較大時(shí),因模型編譯功能可能會(huì)占用比較大的內(nèi)存,建議您使用特定的自定義Processor進(jìn)行模型部署。服務(wù)配置文件示例如下:
{
"name": "gbdt_example",
"processor_type": "python",
"processor_path": "https://eas-data.oss-cn-shanghai.aliyuncs.com/processors/xgboost_processor_notreelite.tar.gz",
"processor_entry": "xgboost_inference.py",
"model_path": "http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/xgb_model.json",
"metadata": {
"instance": 1,
"cpu": 1
}
}
關(guān)于如何使用客戶端工具部署服務(wù),詳情請(qǐng)參見(jiàn)服務(wù)部署:EASCMD&DSW。
步驟二:調(diào)用服務(wù)
服務(wù)部署完成后,在模型在線服務(wù)(EAS)頁(yè)面,單擊待調(diào)用服務(wù)服務(wù)方式列下的調(diào)用信息,查看服務(wù)訪問(wèn)的Endpoint和用于服務(wù)鑒權(quán)的Token信息。參考以下步驟進(jìn)行服務(wù)調(diào)用。
構(gòu)造服務(wù)請(qǐng)求。
GBDT服務(wù)的輸入輸出格式為JSON格式的數(shù)組,一次請(qǐng)求支持多條樣本輸入,示例如下。
[ [14.87, 16.67, 98.64, 682.5, 0.1162, 0.1649, 0.169, 0.08923, 0.2157, 0.06768, 0.4266, 0.9489, 2.989, 41.18, 0.006985, 0.02563, 0.03011, 0.01271, 0.01602, 0.003884, 18.81, 27.37, 127.1, 1095.0, 0.1878, 0.448, 0.4704, 0.2027, 0.3585, 0.1065], [11.2, 29.37, 70.67, 386.0, 0.07449, 0.03558, 0.0, 0.0, 0.106, 0.05502, 0.3141, 3.896, 2.041, 22.81, 0.007594, 0.008878, 0.0, 0.0, 0.01989, 0.001773, 11.92, 38.3, 75.19, 439.6, 0.09267, 0.05494, 0.0, 0.0, 0.1566, 0.05905] ]
說(shuō)明實(shí)際發(fā)送服務(wù)請(qǐng)求時(shí),可以去除JSON文件中的換行和空格,以減小網(wǎng)絡(luò)傳輸,提升服務(wù)性能。
發(fā)送服務(wù)請(qǐng)求。
支持以下三種方式。
重要直接通過(guò)HTTP Header傳入,會(huì)使Token在網(wǎng)絡(luò)中以明文方式傳輸;使用EAS提供的SDK,會(huì)使用Token對(duì)請(qǐng)求做簽名后再發(fā)送,安全性更高。
通過(guò)在線調(diào)試發(fā)送服務(wù)請(qǐng)求。
在目標(biāo)服務(wù)的在線調(diào)試頁(yè)面,發(fā)送服務(wù)請(qǐng)求,詳情請(qǐng)參見(jiàn)服務(wù)在線調(diào)試。
使用curl命令對(duì)服務(wù)進(jìn)行快速請(qǐng)求測(cè)試。
服務(wù)提供HTTP訪問(wèn)入口,發(fā)送請(qǐng)求時(shí),可以將鑒權(quán)Token直接通過(guò)HTTP Header傳入,示例如下。
// 發(fā)送請(qǐng)求。 curl -v 18284888792***.cn-shanghai.pai-eas.aliyuncs.com/api/predict/eas_gbdt_example \ -H 'Authorization: YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA***' \ -d '[[14.87, 16.67, 98.64, 682.5, 0.1162, 0.1649, 0.169, 0.08923, 0.2157, 0.06768, 0.4266, 0.9489, 2.989, 41.18, 0.006985, 0.02563, 0.03011, 0.01271, 0.01602, 0.003884, 18.81, 27.37, 127.1, 1095.0, 0.1878, 0.448, 0.4704, 0.2027, 0.3585, 0.1065], [11.2, 29.37, 70.67, 386.0, 0.07449, 0.03558, 0.0, 0.0, 0.106, 0.05502, 0.3141, 3.896, 2.041, 22.81, 0.007594, 0.008878, 0.0, 0.0, 0.01989, 0.001773, 11.92, 38.3, 75.19, 439.6, 0.09267, 0.05494, 0.0, 0.0, 0.1566, 0.05905]]' // 返回如下結(jié)果。 [[0.0004703899612650275, 0.9877758026123047]]
使用Python SDK發(fā)送請(qǐng)求,詳情請(qǐng)參見(jiàn)Python SDK使用說(shuō)明。
示例代碼如下。
#!/usr/bin/env python from eas_prediction import PredictClient from eas_prediction import StringRequest if __name__ == '__main__': client = PredictClient('1828488879222***.cn-shanghai.pai-eas.aliyuncs.com', 'pmml_test') client.set_token('YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA***') client.init() req = StringRequest('[[0.0004703899612650275,0.9877758026123047]]') for x in range(100): resp = client.predict(req) print(resp)
其他語(yǔ)言客戶端SDK使用說(shuō)明,詳情請(qǐng)參見(jiàn)服務(wù)調(diào)用SDK。