騰訊大數據第三代高性能計算平臺Angel

消息來源:測試文章2       發布時間:2016-12-29 18:05

 

本月中旬,騰訊大數據在“騰訊大數據技術峰會暨KDD China技術峰會”上宣布推出面向機器學習的第三代高性能計算平臺——Angel,并預計于2017年第一季度開放其源代碼,鼓勵業界工程師、學者和技術人員大規模學習使用,激發機器學習領域的更多創新應用與良好生態發展。

 

那么,Angel是如何“以己之翼、聚眾之力”,如何在蓬勃發展的機器學習浪潮中展現自己的光輝,請跟隨我們,走進Angel。

 

Angel簡介

 
 
 
 
 
 

 

Angel是騰訊大數據部門第三代的計算平臺,使用Java和Scala語言開發,面向機器學習的高性能分布式計算框架,由騰訊大數據與香港科技大學、北京大學聯合研發。它采用參數服務器架構,解決了上一代框架的擴展性問題,支持數據并行及模型并行的計算模式,能支持十億級別維度的模型訓練。

 

自今年初在騰訊內部上線以來,Angel已應用于騰訊視頻、騰訊社交廣告及用戶畫像挖掘等精準推薦業務。

 

Angel的主要優點包括以下幾個方面:

1. 能高效支持超大規模(十億)維度的數據訓練;

2. 同樣數據量下,比Spark、Petuum等其他的計算平臺性能更好

3. 有豐富的算法庫及計算函數庫友好的編程接口,讓用戶像使用MR、Spark一樣編程;

4. 豐富的配套生態,既有一體化的運營及開發門戶,又能支持深度學習、圖計算等等其他類型的機器學習框架,讓用戶在一個平臺能開發多種類型的應用。

 

 

Angel性能優勢

 
 
 
 
 
 

 

Angel采用了多種業界最新技術和騰訊大數據自主研發技術,如SSP(Stale synchronous Parallel)、異步分布式SGD、多線程參數共享模式HogWild、網絡帶寬流量調度算法、計算和網絡請求流水化、參數更新索引和訓練數據預處理方案等。

 

這些技術使Angel性能大幅提高,達到常見開源系統Spark的數倍到數十倍(即處理同等計算條件下,Spark運行時間是Angel的數倍到數十倍),且Angel能在千萬到十億級的特征維度條件下運行。

 

 
 

Angel的性能項目測試結果

 

同等數據量下的性能測試


Angel跟其他平臺相比,比如Petuum,和spark等,在同等量級下的測試結果,Angel的性能要優于其他平臺。比如用Netflix的數據跑的SGD算法,結果可以看上圖中的對比。

 

超大規模數據的訓練測試


目前Angel支持了很多騰訊內部的現網業務。舉兩個例子,比如,在構建用戶畫像方面,以前都是基于Hadoop和Spark來做,跑一次模型要1天甚至幾天,話題只有1k;而在Angel上,20多億文檔、幾百萬個詞,3000億的token,只需1個小時。以前Spark能跑的,現在Angel快幾十倍;以前Spark跑不了的,Angel也能輕松跑出來。

 

大規模數據集的訓練能力


例如騰訊視頻的點擊預測,同等數據量下,Angel的性能是Spark的44倍以上。用了Angel以后,維度從千萬擴展到億,訓練時間從天縮短到半小時,而準確度也有很大的提升。

 
 

 

Angel易用性

 
 
 
 
 
 

 

在系統易用性上,Angel提供豐富的機器學習算法庫及高度抽象的編程接口、數據計算和模型劃分的自動方案及參數自適應配置,同時,用戶能像使用MR、Spark一樣在Angel上編程,我們還建設了拖拽式、一體化的開發運營門戶,屏蔽底層系統細節,降低用戶使用門檻。另外,Angel還支持深度學習,它支持Caffe、TensorFlow和Torch等業界主流的深度學習框架,為其提供計算加速。

 

簡而言之,Angel的易用性表現在:

 

第一,  我們提供很豐富的機器學習算法庫,以及數學運算算法庫

 

第二, 我們提供很友好的高度抽象的編程接口,能跟Spark、MR對接,開發人員能像用MR、Spark一樣編程;

 

第三, 我們提供了一體化的拖拽式的開發及運營門戶,用戶不需要編程或只需要很少的開發量就能完成算法訓練;

 

第四, 我們內置數據切分、數據計算和模型劃分的自動方案參數自適應配置等功能,并屏蔽底層系統細節,用戶可以很方便進行數據預處理;

 

第五, Angel還能支持多種高緯度機器學習的場景,比如支持Spark的MLLib,支持Graph圖計算、還支持深度學習如Torch和TensorFlow等業界主流的機器學習框架,提供計算加速。

 

 

Angel架構

 
 
 
 
 
 

 

Angel是基于參數服務器的一個架構,整體架構上參考了谷歌的DistBelief。Angel在運算中支持BSP、SSP、ASP三種計算模型,其中SSP是由卡耐基梅隆大學EricXing在Petuum項目中驗證的計算模型,能在機器學習的這種特定運算場景下提升縮短收斂時間。Angel支持數據并行及模型并行。

 

在網絡上有原創的嘗試,使用了港科大楊強教授的團隊做的諸葛弩來做網絡調度,ParameterServer優先服務較慢的Worker,當模型較大時,能明顯降低等待時間,任務總體耗時下降5%~15%。

 

另外,Angel整體是跑在Gaia(Yarn)平臺上面的。

 

Angel架構圖

 

主要的模塊有3個:

Master:主控節點,負責資源申請和分配,以及任務的管理。

 

ParameterServer:包含多個節點,可對參數進行橫向擴展,解決參數匯總更新的單點瓶頸,支持BSP,SSP,ASP等多種計算模型,隨著一個任務的啟動而生成,任務結束而銷毀,負責在該任務訓練過程中的參數的更新和存儲。

 

WorkerGroup:一個WG包含多個Worker,WG內部實現模型并行,WG之間實現數據并行, 獨立進程運行于Yarn的Container中。

 

Angel已經支持了20多種不同算法,包括SGD、ADMM優化算法等,我們也開放比較簡易的編程接口,用戶也可以比較方便的編寫自定義的算法,實現高效的ps模型。并提供了高效的向量及矩陣運算庫(稀疏/稠密),方便了用戶自由選擇數據、參數的表達形式。在優化算法方面,Angel已實現了SGD、ADMM,并支持Latent DirichletAllocation (LDA)、MatrixFactorization (MF)、LogisticRegression (LR) 、Support Vector Machine(SVM) 等。

 

開源的意義

 
 
 
 
 
 

 

Angel不僅僅是一個只做并行計算的平臺,它更是一個生態。

 

我們圍繞Angel,建立了一個小生態圈,它支持Spark之上的MLLib,支持上億的維度的訓練;我們也支持更復雜的圖計算模型;同時支持Caffe、TensorFlow、Torch等深度學習框架,實現這些框架的多機多卡的應用場景。

 

騰訊大數據平臺來自開源的社區,受益于開源的社區中,所以我們自然而然地希望回饋社區。開源,讓開放者和開發者都能受益,創造一個共建共贏的生態圈。在這里,開發者能節約學習和操作的時間,提升開發效率,去花時間想更好的創意,而開放者能受益于社區的力量,更快完善項目,構建一個更好的生態圈。

 

我們目前希望能豐富Angel配套生態圈,進一步降低用戶使用門檻,促進更多開發人員,包括學校與企業,參與共建Angel開源社區。而通過推動Angel的發展,最終能讓更多用戶能快速、輕松地建立有大規模計算能力的平臺。

我們一直都向社區做貢獻,開放了很多源代碼,我們第一代平臺的核心,TDW-Hive,已經在2014年就開源了;培養了幾個項目的committer,這種開放的腳步不會停止。

 

我們平臺源自開源,我們的發展離不開開源,所以我們會以最大的力度擁抱開源。

 

 

  附:騰訊大數據平臺發展歷史

 

騰訊大數據平臺發展至今已走過了7年,回顧走過的7年,從2009年1月開始基于Hadoop來開發騰訊大數據平臺,七年的征程,我們歷經了3代平臺的發展。

 

2009-2011年是我們的第一代平臺,是基于Hadoop開發的, 命名為TDW,騰訊分布式數據倉庫。第一代是離線計算的架構,主要支持批量計算的場景,從09年的幾十臺,發展到現在總規模接近3萬臺,產生規模化

 

TDW的建成,讓我們具備了融合所有產品平臺的數據的能力。

 

以前的各產品的數據都是分散在各自的DB里面的,是一個個數據孤島,現在,我們以用戶為中心,建成了十億用戶量級、每個用戶萬維特征的用戶畫像體系。這個用戶畫像,應用在騰訊所有跟精準推薦相關的產品里面。

 

第二代,用三個字總結就是實時化。這是2012年到2014年。主要支持在線分析和實時計算的場景,比如實時報表,實時查詢、實時監控等。

 

這一代平臺的集成,讓我們的計算的粒度從原來的小時,發展到分鐘,直至秒級。

 

數據采集方面,我們構建了TDBank;在資源調度層面,我們基于Yarn,發展了我們的Gaia調度平臺;另外,我們還支持doctor,我們平臺現在每天有1.5億container。

 

因此,我們的推薦系統基于此實現了offline 到 online 的轉換。在廣告的推薦應用上,我們可以看到每一次的實時加快,都帶來了更大的點擊率提升。


第三代是2015年至今,主要建設機器學習平臺,支持騰訊各業務數據挖掘的需求。這是從數據分析到數據挖掘的轉變,三個字總結就是“智能化”。

 

由于業務規模不斷擴展,我們需要建設一個能支持超大規模數據集的一套系統,能滿足billion級別的維度的數據訓練,而且,這個系統必須能滿足我們現網應用需求的一個工業級的系統。它能解決big data,以及big model的需求,它既能做數據并行,也能做模型并行

 

因此,第三代高性能計算平臺應運而生。我們聚焦在高性能的計算框架方面,同時,也是我們往機器學習、深度學習演進的一個路線。

 

相比第二代,第三代的計算框架,可以支持10億級維度的算法訓練,由以前的數據并行,到可以支持模型并行。

 

同時,我們第三代的平臺,還支持GPU深度學習,支持文本、語音、圖像等非結構化的數據。

 

排列五进500期开奖号码