特黄特色三级在线观看免费,看黄色片子免费,色综合久,欧美在线视频看看,高潮胡言乱语对白刺激国产,伊人网成人,中文字幕亚洲一碰就硬老熟妇

學習啦 > 學習方法 > 通用學習方法 > 學習方法指導 > 機電學習方法演講稿

機電學習方法演講稿

時間: 欣怡1112 分享

機電學習方法演講稿

  機器學習算法線上部署方法是什么?下面是學習啦小編分享給大家的機器學習算法線上部署方法的資料,希望大家喜歡!

  機器學習算法線上部署方法一、總結來說,大體會區(qū)分這三種場景,請大家對號入座,酌情使用

  如果是實時的、小數(shù)據(jù)量的預測應用,則采用的SOA調(diào)用Rserve或者python-httpserve來進行應用;這種應用方式有個缺點是需要啟用服務來進行預測,也就是需要跨環(huán)境,從Java跨到R或者Python環(huán)境。對于性能,基本上我們用Rserver方式,針對一次1000條或者更少請求的預測,可以控制95%的結果在100ms內(nèi)返回結果,100ms可以滿足工程上的實踐要求。更大的數(shù)據(jù)量,比如10000/次,100000/次的預測,我們目前評估下來滿足不了100ms的要求,建議分批進行調(diào)用或者采用多線程請求的方式來實現(xiàn)。

  如果是實時、大數(shù)據(jù)量的預測應用,則會采用SOA,訓練好的模型轉換成PMML(關于如何轉換,我在下面會詳細描述),然后把模型封裝成一個類,用Java調(diào)用這個類來預測。用這種方式的好處是SOA不依賴于任何環(huán)境,任何計算和開銷都是在Java內(nèi)部里面消耗掉了,所以這種工程級別應用速度很快、很穩(wěn)定。用此種方法也是要提供兩個東西,模型文件和預測主類;

  如果是Offline(離線)預測的,D+1天的預測,則可以不用考慮第1、2中方式,可以簡單的使用Rscript x.R或者python x.py的方式來進行預測。使用這種方式需要一個調(diào)度工具,如果公司沒有統(tǒng)一的調(diào)度工具,你用shell的crontab做定時調(diào)用就可以了。

  以上三種做法,都會用SOA里面進行數(shù)據(jù)處理和變換,只有部分變換會在提供的Function或者類進行處理,一般性都建議在SOA里面處理好,否則性能會變慢。

  大概場景羅列完畢,簡要介紹一下各不同工具的線上應用的實現(xiàn)方式。

  機器學習算法線上部署方法二、轉換PMML,并封裝PMML

  大部分模型都可以用PMML的方式實現(xiàn),PMML的使用方法調(diào)用范例見:

  jpmml的說明文檔:GitHub - jpmml/jpmml-evaluator: Java Evaluator API for PMML;

  Java調(diào)用PMML的范例(PPJUtils/java/pmml at master · pjpan/PPJUtils · GitHub),此案例是我們的工程師寫的范例,大家可以根據(jù)此案例進行修改即可;

  Jpmml支持的轉換語言,主流的機器學習語言都支持了,深度學習類除外;

  從下圖可以看到,它支持R、python和spark、xgboost等模型的轉換,用起來非常方便。

  機器學習算法線上部署方法三、各個算法工具的工程實踐

  1.python模型上線:我們目前使用了模型轉換成PMML上線方法。

  python-sklearn里面的模型都支持,也支持xgboost,并且PCA,歸一化可以封裝成preprocess轉換成PMML,所以調(diào)用起來很方便;

  特別需要注意的是:缺失值的處理會影響到預測結果,大家可以可以看一下;

  用PMML方式預測,模型預測一條記錄速度是1ms,可以用這個預測來預估一下根據(jù)你的數(shù)據(jù)量,整體的速度有多少。

  2.R模型上線-這塊我們用的多,可以用R model轉換PMML的方式來實現(xiàn)。

  這里我介紹另一種的上線方式:Rserve。具體實現(xiàn)方式是:用SOA調(diào)用Rserve的方式去實現(xiàn),我們會在服務器上部署好R環(huán)境和安裝好Rserve,然后用JAVA寫好SOA接口,調(diào)用Rserve來進行預測;

  Java調(diào)用Rserve方式見網(wǎng)頁鏈接:Rserve - Binary R server;

  centos的Rserve搭建方法見:centos -Rserve的搭建,這里詳細描述了Rserve的搭建方式。

  Rserve方式可以批量預測,跟PMML的單個預測方式相比,在少數(shù)據(jù)量的時候,PMML速度更快,但是如果是1000一次一批的效率上看,Rserve的方式會更快;用Rserve上線的文件只需要提供兩個:

  模型結果文件(XX.Rdata);

  預測函數(shù)(Pred.R)。

  Rserve_1啟動把模型結果(XX.Rdata)常駐內(nèi)存。預測需要的輸入Feature都在Java里定義好不同的變量,然后你用Java訪問Rserve_1,調(diào)用Pred.R進行預測,獲取返回的List應用在線上。最后把相關的輸入輸出存成log進行數(shù)據(jù)核對。

  Pred.R <- function(x1,x2,x3){data <- cbind(x1,x2,x3)# feature engineeringscore <- predict(modelname, data, type = 'prob')return(list(score))}

  3.Spark模型上線-好處是脫離了環(huán)境,速度快。

  Spark模型的上線就相對簡單一些,我們用scala訓練好模型(一般性我們都用xgboost訓練模型)然后寫一個Java Class,直接在JAVA中先獲取數(shù)據(jù),數(shù)據(jù)處理,把處理好的數(shù)據(jù)存成一個數(shù)組,然后調(diào)用模型Class進行預測。模型文件也會提前l(fā)oad在內(nèi)存里面,存在一個進程里面,然后我們?nèi)フ{(diào)用這個進程來進行預測。所以速度蠻快的。

  Spark模型上線,放在spark集群,不脫離spark環(huán)境,方便,需要自己打jar包;

  我們這里目前還沒有嘗試過,有一篇博客寫到了如果把spark模型導出PMML,然后提交到spark集群上來調(diào)用,大家可以參考一下:Spark加載PMML進行預測。

  機器學習算法線上部署方法四、只用Linux的Shell來調(diào)度模型的實現(xiàn)方法—簡單粗暴

  因為有些算法工程師想快速迭代,把模型模擬線上線看一下效果,所以針對離線預測的模型形式,還有一種最簡單粗暴的方法,這種方法開發(fā)快速方便,具體做法如下:

  寫一下R的預測腳本,比如predict.R,是你的主預測的模型;

  然后用shell封裝成xx.sh,比如predict.sh,shell里面調(diào)用模型,存儲數(shù)據(jù);

  機器學習算法線上部署方法五、模型數(shù)據(jù)流轉的注意事項

  區(qū)分offline和realtime數(shù)據(jù),不管哪種數(shù)據(jù),我們根據(jù)key和不同的更新頻次,把數(shù)據(jù)放在redis里面去,設置不同的key和不同的過期時間;

  大部分redis數(shù)據(jù)都會存放兩個批次的數(shù)據(jù),用來預防無法取到最新的數(shù)據(jù),則用上一批次的數(shù)據(jù)來進行填充;

  針對offline數(shù)據(jù),用調(diào)度工具做好依賴,每天跑數(shù)據(jù),并生成信號文件讓redis來進行讀取;

  針對realtime數(shù)據(jù),我們區(qū)分兩種類型,一種是歷史+實時,比如最近30天的累計訂單量,則我們會做兩步,第一部分是D+1之前的數(shù)據(jù),存成A表,今天產(chǎn)生的實時數(shù)據(jù),存儲B表,A和B表表結構相同,時效性不同;我們分別把A表和B表的數(shù)據(jù)放在Redis上去,然后在SOA里面對這兩部分數(shù)據(jù)實時進行計算;

  模型的輸入輸出數(shù)據(jù)進行埋點,進行數(shù)據(jù)跟蹤,一是用來校驗數(shù)據(jù),二來是用來監(jiān)控API接口的穩(wěn)定性,一般性我們會用ES來進行l(wèi)og的查看和性能方面的監(jiān)控;

  任何接口都需要有容災機制,如果接口超時,前端需要進行容災,立即放棄接口調(diào)用數(shù)據(jù),返回一個默認安全的數(shù)值,這點對于工程上非常重要。

3666555