針對正在興起的機器學習廣泛而多樣的應用場景,阿裡巴巴計算平台基礎算法團隊在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的算法,還包含流式算法、流批混跑、線上學習、中文分詞等。
- 使用者使用界面
為了提供更好的互動式體驗,我們提供兩種使用者使用界面:web和PyAlink。
首先我們介紹一下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社群機器學習生态的發展和繁榮。