自 2019 年 1 月起,阿里巴巴逐步將內(nèi)部維護的 Blink 回饋給 Flink 開源社區(qū),目前貢獻代碼數(shù)量已超過 100 萬行。國內(nèi)包括騰訊、百度、字節(jié)跳動等公司,國外包括 Uber、Lyft、Netflix 等公司都是 Flink 的使用者。
今年 8 月發(fā)布的 Flink 1.9.0 是阿里內(nèi)部版本 Blink 合并入 Flink 后的首次發(fā)版,在今天的 Flink Forward 2019 大會上,阿里發(fā)布了 Flink 1.10 版本功能前瞻,正式版本預計于 2020 年 1 月發(fā)布。
Flink 1.10 版本功能前瞻:Blink 全部功能進入 Flink
據(jù)介紹,F(xiàn)link 1.10 版本可以看作一個比較重要的里程碑式版本,至此,Blink 全部功能都已經(jīng)進入 Flink,包括 Blink 中比較關鍵的設計和通用的優(yōu)化。以下是該版本將包含的主要功能和技術亮點前瞻:
(1)
更加強大的Blink Query Processor
(1)Meta 兼容,支持直接讀取 Hive catalog,版本覆蓋1.x,2.x到3.x
(2)數(shù)據(jù)格式兼容,支持直接讀取 Hive 表,同時也支持寫成 Hive 表的格式
(3)UDF 兼容,支持在 Flink SQL 內(nèi)直接調(diào)用 Hive 的UDF,UDTF,UDAF
增加了對 NativePython UDF 的支持,用戶可以用Python開發(fā)自己的業(yè)務邏輯
很好的支持了 Python 類庫的依賴管理,Python用戶不僅可以自定義Python UDF 而且可以與其他現(xiàn)有的Python library進行集成
在架構上引入了BeamPortability Framework,F(xiàn)link與Beam社區(qū)共同打造功能便捷,性能優(yōu)越的Python UDF支持框架
與Flink資源管理框架進行集成,實現(xiàn)了對Python UDF資源的管控
(1)原生的資源管理,可以根據(jù)作業(yè)的資源需求動態(tài)去申請TaskManager,不需要依賴外部系統(tǒng)或組件
(2)更加方便的任務提交,不需要安裝kubectl等工具,可以達到和Yarn相似的體驗
提問:在 1.10 版本中,Blink 全部功能都已經(jīng)進入 Flink,而這距離上一次 1.9 發(fā)布剛過去三個月,那也是 Blink 首次并入 Flink 的版本發(fā)布,距離去年阿里宣布要開源 Blink 也不過一年時間。為什么 Blink 的 Merge 進度能做到這么快?過程中遇到了哪些問題?你們是如何解決的?
莫問: 我們投入了很多資源,包括有數(shù)十位技術人員來做這個事情,并行度比較大,所以才能在比較短的時間內(nèi)貢獻多達 150 萬行代碼。
提問:整個過程中有沒有遇到什么比較棘手的問題?
莫問: 社區(qū)是一個相對開放透明的場景,不像自己的項目可以比較隨意地改動,而是要走一個民主的過程,包括要經(jīng)過社區(qū)的討論、大家的認可,要保證代碼的質(zhì)量等。我們既要做到快速推進,還要保證質(zhì)量和社區(qū)的公平性,這個挑戰(zhàn)還是很大的。
莫問: 整個 Flink 社區(qū)的合作模式是比較高效的,社區(qū)不同模塊的負責人每周都會有視頻會議,可能是不同國家的社區(qū)討論,這些都做得非常高效,項目管理做得非常好。在這種機制的保證下,我們可以讓代碼快速進入同時保證迭代的速度。其實這對工程效率的開發(fā)也是非常大的挑戰(zhàn)。說白了,我們投入了很多技術人員做這件事,但也不是只看數(shù)量。我們投入的很多人手本身就是 Apache 項目的 PMC 和 Committer,而不完全是普通的工程師,這些人本身對于 Apache 項目的工作機制和流程都比較熟悉,他們的效率和作戰(zhàn)能力不能按一個人這么算。社區(qū)就是這樣,不是人多的問題,還需要合適的人。
提問:您上午在演講中提到 Flink 正在成為一個真正的 Unified Engine。有趣的是,我們近期已經(jīng)不止一次聽到不同的計算引擎提出類似的說法,比如 Spark 的核心理念也是成為“統(tǒng)一數(shù)據(jù)分析平臺”,能否請您談談 Flink 的設計理念?二者的統(tǒng)一有什么相同點和不同點?
莫問:Flink 的核心理念我們強調(diào)過很多次,它的本質(zhì)計算思想是流處理核心。流處理核心就是所有的都是基于 Stream 來處理,批可以看作是一個有限的流。像今天提到的在線的 Stateful Function 也是 Event Driven,所有的 Event 不停地進入做函數(shù)計算,做在線有狀態(tài)的計算,然后把結果給用戶,再不停地迭代。其實在線服務也是無限的,也是不會停止的處理,不停地有人訪問,有人處理。Flink 的核心是基于流計算的 Core,去覆蓋 Offline 和 Online,這樣它跟 Spark 還是不太一樣的。Spark 認為所有東西都是基于 Batch 的,而流是無數(shù)個 Batch 湊在一起,這一點不太一樣。
但大家在宏觀上的愿景都是類似的,用一套計算引擎技術或大數(shù)據(jù)處理的技術,來解決盡量多的場景,這樣從用戶的角度來說學習成本更低、開發(fā)效率更高、運維成本也更低。所以大家的目標和理念是一致的,只不過在實現(xiàn)這個目標的方法上的選擇是不一樣的。
**提問:下面這個問題我們之前問過 Databricks 的工程師,今天也想問問您,如果我要做統(tǒng)一的平臺,你也要做統(tǒng)一平臺,那會不會存在最后到底誰能真正統(tǒng)一誰的問題?
**莫問: 我覺得大家并不是說做什么,什么就一定會贏,一定會好。從我個人態(tài)度來說,技術還是需要有一定良性的競爭,這樣才能相互學習,同時條條大路通羅馬,不一定哪一個絕對正確,可能不同場景有不同的偏好或不同的特定區(qū)域的需求,或適應的場景不一樣。解決類似問題有兩三家公司共存,這種狀態(tài)是比較健康的,就像數(shù)據(jù)庫領域有 MySQL、PostgreSQL 等,在線服務也類似,起碼得有兩家大公司在一起競爭,是比較合適的。但最終哪個做得更好,還是取決于是否能把自己的理論做到極致。因為理論是理論,你的理論和我的理論聽起來各有千秋,但是誰最后能贏看的是細節(jié),包括用戶體驗。你是否按照正確的方法在做,細節(jié)做得夠不夠好,而不是大家聽起來思路一樣就沒有區(qū)別了。細節(jié)和社區(qū)生態(tài)的發(fā)展、推進過程都很重要。
開源 Alink:Flink 機器學習進度幾何?
Flink 在機器學習領域的進展一直是眾多開發(fā)者關注的焦點,今年 Flink 迎來了一個小里程碑:機器學習算法平臺 Alink 開源,這也宣告了 Flink 正式切入 AI 領域。
Alink 開源項目鏈接:
https://github.com/alibaba/Alink
Alink 是阿里巴巴機器學習算法團隊從 2017 年開始基于實時計算引擎 Flink 研發(fā)的新一代機器學習算法平臺,提供豐富的算法組件庫和便捷的操作框架,開發(fā)者可以一鍵搭建覆蓋數(shù)據(jù)處理、特征工程、模型訓練、模型預測的算法模型開發(fā)全流程。作為業(yè)界首個同時支持批式算法、流式算法的機器學習平臺,Alink 提供了 Python 接口,開發(fā)者無需 Flink 技術背景也可以輕松構建算法模型。Alink 這個名字取自相關名稱(Alibaba, Algorithm, AI, Flink,Blink)的公共部分。
據(jù)悉,Alink 已被廣泛運用在阿里巴巴搜索、推薦、廣告等多個核心實時在線業(yè)務中。在剛剛落幕的天貓雙 11 中,單日數(shù)據(jù)處理量達到 970PB,每秒處理峰值數(shù)據(jù)高達 25 億條。Alink 成功經(jīng)受住了超大規(guī)模實時數(shù)據(jù)訓練的檢驗,并幫助提升 4% CTR(商品點擊轉(zhuǎn)化率)。
提問:能否先介紹一下 FlinkML 和 Alink 的概況,以及二者的關系?
莫問:FlinkML 是 Flink 社區(qū)現(xiàn)存的一套機器學習算法庫,這一套算法庫已經(jīng)存在很久而且更新比較緩慢。Alink 是基于新一代的 Flink,完全重新寫了一套,跟 FlinkML 沒有代碼上的關系。Alink 由阿里巴巴大數(shù)據(jù)團隊開發(fā),開發(fā)出來以后在阿里巴巴內(nèi)部也用了,然后現(xiàn)在正式開源出來。
未來我們希望 Alink 的算法逐漸替換掉 FlinkML 的算法,可能 Alink 就會成為新一代版本的 FlinkML,當然替換還需要一個比較漫長的過程。Alink 包含了非常多的機器學習算法,往 Flink 貢獻或發(fā)布的時候也需要比較大的帶寬,我們擔心整個過程耗時會比較長,所以先把 Alink 單獨開源出來,大家如果有需要的可以先用起來。后面貢獻進展比較順利的情況下,Alink 應該能完全合并到 FlinkML,也就是直接進入 Flink 生態(tài)的主干,這對于 Alink 來說是最好的歸宿,到這個時候 FlinkML 就可以跟 SparkML 完全對應起來了。
提問:除了 Alink 以外,F(xiàn)link 當前在機器學習領域的工作還有哪些進展?和其他計算引擎相比,您如何評價當前 Flink 在機器學習和 AI 領域的工作,它的競爭力足夠強嗎?
莫問: 其實我們還有很多正在進行的工作。機器學習的核心是迭代計算,機器學習訓練就是不停地對數(shù)據(jù)進行迭代訓練,訓練出來一個模型然后上線。在核心訓練的基礎上,F(xiàn)link 正在設計新的迭代計算,因為 Flink 是基于流式計算,所以它的迭代計算可以轉(zhuǎn)化為 mini-batch 的迭代計算,可以根據(jù)數(shù)據(jù)條目數(shù)也可以根據(jù)數(shù)據(jù)段的時長,在流上打出很多細粒度的數(shù)據(jù)段。
Flink 的好處是在流上打細粒度的數(shù)據(jù)段可行性上沒有問題,因為它本來就是純流式的,截成一段一段沒有問題。而 Spark 的迭代是把一個數(shù)據(jù)集做一次迭代,再做一次迭代,這個數(shù)據(jù)集很難切得特別細,切出來一段就是一次任務的運行,細粒度的挑戰(zhàn)比較大。Flink 的好處是本身可以把粒度截得很細,所以重構原有的迭代計算是可行的。
Flink 最早的迭代計算也跟 Spark 一樣,要么是一批迭代要么是一條一條迭代,完全是兩個極端,我們想把它做一個抽象,可以按照時間、大小來設定迭代的 batch 大小,就類似于 Flink 窗口的概念,這樣可以支持嵌套迭代、增量迭代等。我們在引擎層面做好了基于流的迭代技術之后,整個機器學習的訓練就會大幅度加速。雖然算法本身的效果可能是一樣的,但是運行的性能和速度不一樣。
同時它還可以解決在線訓練的問題,比如說互聯(lián)網(wǎng)的日志流、用戶行為是不停產(chǎn)生的,F(xiàn)link 流式迭代可以不間斷地處理用戶產(chǎn)生的實時數(shù)據(jù),可以在線迭代更新,模型可以每隔 5 分鐘更新一次,也可以每隔 1 分鐘更新一次。這樣它的模型上線是一個 7×24 小時環(huán)狀的更新,這樣一套在線學習的體系會給用戶帶來很大的變化,這個變化不是簡單的 30% 的提升或者是工程上的優(yōu)化,而是在使用機器學習的理念上會有優(yōu)化。
這是我們當前正在做的工作,社區(qū)里也已經(jīng)開始討論了,可能會作為 Flink 明年 1-2 個版本的重點。你可以這么認為,F(xiàn)link 去年還是 Unified Engine,今年開始擁抱 AI 了,2019 年我們做的很多工作是偏 SQL 的優(yōu)化,明年我們會更多地切入到 AI,就是 FlinkML 和 AI 場景的方向上。
**提問:阿里是什么時候決定開源 Alink 的?
**
莫問: 去年 Blink 開源的時候,我們就在考慮是否把 Alink 一起開源了。但是后來覺得,第一個開源還沒做,不敢一下子步子邁得這么大,要一步步來,而且 Blink 開源也要準備很多東西。當時我們沒有辦法做到兩個大的項目同時開源,所以就先把 Blink 開源做好。
Blink 開源以后,我們想是不是把 Alink 的算法推到 Flink 就好了。但是發(fā)現(xiàn)往社區(qū)貢獻確實是比較復雜的過程,Blink 在推的時候已經(jīng)占用了很大的帶寬,而社區(qū)的帶寬就那么多,沒有辦法同時做多件事情。社區(qū)也需要一段時間消耗,所以決定先把 Blink 消耗掉,貢獻完了,社區(qū)吃得下,然后再把 Alink 逐步貢獻回社區(qū)。這是沒有辦法跨越的一個過程。
開源是一個很慎重的過程,不能隨意想開就開一個。孩子不能管生不管養(yǎng),要發(fā)東西就要有一個長期的計劃,要負責任的,得給大家一個很明確的信號,這是有長期計劃的,不是放了開源就結束了,以后肯定會有用戶問你們放上去以后管不管?如果我們不想好這些問題,對用戶來說就適得其反,大家覺得你并沒有給大家一個清晰的信號,大家也不敢用。
提問:相比 SparkML,Alink 的亮點是什么?對于開發(fā)者來說在哪些方面會比較有吸引力?
莫問:Alink 一是依賴于 Flink 計算引擎層;第二 Flink 框架中有 UDF 的算子,Alink 本身對算法做了很多優(yōu)化,包括在算法實現(xiàn)上做了細節(jié)的優(yōu)化,比如通信、數(shù)據(jù)訪問、迭代數(shù)據(jù)處理的流程等多方面的優(yōu)化。基于這些優(yōu)化可以讓算法運行的效率更高,同時我們還做了很多配套工具,讓易用性更好。同時 Alink 還有一個核心技術,就是做了很多 FTRL 的算法,是天然針對在線學習的。在線學習需要高頻快速更新的迭代算法,這種情況下 Alink 有天然的優(yōu)勢,像今日頭條、微博的信息流都會經(jīng)常遇到這樣的在線場景。
在離線學習上 Alink 跟 SparkML 對比基本上差不多,只要大家工程化都做得足夠好,離線學習無法打出代差,真正的代差一定是設計上的理念不一樣。設計上、產(chǎn)品形態(tài)、技術形態(tài)不一樣才會有代差明顯的優(yōu)勢。
相比 SparkML,我們的基調(diào)是批式算法基本一致,包括功能和性能,Alink 可以支持算法工程師常用的所有算法,包括聚類、分類、回歸、數(shù)據(jù)分析、特征工程等,這些類型的算法是算法工程師常用的。我們開源之前也對標了 SparkML 所有的算法,做到了 100% 對標。除此之外,Alink 最大的亮點是有流式算法和在線學習,在自己的特色上能做到獨樹一幟,這樣對用戶來說沒有短板,同時優(yōu)勢又很明顯。
后續(xù)規(guī)劃和未來展望
提問:接下來 Flink 會按照什么樣的頻率更新版本?能否透露 Flink 接下來還會有哪些值得期待的新特性或功能?
莫問:3-4 個月,基本上會是一個季度更新一個版本,比如 2020 年 1 月份會發(fā) 1.10,4 月份會發(fā) 1.11。現(xiàn)在還說不好什么時候切 2.0,2.0 應該會是一個非常有里程碑意義的版本。現(xiàn)在 Flink 社區(qū)可以看到非常多的點,不僅有 AI、機器學習,還有今天主題演講 Stephan Ewen 提到的 Stateful Function,也是非常有前景的。其實在線場景還有很多有前景的東西可以挖掘,Serverless(Faas)也是 Flink 后面的方向。Flink 社區(qū)有一點非常好,它剛剛演進到 1.x 版本,還有很大的上升空間,社區(qū)的生命力和狀態(tài)都很好,大家有很多想法想放進去。
提問:未來大數(shù)據(jù)領域還有哪些新的技術方向或趨勢是比較重要的?
莫問: 大數(shù)據(jù)和 AI 的融合可能是一個很好的機會,大家現(xiàn)在純玩大數(shù)據(jù)基本上五花八門什么都玩過了,各種項目層出不窮。AI 也是百花爭鳴,但其實用戶想要的不只是 AI,數(shù)據(jù)在哪?AI 沒有數(shù)據(jù)怎么玩?得把特征算好、樣本算好才能訓練出好的模型。這個模型只有經(jīng)過不斷地迭代反饋才能越來越好。這個過程中數(shù)據(jù)處理和數(shù)據(jù)分析非常重要,如果沒有一套完整的反饋體系,大數(shù)據(jù) +AI 的鏈路玩不通。有再好的引擎,如果沒有閉環(huán)的計算路徑也無法真正發(fā)揮生產(chǎn)或業(yè)務上的效果。
所以要把大數(shù)據(jù) +AI 整套處理做成非常易用、好用的解決方案,這是大家最需要的?,F(xiàn)在可能一個個零散的點大家已經(jīng)做到了,很多東西都能找到對應的開源項目,但是需要有一個整體的平臺把所有技術串起來。
莫問: 明年我們會開源一個新的項目 AI Flow,目前還沒有 Ready,我們希望 AI Flow 可以通過一個工作流程把數(shù)據(jù)處理、預處理,包括模型的訓練、模型管理、模型上線、動態(tài)更新,更新完拿到反饋,反饋之后怎么反向優(yōu)化流程,整個系統(tǒng)串起來。其中每個環(huán)節(jié)都可以使用不同的引擎來實現(xiàn),用 Flink OK,用 Spark 也 OK,就看最后哪個好用。比如可以用 Flink 做大數(shù)據(jù)處理,TensorFlow 做深度學習訓練,F(xiàn)linkML 做流式訓練,把這些都串聯(lián)起來給用戶提供一個端到端的解決方案,這是很有前景的一個項目。
提問:這是不是跟 Databricks 的 MLflow 有點類似?
莫問:AI Flow 大于 MLflow,因為 MLflow 只定義了數(shù)據(jù)格式,AI Flow 可能跟 Kubeflow 更像,AI Flow 偏工作流程,MLflow 偏重于數(shù)據(jù)格式,沒有覆蓋特別完整的工作流程,但我們也不排除 MLflow 將來越做越大。
為什么我們要做這個東西?因為我們在阿里巴巴內(nèi)部非常熟悉整個搜索推薦廣告最核心的系統(tǒng)怎么玩,如何一步步流程化才能形成一套大腦去調(diào)控整個流量,甚至是搜索流量、推薦流量、廣告流量,在業(yè)務流量和現(xiàn)金流量去 battle 等,這是整個商業(yè)化最核心的系統(tǒng),這個系統(tǒng)就是基于大數(shù)據(jù) +AI 的方案,而這套方案離不開 workflow,離不開數(shù)據(jù)格式的定義,離不開不同計算引擎的協(xié)同,這是更大的一個概念。我們明年會在這方面投入更多資源,也會聯(lián)合其他的公司一起來做。
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
網(wǎng)頁名稱:阿里重磅開源全球首個批流一體機器學習平臺Alink,Blink功能已全部貢獻至Flink
網(wǎng)站鏈接:http://www.rwnh.cn/article28/jsdejp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、定制網(wǎng)站、服務器托管、企業(yè)建站、電子商務、關鍵詞優(yōu)化
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)