每次購物狂歡都是技術平臺的一場數據“博弈”。去年雙十一,阿里旗下的電子商務平臺天貓就再一次刷新了數據記錄,而強大的系統處理性能更是讓業界敬佩不已:單日數據處理量達到970PB,每秒處理峰值數據高達25億條,并幫助天貓產品推薦的點擊率提高了4%——這一連串的數據背后,離不開Alink的支撐。
作為業界同時支持批式算法、流式算法的機器學習平臺之一,Alink基于Flink開發而來,提供了豐富的算法組件庫和便捷的操作框架,且目前已被廣泛運用在阿里內部的搜索、推薦、廣告等多個核心實時在線業務中,以及支持Kafka、HDFS和HBase等一系列開源數據存儲平臺。
在本文中,CSDN有幸采訪到了Alink創始人楊旭,他將從一線開發的視角,帶我們了解這個開源機器學習平臺的技術路徑、典型應用案例及發展規劃等內容。
楊旭,機器學習Alink創始人,阿里巴巴集團計算平臺事業部的資深算法專家,阿里云機器學習算法平臺PAI中基礎機器學習算法的負責人。
Alink衍生背景:算法工程師的開發訴求
隨著大數據時代的到來和人工智能的崛起,機器學習所能處理的場景更加廣泛和多樣。構建的模型需要對批量數據進行處理,為了達到實時性的要求還需要直接對流式數據進行實時預測,還要具備將模型應用在企業應用和微服務上能力。為了取得更好的業務效果,算法工程師們需要嘗試更多更復雜的模型,需要處理更大的數據集,使用分布式集群已經成為常態;為了及時對市場的變化進行反應,越來越多的業務選用在線學習方式直接處理流式數據、實時更新模型。
楊旭解釋道,“我們團隊一直從事算法平臺的研發工作,感受到了高效能的算法組件和便捷操作平臺對開發者的幫助。”針對正在興起的機器學習廣泛而多樣的應用場景,他和所帶領的團隊在2017年開始基于Flink研發新一代的機器學習算法平臺,使得數據分析和應用開發人員能夠輕松搭建端到端的業務流程。
Alink究竟是什么?
Alink 是阿里巴巴計算平臺事業部PAI團隊從2017年開始基于實時計算引擎 Flink 研發的新一代機器學習算法平臺,提供豐富的算法組件庫和便捷的操作框架,開發者可以一鍵搭建覆蓋數據處理、特征工程、模型訓練、模型預測的算法模型開發全流程。項目之所以定為Alink,是取自相關名稱(Alibaba, Algorithm, AI, Flink, Blink)的公共部分。
借助Flink在批流一體化方面的優勢,Alink能夠為批流任務提供一致性的操作。楊旭提到,在2017年初,他們通過調研團隊看到了Flink在批流一體化方面的優勢及底層引擎的優秀性能,于是基于Flink重新設計研發了機器學習算法庫,即Alink平臺。該平臺于2018年在阿里集團內部上線,隨后不斷改進完善,在阿里內部錯綜復雜的業務場景中鍛煉成長。
“作為業界首個同時支持批式算法、流式算法的機器學習平臺,Alink 提供了 Python 接口,開發者無需 Flink 技術背景也可以輕松構建算法模型。”
據楊旭介紹,Alink 已被廣泛運用在阿里巴巴搜索、推薦、廣告等多個核心實時在線業務中。在此前落幕的天貓雙 11 中,單日數據處理量達到 970PB,每秒處理峰值數據高達 25 億條。Alink 成功經受住了超大規模實時數據訓練的檢驗,并幫助提升 4% CTR(商品點擊轉化率)。
Alink功能簡介
1、豐富的算法庫
Alink擁有豐富的批式算法和流式算法,幫助數據分析和應用開發人員能夠從數據處理、特征工程、模型訓練、預測,端到端地完成整個流程。如下圖所示,Alink提供的開源算法模塊中,每一個模塊都包含流式和批式算法。比如線性回歸,包含批式線性回歸訓練、流式線性回歸預測和批式線性回歸預測。
2、友好的使用體驗
“為了提供更好的交互式和可視化體驗,我們在開源的同時推出了PyAlink,用戶可以通過PyAlink的Python包以notebook的方式使用Alink。”楊旭表示,PyAlink不僅支持單機運行,也支持集群提交,并且打通了Operator(Alink算子)和DataFrame的接口,從而使得Alink整個算法流程無縫融入Python。PyAlink也提供使用Python函數來調用UDF或者UDTF。PyAlink在notebook中使用如下圖,展示了一個模型訓練預測,并打印出預測結果的過程。
3、與Spark對比
在離線學習算法方面,Alink 跟 SparkML 性能對比基本相當,下圖給出的是一些經典算法的性能對比:
通過上圖可以看出,Alink在大部分算法性能優于Spark,個別算法性能比Spark弱,整體是一個相當的水平。
但是,“在功能的完備性方面,Alink更有優勢”,Alink除了覆蓋Spark的算法,還包含流式算法、流批混跑、在線學習、中文分詞等。
阿里和Alink的開源之路
在2018年,GitHub新增活躍用戶數量超過了前六年的總和,相較于2017年新增了40%的組織機構和30%的代碼倉庫。從全球趨勢來看,開源無疑是軟件發展的大勢所趨。目前在國內,阿里是貢獻開源最出色的企業。GitHub上有大量的開源項目由阿里創建,據阿里經濟體GitHub開源生態報告統計,國內Top10的開源項目中,阿里的開源項目有6個。
在談Alink開源之前,楊旭首先介紹了與之相關的Flink與FlinkML。“Flink是一個面向數據流處理和批量數據處理的可分布式的開源計算框架,我們看好Flink引擎的優秀性能,希望基于Flink解決流程機器學習場景的問題。”FlinkML為Flink自帶的機器學習算法庫,分為舊的版本和新的版本。“在做Alink前,我們首先認真調研了當時的FlinkML(即舊版本FlinkML)的情況,其僅支持10余種算法,支持的數據結構也不夠通用,在算法性能方面做的優化也比較少,而且其代碼也很久沒有更新。所以,我們放棄了基于舊版FlinkML進行改進、升級的想法,決定基于Flink重新設計研發機器學習算法庫,隨后發展為現在的Alink。”
Alink在發展的過程中一直與Flink社區緊密關聯,在每年的Flink Forward大會上,團隊一直有匯報項目的進展,共同探討技術問題,獲取反饋和建議。隨著Alink功能的不斷增強和完善,“社區中歡迎Alink進行開源的呼聲日益高漲,我們也開始和Flink社區更緊密聯系,推動開源Alink的代碼進入FlinkML。”
與此同時,社區中更多的人意識到舊版FlinkML的問題,決定整個廢棄掉舊版FlinkML,建設新版FlinkML。“我們積極參加新版FlinkML API的設計,分享Alink API設計的經驗;Alink的Params等概念被社區采納;之后開始為新版FlinkML貢獻算法實現代碼,已提交了40余個PR,包括算法基礎框架、基礎工具類及若干算法實現。”
Alink包含了非常多的機器學習算法,在向FlinkML貢獻的過程中,需要社區commiter的討論設計與審查代碼,這個過程有助于代碼的精益求精,但由于社區commiter的資源有限,代碼完全貢獻到FlinkML的過程會持續很長時間。“這時,我們不得不考慮是否有其他方式,可以讓用戶先用起來”,“Alink單獨開源是個很好的解決方式”,它與向FlinkML繼續貢獻算法實現,可以同時進行。用戶的使用反饋也有助于更好的改進算法實現。
此想法獲得了社區的支持,獲得了阿里內部的支持,在Flink Forword Asia 2019大會上,Alink正式宣布開源。
目前,Alink開源已經四個多月,在這段時間里Alink在開源社區的聲望越來越高,Alink在Github上已經有2000多顆Star,400多次fork。楊旭感嘆道,“目前為止,我們的開源用戶群已經將近1000人,并且已經有多位社區開發者向Alink提交算法code,有幾十位社區的Alink用戶向我們提出Alink算法bug或者算法改進需求。Alink開發團隊也積極和社區互動,共同推進Alink平臺的發展。”一方面,Alink團隊積極支持社區用使用Alink,幫助數百位社區用戶解決他們在使用Alink算法遇到的困難。另一方面,針對社區用戶提出的算法bug和算法改進需求,Alink團隊第一時間作出響應,對這些bug和改進需求進行排期,并在開發完成后及時開源到社區,解決社區用戶的需求。
“雖然Alink的開源已經取得了階段性成果,我們仍然在積極向FlinkML貢獻代碼”,楊旭最后表示,他希望將更多優秀的機器學習算法貢獻給Flink項目,也希望和社區一起努力,共同促進Flink社區機器學習生態的發展和繁榮。
-
算法
+關注
關注
23文章
4625瀏覽量
93128 -
數據處理
+關注
關注
0文章
611瀏覽量
28602 -
機器學習
+關注
關注
66文章
8429瀏覽量
132854
發布評論請先 登錄
相關推薦
評論