Oceanus-ML:端到端的在線機器學習能力

  • 2019 年 10 月 4 日
  • 筆記

導語丨Oceanus平台在原本的streaming(流計算)場景上全新升級,新增支援ML(在線學習)場景。本文將介紹Oceanus-ML,端到端的在線機器學習能力。用戶可通過Oceanus拖拽式畫布及參數配置,高效搭建訓練邏輯,輕鬆完成模型訓練、評估以及部署整個流程。

背景介紹

從應用場景劃分,流式應用主要可分為兩種:一是實時計算;二是在線學習。實時計算應用於ETL、實時報表、監控預警等實時流數據分析場景。在線學習應用於在線推薦、實時搜索等機器學習場景。Oceanus 作為一站式可視化高性能流計算平台,自上線以來,憑藉其靈活易用,維護簡單,性能優越,兼備低延時高吞吐的特點,很好地滿足公司內實時計算的業務場景。現在,依託於Oceanus實時的計算能力,我們正式上線Oceanus-ML,支援在線學習的能力,滿足業務方在線機器學習的場景。

現實中,很多場景下會產生海量且時效性很強的數據,比如熱點新聞、用戶的興趣點等,往往變化很快。對於離線訓練而言,通常天級甚至月級對模型進行更新,時效性得不到保證。而在線學習可以實時更新模型,將數據的變化即時反應在模型之上。

Oceanus-ML旨在提供一套端到端(數據接入-數據處理-特徵工程-模型訓練-模型評估)的在線學習解決方案。Oceanus-ML包含多樣的數據處理函數,集成豐富的在線學習及深度學習演算法(ftrl-lr,ftrl-fm,deepfm等),用戶通過簡單的拖拽、填寫參數,即可搭建起完整的訓練框架,並可輕鬆完成模型的訓練、評估、部署整個流程。

設計原理

01

演算法流程

Source節點產生樣本的數據流,經過一系列處理後ML Model對樣本流進行訓練及驗證。通過繼承ML Model實現graph介面來實現不同模型演算法,藉助於自動求導的框架,無需手寫公式求導,大大簡化演算法的實現。

02

增量資訊表

同時,我們引入了一種數據結構維護並增量更新輸入數據的統計資訊,為實時數據分析及各種假設檢驗提供支援,並且方便實現LDA、SVM、PCA、Markov Chains等基於統計資訊的演算法的增量版本。

  • Learner:實時增量更新表裡維護的關於輸入數據的一二階統計資訊。
  • Explorer:使用表裡的資訊對數據每個維度做單變數分析及維度與維度之間做雙變數分析。 
  • Modeler:基於表裡的資訊實時構建模型。 
  • Predictor:使用模型進行實時預測。 

功能特色

01

拖拽式畫布,輕鬆構建在線學習應用

如上圖所示,Oceanus-ML根據機器學習的流程,將運算元分為6類:

  • 數據源
  • 數據預處理
  • 特徵工程
  • 演算法
  • 驗證
  • 輸出

對於用戶而言,構建應用邏輯時,只需向畫布拖拽運算元、填寫參數、按邏輯連接運算元 ,即可生成一個在線學習畫布應用。

我們以使用DeepFM演算法解決CTR預測問題為例。我們使用演算法競賽常用的criteo數據集(來自歐盟criteo的大型互聯網廣告數據集),作為經典權威的廣告點擊日誌,數據集大小達到了TB級別。我們把criteo數據集經過特徵處理後得到百萬維的數據,生成樣本流,作為演算法的數據輸入。

如上圖,畫布中包含數據源(TDBank),DeepFM演算法,模型驗證以及模型輸出運算元。畫布中的在線DeepFM演算法會實時消費TDBank數據,更新模型參數。模型輸出會定時將最新的模型保存到HDFS。而模型驗證會拉取部分數據對產生的模型驗證,並將驗證的結果即時保存在HDFS。

通過構拖拽配置畫布流的邏輯,我們即可構建一個典型的CTR演算法訓練及評估的任務。

02

豐富的運算元,涵蓋多樣化業務邏輯

如下圖所示,在Oceanus-ML的畫布中,我們提供了6類共計24種運算元,用戶只需根據業務邏輯,拖拽連接相應的運算元,即可構建畫布流。

2.1 數據源

結合Oceanus,可以方便的支援各種數據源作為輸入和輸出,如Tube、Hippo、Kafka以及HDFS、Mysql、HBase等等, 一鍵無縫對接現有數據源,而且數據源支援直接使用CSV以及LibSVM格式。

2.2 預處理

類似於spark,我們同樣能夠對數據流進行各種聚合和劃分,Oceanus提供了眾多的預處理運算元,得益於Flink非常完善的窗口機制,我們能做到遠比Spark Streaming粒度更細的操作,比如構建基於事件時間的滾動窗口來處理數據。

2.3 演算法

我們還在不斷的增加機器學習和深度學習演算法,現已覆蓋常用的在線學習演算法,包括FTRL、FTRL-FM、DeepFM、特徵值分解、核密度分析,包含有監督演算法以及無監督演算法。我們可以快速方便的定義演算法結構而無需考慮其梯度如何計算,比如FM演算法,舉例如下:

03

實時訓練模型,3步部署模型服務

當應用訓練出模型後,只需3步,即可部署模型服務:

  • 根據auc評估合適的模型,進行部署
  • 選擇模型服務組,填寫資源參數
  • 選擇是否需要落地模型

部署後在「模型服務」中,可對模型進行管理,也可進行調試、查看模型評估報告等,方便的對比模型間的差異、效果及趨勢。

如下圖所示,以上文中的DeepFM為例,我們部署了3個不同時間生成的模型,通過評估報告,我們可以對比3個模型的效果。從AUC趨勢可以看到,隨著時間的推移,生成的模型越來越準確,最新的模型對於用戶廣告點擊的預測會更加精準,部署到線上後廣告點擊率更高。

應用案例

實時檢測應用異常

指標智慧監控預警(增量多元核密度估計演算法)

異常點檢測(Outlier detection),又稱為離群點檢測,是找出與預期對象的行為差異較大的對象的一個檢測過程。這些被檢測出的對象被稱為異常點或者離群點。異常點檢測在生產生活中有著廣泛應用,比如信用卡反欺詐、工業損毀檢測、廣告點擊反作弊等。

核密度估計是一種非參數密度估計演算法。與參數方法相比,非參數方法對真實分布做更少的假設。比如數據是多峰的,那麼我們用單峰的正態分布去擬合效果一定不好,但非參數方法卻可以取得不錯的效果。

核密度估計的優點是「訓練」階段不需要計算,只需要存儲訓練集。同時,這也反映出這種方法的缺點,即計算概率密度值時的開銷隨數據集大小線性增長。我們對此進行了優化,將演算法修改為增量形式,可以很方便的進行在線計算,同時不再需要儲存相應的數據集。具體步驟如下:

1、將新樣本更新到模型;

2、重新計算模型頻寬;

3、重新構建和壓縮模型;

K(.)為核函數(非負、積分為1,符合概率密度性質,並且均值為0),h>0為一個平滑參數,稱作頻寬(bandwidth)。Kh(x) = 1/h K(x/h). 為縮放核函數(scaled Kernel)

基於此,我們將該能力落地到Oceanus自身的監控模組上,用畫布模式搭建了一個Oceanus全平台異常檢測的ML任務,整體邏輯如下:

在Oceanus的集群上,每個任務在運行過程中會定時上報任務的指標以及機器節點的狀態,儲存在tdbank里,我們可以通過Oceanus ML模組,通過畫布創建對應用、機器的指標異常檢測,畫布整體邏輯如下:

  • source節點對應tdbank的數據,在select節點可對數據進行解析,解析出任務id、指標類型、指標狀態值等:
  • 通過split節點及streamSelect節點挑選我們想要監控的指標類型:
  • 通過join節點可以從mysql、hbase、redis等獲取必要的配置參數,合併處理後輸入到演算法節點裡,指定特徵對應的列,配置相應的參數即可,當在索引列指定任務id時,可以針對每個任務生成相應的模型:

最後從演算法節點能拿到相應預測結果,根據輸出可作進一步推送預警,讓業務提前預知可能會發生的風險,減少成本損失。

目前,智慧監控預警已在Oceanus平台上開放,只需在告警配置裡邊一鍵勾選,即可體驗指標智慧監控,提前預知指標異常風險。

總結與展望

模型的升級路線往往為人工規則發展到線性模型,再到非線性模型以及集成學習,然後到深度學習和在線學習。總體上複雜度越來越高,時效性越來越強,收益也在不斷提升。

通過Oceanus-ML,用戶可以高效快捷搭建起在線學習的任務,輕鬆完成模型的訓練、評估及部署整個流程,且模型定期落地,可直接用於線上預測。

後續,我們也將繼續對平台進行優化及改進,包括:

  • 將遷移社區更多的演算法及優化器,提供更豐富的演算法運算元
  • 引進基於Yarn的參數伺服器,提供大規模模型在線訓練的能力
  • 近期也將兼容Tensorflow框架和演算法,提供相應的運算元,方便靈活提供不同業務的支援
  • 對模型及結果提供更方便多樣的可視化展示

……

Tags: