流批一體機器學習演算法平臺

程式碼派就是我發表於2020-05-18

釋出會傳送門 :https://developer.aliyun.com/live/2764?groupCode=cloudproduct


產品詳情


針對正在興起的機器學習廣泛而多樣的應用場景,阿里巴巴計算平臺基礎演算法團隊在2017年開始基於Flink研發新一代的機器學習演算法平臺。該專案名稱定為Alink,取自相關名稱(Alibaba, Algorithm, AI, Flink, Blink)的公共部分。經過三年的投入研發,Alink在演算法效能、演算法規模、演算法易用性等方面取得了不錯的成果,並實現了產品化。這使得資料分析和應用開發人員能夠輕鬆搭建端到端的業務流程。


在後面的篇幅中,我們將從演算法功能、演算法效能、使用者介面、視覺化等方面對Alink做一個系統的介紹。  


演算法功能


Alink擁有豐富的批式演算法和流式演算法,能夠幫助資料分析和應用開發人員能夠從資料處理、特徵工程、模型訓練、預測,端到端地完成整個流程。如下圖所示,Alink提供的功能演算法模組中,每一個模組都包含流式和批式演算法。比如線性迴歸,包含批式線性迴歸訓練,流式線性迴歸預測和批式線性迴歸預測。另外,Alink演算法覆蓋分類、迴歸、聚類、評估、統計分析、特徵工程、異常檢測、文字、線上學習、關聯分析等經典領域,是一個通用的機器學習演算法平臺。



目前,Alink已經被阿里巴巴集團內部多個BU使用,並取得了不錯的業務提升。特別是在2019年天貓雙11中,單日資料處理量達到 970PB,每秒處理峰值資料高達 25 億條。Alink 成功經受住了超大規模實時資料訓練的檢驗,並幫助天貓產品推薦的點選率提高了4%。


演算法效能


下圖給出的是一些經典演算法與Spark的效能對比,透過該圖可以看出,Alink在大部分演算法效能優於Spark,個別演算法效能比Spark弱,整體是一個相當的水平。

 


但是,“在功能的完備性方面,Alink更有優勢”,Alink除了覆蓋Spark的演算法,還包含流式演算法、流批混跑、線上學習、中文分詞等。


使用者使用介面


為了提供更好的互動式體驗,我們提供兩種使用者使用介面: webPyAlink


首先我們介紹一下web介面。Web介面提供拖拽的方式建立試驗,透過對每一個元件進行配置完成整個試驗的引數配置。下圖給出的是web介面建立的批式、流式、流批混合的試驗。

    


並且Alink可以支援節點的級別實驗執行狀態顯示。在各個演算法節點旁,我們用閃爍的小燈泡?表示“執行中”的狀態,用對勾✅表示“執行完成”的狀態。一般情況下,只有批式(batch)元件才有可能執行結束。基於各個元件的執行狀態,可以十分方便地判斷當前實驗執行到了什麼程度。並且,如果實驗執行中出現了報錯或者長時間不結束的情況,也能根據元件執行狀態更加方便地定位潛在出問題的元件。除了簡單的執行狀態以外,Alink還提供了檢視元件輸入、輸出資料量指標的功能。對於不同型別的元件,Alink提供了不同的指標展現方式:對於流式(stream)元件來說,在元件執行時,可以接近實時地看到元件的輸出BPS和RPS數值。而對於批式(batch)元件,在元件執行完成後,會展示總的輸出資料條數和位元組數。這些指標的展示對於判斷實驗/業務是否正常執行可以提供很多的參考,尤其對於一些線上實時的業務,透過這些指標就能直觀地看到是否正常執行。


下面我們繼續介紹PyAlink。為了滿足指令碼使用者的需求,我們提供了PyAlink on notebook,使用者可以透過PyAlink的python包使用Alink。PyAlink支援單機執行,也支援叢集提交。並且打通Operator(Alink運算元)和DataFrame的介面,從而使得Alink整個演算法流程無縫融入python。PyAlink也提供使用Python函式來呼叫UDF或者UDTF。PyAlink在notebook中使用如下圖,展示了一個模型訓練預測,並列印出預測結果的過程:

 

視覺化


Alink中的視覺化包括統計相關的視覺化、模型類視覺化以及評估視覺化等,當前能進行大屏視覺化的元件包括:統計分析類元件,直接展示的統計演算法的結果;機器學習模型類元件,展示訓練好的模型的資訊;評估類元件,展示評估介面。

下圖給出的是統計視覺化,透過下圖可以看到我們的統計視覺化支援視窗統計和累計統計,並且支援曲線、柱狀圖、統計表、矩陣圖等多種展示方式。

 

同樣,下面兩幅圖給出的是模型的視覺化和評估的視覺化。




總結展望


經過三年的發展,Alink已經成為一個功能完備的機器學習演算法平臺,而且已經在2019年FFA19將程式碼開源到社群,讓更多的人能夠使用這個平臺解決業務問題。雖然Alink開源已經取得了階段性成果,但是我們將繼續積極向FlinkML貢獻程式碼,我們希望將更多優秀的機器學習演算法貢獻給Flink專案,也希望和社群一起努力,共同促進Flink社群機器學習生態的發展和繁榮。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31550522/viewspace-2692817/,如需轉載,請註明出處,否則將追究法律責任。

相關文章