了解一點模型部署與上線

鑒於對後端和運維的不熟悉,了解一些模型部署的知識。

機器學習應用場景十分豐富,模型與產品的對接方式也各式各樣:

離線:

模式一:線下train+線上predict+參數固定定期手動更換pickle file

下面是一段包裝成web service的小示例:

參考:

機器學習模型如何上線或者online學習? - 林志豪的回答 - zhihu.com/question/3742

模式二:線下train+線上predict+離線自動調度腳本

相當於自動更新pickle file

實時:

一.小數據量:

採用的SOA調用Rserve或者python-httpserve

對於性能,基本上我們用Rserver方式,針對一次1000條或者更少請求的預測,可以控制95%的結果在100ms內返回結果,100ms可以滿足工程上的實踐要求。更大的數據量,比如10000/次,100000/次的預測,我們目前評估下來滿足不了100ms的要求,建議分批進行調用或者採用多線程請求的方式來實現

二.大數據量:

採用SOA,訓練好的模型轉換成PMML,然後把模型封裝成一個類,用Java調用這個類來預測

用這種方式的好處是SOA不依賴於任何環境,任何計算和開銷都是在Java內部裡面消耗掉了,所以這種工程級別應用速度很快、很穩定。用此種方法也是要提供兩個東西,模型文件和預測主類

這裡的PMML是預言模型標記語言(Predictive Model Markup Language),利用XML描述和存儲數據挖掘模型,一般在跨環境的時候使用(prediction的環境和training環境不在一起)

參考:

數據挖掘模型如何進行線上部署? - wpppj的回答 - zhihu.com/question/4977

散碎的科普:

ELK是一套常用的開源日誌監控和分析系統,包括一個分散式索引與搜索服務Elasticsearch,

一個管理日誌和事件的工具logstash,和一個數據可視化服務Kibana

logstash_1.5.3 負責日誌的收集,處理和儲存

elasticsearch-1.7.2 負責日誌檢索和分析

kibana-4.1.2-linux-x64.tar.gz 負責日誌的可視化

redis-2.4.14 DB以及日誌傳輸的通道來處理,內存資料庫,key-value資料庫

日誌主要包括系統日誌、應用程序日誌和安全日誌。系統運維和開發人員可以通過日誌了解伺服器軟硬體信息、檢查配置過程中的錯誤及錯誤發生的原因


推薦閱讀:

視角觀察:四個話題讀懂大數據醫療
手把手教你快速構建自定義分類器
Kaggle Titanic 生存預測(Top1.4%)完整代碼分享
R 包 `ezdf`的講解
機器學習(周志華)第一、二章

TAG:數據挖掘 | 機器學習 |