騰訊宣布推出第三代高性能機器學習計算平臺Angel 并于2017年全面開源

騰訊今日在騰訊大數據技術峰會暨KDD China技術峰會上宣布這一消息,騰訊副總裁姚星先生,及騰訊數據平臺部總經理、首席數據專家蔣杰先生出席了峰會并發表演講。

姚星表示:“人工智能的發展在過去60年中幾經沉浮,今年終于發出了璀璨光芒,很大的原因就是跟云計算和大數據有關,這是一種演進發展的必然結果。如何處理好大數據,如何在有限的計算資源上對這些大數據進行深入挖掘和分析,這是未來整個產業發展和升級的一個大課題。我相信大數據將成為這次產業升級的基礎,核心算法將成為這次產業升級的靈魂。”

“面對騰訊快速增長的數據挖掘需求,我們希望開發一個面向機器學習的、能應對超大規模數據集的、高性能的計算框架,并且它要對用戶足夠友好,具有很低的使用門檻,就這樣,Angel平臺應運而生。”蔣杰表示:“機器學習作為人工智能的一個重要類別,正處于發展初期,開源Angel,就是開放騰訊18年來的海量大數據處理經驗和先進技術。我們連接一切連接的資源,激發更多創意,讓這個好平臺逐步轉化成有價值的生態系統,讓企業運營更有效、產品更智能、用戶體驗更好。”
Angel是騰訊第三代的計算平臺,使用Java和Scala語言開發,面向機器學習的高性能分布式計算框架,由騰訊與香港科技大學、北京大學聯合研發。它采用參數服務器架構,解決了上一代框架的擴展性問題,支持數據并行及模型并行的計算模式,能支持十億級別維度的模型訓練。
不僅如此,Angel還采用了多種業界最新技術和騰訊自主研發技術,如SSP(Stale synchronous Parallel)、異步分布式SGD、多線程參數共享模式HogWild、網絡帶寬流量調度算法、計算和網絡請求流水化、參數更新索引和訓練數據預處理方案等。這些技術使Angel性能大幅提高,達到常見開源系統Spark的數倍到數十倍,能在千萬到十億級的特征維度條件下運行。
在系統易用性上,Angel提供豐富的機器學習算法庫及高度抽象的編程接口、數據計算和模型劃分的自動方案及參數自適應配置,同時,用戶能像使用MR、Spark一樣在Angel上編程,我們還建設了拖拽式的一體化的開發運營門戶,屏蔽底層系統細節,降低用戶使用門檻。另外,Angel還支持深度學習,它支持Caffe、TensorFlow和Torch等業界主流的深度學習框架,為其提供計算加速。
自今年初在騰訊內部上線以來,Angel已應用于騰訊視頻、騰訊社交廣告及用戶畫像挖掘等精準推薦業務。

今年11月,騰訊云大數據聯合團隊在有“計算奧運會”之稱的Sort Benchmark排序競賽中,用時不到99秒完成100TB的數據排序,在測試大規模分布式系統軟硬件架構能力和平臺計算效率的GraySort和MinuteSort兩項排序競賽中奪得4個冠軍,將去年冠軍的紀錄分別提高二到五倍。冠軍的背后是騰訊大數據多年的積累,而Angel更是騰訊大數據下一代的核心計算平臺。
在此次會上,姚星談到了騰訊對于大數據和人工智能的看法。蔣杰詳細分享了此次奪冠背后騰訊大數據的發展之路,及Angel系統構建的生態圈層。以下為演講全文:

演講主題:騰訊AI使命:做每個人的大白,打造廣義通用AI
演講人:姚星 騰訊公司副總裁
大家早上好,非常高興今天參加kdd china技術峰會。
過去的20年是信息時代快速發展的20年,信息產業的發展遠超其他產業。信息產業的發展提升了人類的生活品質,也深深影響著我們這一代人。信息產業的高速發展離不開計算能力的提升,無論是我們使用的處理器計算能力還是網絡傳輸能力,在過往20年發展中都保持了“摩爾定律”的趨勢,使得我們互聯網產品深入千家萬戶,得到了廣泛應用。隨著互聯網產品滲透率的逐步趨穩,互聯網產業今后的發展趨勢在哪里?什么樣的技術、業務形態會引領后續的產業發展?時至今日,我想答案毫無疑問是人工智能。人工智能在過往的60年發展中幾經沉浮,起起落落,在今年散發出璀璨的光芒,人工智能的興起是大數據、云計算科學進步的產物。充分利用計算資源,對海量大數據通過算法進行進一步的挖掘分析,這是互聯網產品和產業的未來發展趨勢。大數據是基礎、核心算法是靈魂。
騰訊公司通過18年的發展今天已經成為了世界級的互聯網公司。過去我們在產品體驗上更加關注的是簡單、好用。通過簡單的方式提升人們的溝通效率,通過簡單的方式讓人們輕松享受數字內容時代。在技術上,我們過去更加關注的是工程技術,也就是海量性能處理能力、海量數據存儲能力、工程架構分布容災能力。未來騰訊必將發展成為一家引領科技的互聯網公司,我們將在大數據、核心算法等技術領域上進行積極的投入和布局,和合作伙伴共同推動互聯網產業的發展。

騰訊公司是一家消息平臺+數字內容的公司,本質上來講我們也是一家大數據公司,今天我們每天產生數千億的收發消息,超過10億的分享圖片,高峰期間百億的收發紅包。每天產生的看新聞、聽音樂、看視頻的流量峰值高達數十T。這么大的數據如何處理好,使用好的確是極具挑戰的。在大數據上騰訊也秉承開放生態理念與合作伙伴一起共建大數據生態,在云、支付、LBS、安全方面,與生態合作伙伴共建基礎設施,與合作伙伴一起助推產業升級。
今年騰訊成立了AI實驗室,我們確立的是四個基礎的研究方向,包括計算機視覺、語音識別,自然語言處理,以及機器學習。我們也確立了四個業務發展方向:首先我們會聚焦于內容AI,主要聚焦于搜索和個性化推薦,除了文本以外的深度內容再加上富媒體內容的深度理解。第二個是游戲AI,這是基于騰訊業務本質特性相關的。我們會打造競技類游戲相關的AI能力。第三個方向我們會構建社交AI,這是基于我們騰訊最主要的社交平臺的AI。相信在未來的產品形態上會出現智能音響也好,智能助手也好。第四個是云AI,我們會把我們的圖象識別能力、語音識別能力、自然語言處理能力以及大數據機器學習的平臺開放給更多的用戶使用。騰訊的AI使命是最終打造廣義通用AI,實現每個人心中的“大白”。使得我們的小朋友更加的“被理解”,使得我們的成年人更加的“被保護”,使得我們的老年人更加的“被照顧”。

目前AI整個行業還處于早期階段,雖然在某些垂直領域已經或者達到了某些人類的平均智能水平,但是這與人的綜合智能還相差甚遠。無論我們有如何先進的算法模型,我們都需要重新訓練數據。無論我們有如何深層的網絡模型,本質上都是通過算力解決問題。這和人與生俱來的智能,以及“創造力”、“舉一反三”、“歸納總結”能力都相差甚遠。但是我們也看到了積極的方向,比如deepmind的reinfocement的強化學習的發展進步,openai的gan生成對抗網絡的發展。這些積極的發展使得AI的領域發展日新月異。
我相信在與會的各位專家和各位從業精英的積極投入和參與下,AI的發展必將朝氣蓬勃、勢不可擋!最后預祝大會圓滿成功!謝謝!

演講主題:Sort Benchmark奪冠背后
演講人:蔣杰 騰訊數據平臺部總經理
大家好,很多人已經知道騰訊獲得了今年的Sort benchmark的排序的4項冠軍,很多朋友來問我,騰訊是怎么做到的,背后支撐的究竟是什么樣的技術?今天,我借這個機會,跟大伙來講講背后的一些故事。
相信很多人看過我們在很多城市機場投放的這個廣告,這個廣告里面畫的是一個賽跑的選手,排序比賽,就跟奧運會的百米賽跑一樣,都要很快。但我想說的是,其實我們更像一個長跑選手,我們在跑馬拉松,這場馬拉松,我們跑了7年。

回顧過去幾年的比賽的成績,幾年前冠軍都是被美國企業壟斷的,最近三年則是BAT拿了冠軍。應該說,這幾年,國內互聯網的發展速度不比美國慢,與此同時,以BAT為代表的國內互聯網企業的計算能力也不落后于美國。
過去幾年,獲得冠軍的團隊,用的基本上都是Hadoop和Spark,其實騰訊的大數據平臺,也是始于Hadoop的。
我們之所以能獲得四項的冠軍,是我們經歷了幾年的打磨,追求極致,我們希望最大限度地壓榨機器的性能。
首先,從成本的角度,只有把硬件壓榨到極致,成本才會低。我們采用的是OpenPower架構的機器,按節點數計算,我們規模只有去年冠軍的六份一,按照今年的硬件價格,我們總的TCO成本遠低于去年冠軍。
在調度層面,我們對調度算法做了深度優化,使得每臺機器的CPU、內存、網絡、磁盤IO等每個環節都能發揮到極致。本次比賽的其中兩項為MinuteSort,比拼的就是一分鐘內的排序數據量,這個時間調度的效率就變得非常重要,而這兩項比賽我們比去年提升了5倍,是提升幅度最高的;這也從另一個方面說明了我們在調度效率上的領先性。總結為一句話,就是最大限度地壓榨了硬件的性能,才讓我們取得這個成績。
目前我們用于比賽的這個集群,已經在我們的現網中用起來了,在高性能計算、圖計算、深度學習等領域支撐騰訊的現網應用。

回顧我們走過的7年,我們是2009年1月開始基于Hadoop來開發我們的大數據平臺,七年的征程,我們歷經了3代平臺的發展。
2009-2011年是我們的第一代平臺,我們的第一代平臺,只支持批量計算的場景,主要就是報表,這個過程,我們重點發展了平臺的可擴展性,我們不斷增大集群的規模,從09年的幾十臺,發展到現在總規模接近3萬臺。總結成幾個字,第一代就是規模化。
第二代,用三個字總結就是實時化。這是2012年到2014年。主要支持在線分析和實時計算的場景,比如實時報表,實時查詢、實時監控等。
第三代是去年到現在,主要建設機器學習平臺,支持騰訊各業務數據挖掘的需求。這是從數據分析到數據挖掘的轉變,三個字總結就是“智能化“。

第一代是離線計算的架構,是基于Hadoop開發的, 我們起名叫TDW,騰訊分布式數據倉庫的意思。
社區的Hadoop迭代慢,單一集群規模小,穩定性和易用性都很差,不能達到騰訊的要求,因此我們按騰訊的業務運營標準,做了深度定制開發,我們著重發展集群的規模,解決Master單點瓶頸不能擴展的問題,我們優化了調度策略來提高Job的并發性,也加強HA容災建設,還有很關鍵的一點的是,我們豐富了Hadoop的周邊生態,建設了配套的工具和產品來降低用戶的使用門檻,語法上,我們兼容Oracle的語法,方便騰訊各產品部門做程序的遷移,Hadoop大數據的性能很強,但是小數據分析的效率很差,我們就集成了PostgreSQL來提升小數據的分析性能,打通Hadoop和PG的訪問界限。
就這樣,我們從最開始的幾十臺、到幾百臺、到幾千臺,幾年以后,在2013年單一集群達到4400臺,2014年單一集群突破8800臺,處于業界領先的水平。目前我們的總規模接近3萬臺。
TDW的建成,解決了我們內部三大業務痛點:
第一,它使我們具備了T/P級的數據處理能力,幾十億、百億級的數據量,基本上30分鐘就能算出來。
第二,它的成本很低,我們可以使用很普通的PC Server,就能達到以前小型機一樣的效果;
第三,容災方面,原來只要有機器宕機,業務的數據肯定就有影響,各種報表、數據查詢,都出不來。現在TDW的機器宕機,業務完全無感知,系統會自動做切換、數據備份等等的事情。
正是解決了業務的這些痛點,業務部門都愿意把計算遷移到TDW。到2012年底,我們把所有原來在Oracle和mysql上跑的報表都切換到TDW。
TDW的建成,讓我們具備了融合所有產品平臺的數據的能力。
以前的各產品的數據都是分散在各自的DB里面的,是一個個數據孤島,現在,我們以用戶為中心,建成了十億用戶量級、每個用戶萬維特征的用戶畫像體系。
以前的用戶畫像,只有十幾個維度主要就是用戶的一些基礎屬性,比如年齡、性別、地域等,以前構建一次要耗費很多天,數據都是按月更新,有了TDW,我們每天更新一次。
這個用戶畫像,應用在騰訊所有跟精準推薦相關的產品里面。
再舉個推薦的例子。推薦相信大家現在都耳熟能詳,但是放在6年前,這還是一個剛剛新興起的應用;TDW 為我們提供了一個快速切入快速支撐的能力。通過 MapReduce 的編程范式,基于 TDW 的平臺,我們可以專注于各種推薦算法邏輯本身的實現,比如大家常見的 CF,MF,LR 這些算法,以及各種 hash 聚類算法;這個時候的推薦技術,面對海量的用戶群體訪問,更多還是基于一種實時查詢的服務方式。
第一代平臺解決了量大的痛點,但是在速度方面還有問題,數據是離線的,任務計算是離線的,實時性差。所以,我們建設了第二代的大數據平臺。
在第一代基礎上,集成了Hadoop的第二代——Spark,同時,還融合了Storm流式計算的框架。這一代平臺的集成,讓我們的計算的粒度從原來的小時,發展到分鐘,直至秒級。
數據采集方面,我們構建了TDBank,讓原來通過接口機傳文件的方式,T+1的粒度,變成了毫秒級的實時采集。在這個采集平臺里面,我們自研的消息中間件,每天采集的消息條數超過6.5萬億,可以說是世界上消息量最大的消息中間件。同時,我們還有高可靠版本的消息中間件,能支持像金融、計費等高一致性的需求,保證消息不丟。
在資源調度層面,我們基于Yarn,發展了我們的Gaia調度平臺,Yarn只支持CPU和內存的維度,而我們的Gaia還支持網絡以及磁盤IO的維度,Yarn只支撐離線計算,Gaia能支持在線的場景,另外,我們還Docker,我們平臺現在每天有1.5個container。
再拿剛才提到的推薦例子,基于第一代平臺的推薦應用會碰到2個問題,一個是隨著用戶量,訪問量的增多,產生的數據會越來越多,多到在有限的時間根本不可能批處理的計算完,還有一點是用戶的行為模式變化很快,需要更快的去更新各種維度的用戶畫像;數據的實時采集讓用戶行為,實時畫像的計算成為可能,這構成了流式計算的 數據流,分布式的流式計算實時更新各個維度的統計量,進一步形成了推薦算法的實時訓練數據,從而把上一代的 offline 的推薦系統變成了 online 的實時推薦系統。在廣告的推薦應用上,我們可以看到每一次的實時加快,都帶來了更大的點擊率提升。

第二代的平臺,實時性和體量方面,都能滿足絕大多數業務需求。但隨著我們的數據量越來越大,我們的瓶頸很快也出現了。
我們在Spark上做數據訓練的時候,每一輪的迭代,在更新數據的時候,都會遇到網絡方面的瓶頸,因為更新數據的地方是一個單點,如果數據的維度很大,這套框架就無法支撐。在我們的實際應用中,千萬級的維度,都可以run得不錯,但是上了億級,性能就非常低了,甚至跑不出來。
所以,我們必須要建設一個能支持超大規模數據集的一套系統,能滿足billion級別的維度的數據訓練,而且,這個系統必須能滿足我們現網應用需求的一個工業級的系統。它能解決big data,以及big model的需求,它既能做數據并行,也能做模型并行。
有兩種思路。
一個是基于第二代平臺的基礎上做演進,解決大規模參數交換的問題。另外一個,就是新建設一個高性能的計算框架。
我們看了當時業內比較流行的幾個產品,GraphLab,主要做圖模型,容錯差;Google的Distbelief,還沒開源;還有CMU Eric Xing的Petuum,當時很火,不過它更多是一個實驗室的產品,易用性和穩定性達不到我們的要求。
看了一圈,我們決定自研,走自研的路。我們前兩代都是基于開源的,第三代則開始了自研的歷程。其實在第二代,我們已經嘗試自研,我們消息中間件,不論是高性能的,還是高可靠的版本,都是我們自研的。他們經歷了騰訊億萬流量的考驗,這也給了我們在自研方面很大的信心。

因此,第三代整體的計算框架方面,我們也走了自研的道路。第三代的平臺,核心是一個叫Angel的高性能計算平臺。
我們聚焦在高性能的計算框架方面,同時,也是我們往機器學習、深度學習演進的一個路線。
相比第二代,第三代的計算框架,可以支持10億級維度的算法訓練,由以前的數據并行,到可以支持模型并行。
同時,我們第三代的平臺,還支持GPU深度學習,支持文本、語音、圖像等非結構化的數據。
Angel是基于參數服務器的一個架構,它跑在我們的Gaia平臺上面的。
它支持BSP、SSP、ASP三種計算模式;支持數據并行以及工業界更看重的模型并行,因為我們主要碰到的還是模型大的問題;
另外,在網絡上我們有個原創的嘗試,我們用了港科大楊老師的團隊做的諸葛弩來做網絡調度,ParameterServer優先服務較慢的Worker,當模型較大時,能明顯降低等待時間,任務總體耗時下降5%~15%。
Angel提供很豐富的算法,支持LR、SVM、LDA、GDBT等等,并且集成了非常豐富的數學函數庫,另外,還提供非常友好的編程界面,能跟Spark、MR對接,你能像用MR、Spark一樣編程。
Angel跟其他平臺相比,比如Petuum,和spark等,就我們的測試結果,在同等量級下,Angel的性能要優于其他平臺。比如我們用Netflix的數據跑的SGD算法,大家看一下這個圖的對比。
同時,Angel更適合超大規模的數據訓練。目前Angel支持了很多騰訊內部的現網業務。
這里舉兩個例子,比如,在構建用戶畫像方面,以前都是基于Hadoop和Spark來做,跑一次模型要1天甚至幾天,話題只有1k;而在Angel上,200多億文檔、幾百萬個詞,3000億的token,1個小時就跑完了。以前Spark能跑的,現在Angel快幾十倍;以前Spark跑不了的,Angel也能輕松跑出來。
再看一個case,視頻的點擊預測,同等數據量下,Angel的性能是Spark的44倍以上。用了Angel以后,我們維度從千萬擴展到億,訓練時間從天縮短到半小時,而準確度也有不小的提升。

Angel不僅僅是一個只做并行計算的平臺,它更是一個生態,我們圍繞Angel,建立了一個小生態圈,它支持Spark之上的MLLib,支持上億的維度的訓練;我們也支持更復雜的圖計算模型;同時支持Caffe、TensorFlow、Torch等深度學習框架,實現這些框架的多機多卡的應用場景。
各位,臨近尾聲了,我想總結一下騰訊大數據平臺發展的三個階段:
我們從離線計算起步,經過實時計算階段,進入了機器學習的時代。
我們從跟隨開源,發展到自研,我們的發展歷經了規模化、實時化,以及智能化的變遷。

最后,我要借這個機會跟大家公布一個消息,那就是:我們的大數據平臺將全面開源。
我們會在明年上半年把Angel以及Angel周邊的系統進行開源。
我們平臺源自開源,我們的發展離不開開源,所以我們會以最大的力度擁抱開源。
其實在開源的道路上,我們一直都在參與:我們第一代平臺的核心,TDW-Hive,已經在2014年就開源了;我們還在很多社區項目貢獻了很多核心代碼,培養了好幾個committer。
而未來,我們的開源力度只會越來越大。
謝謝大家。
來自: http://tech.qq.com/a/20161219/006660.htm