了解一點模型部署與上線
鑒於對後端和運維的不熟悉,了解一些模型部署的知識。
機器學習應用場景十分豐富,模型與產品的對接方式也各式各樣:
離線:
模式一:線下train+線上predict+參數固定定期手動更換pickle file
下面是一段包裝成web service的小示例:
參考:
機器學習模型如何上線或者online學習? - 林志豪的回答 - https://www.zhihu.com/question/37426733/answer/155517062
模式二:線下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的回答 - https://www.zhihu.com/question/49775870/answer/118149542
散碎的科普:
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`的講解
※機器學習(周志華)第一、二章