0
本文作者: 楊曉凡 | 2017-06-19 10:25 |
雷鋒網(wǎng) AI 科技評論消息,騰訊的高性能分布式計算平臺Angel 1.0自去年公開宣布后,今天已經(jīng)正式開源。發(fā)布地址為 https://github.com/Tencent/angel,感興趣的開發(fā)者可以下載或者貢獻源碼。
用于支持大規(guī)模機器學習模型運算
據(jù)雷鋒網(wǎng) AI 科技評論了解,騰訊Angel 1.0是騰訊數(shù)據(jù)平臺部與香港科技大學合作、北京大學參與共同開發(fā)的分布式計算框架,它的主要設計目標是為了支持超大維度的機器學習模型運算。
Angel的核心設計理念圍繞模型。它將高維度的大模型切分到多個參數(shù)服務器節(jié)點,并通過高效的模型更新接口和運算函數(shù),以及靈活的同步協(xié)議,實現(xiàn)機器學習算法的高效運行。
在去年公開消息時,Angel已經(jīng)支持了SGD、ADMM優(yōu)化算法,同時提供了一些常用的機器學習模型,現(xiàn)在開源的Angel 1.0.0正式版也新增了Logistic Regression、SVM、KMeans、LDA、MF、GBDT 等機器學習算法的集成。用戶可以方便地在最優(yōu)化算法上層封裝自己的模型。
根據(jù)騰訊數(shù)據(jù)平臺部總經(jīng)理、首席數(shù)據(jù)專家蔣杰的介紹,Angel還可以支持運行Caffe、TensorFlow、Torch等深度學習框架,實現(xiàn)這些框架的多機多卡的應用場景。
Angel基于Java和Scala開發(fā),能在社區(qū)的Yarn上直接調(diào)度運行,并基于PS Service,支持Spark on Angel,未來將會支持圖計算和深度學習框架集成。
根據(jù)騰訊大數(shù)據(jù)部的說法,Angel自去年以來已經(jīng)在千萬級到億級的特征緯度條件下運行SGD用于實際的生產(chǎn)任務,已經(jīng)在騰訊視頻推薦、廣點通等精準推薦業(yè)務上實際應用。他們還在擴大騰訊內(nèi)部的應用范圍,未來目標是支持包括騰訊在內(nèi)多家公司的大規(guī)模機器學習任務。
- 整體架構(gòu)
Angel的整體架構(gòu)參考了谷歌的DistBelief,這是一種最初為了深度學習而設計、使用了參數(shù)服務器來解決巨大模型在訓練時更新問題的架構(gòu)。參數(shù)服務器同樣可用于機器學習中非深度學習的模型,如SGD、ADMM、LBFGS的優(yōu)化算法在面臨在每輪迭代上億個參數(shù)更新的場景中,需要參數(shù)分布式緩存來拓展性能。
如這個系統(tǒng)框圖,Client作為客戶端可以發(fā)送啟動或停止、加載或存儲模型命令,可以獲取運行狀態(tài);具體的任務分配、協(xié)調(diào)調(diào)度、資源申請由Master完成;Parameter Sever復雜存儲和更新參數(shù),一個Angel計算任務中可以包含多個ParameterSever實例,隨著任務啟動而生成,隨著任務結(jié)束而銷毀;Work實例負責具體的模型訓練或者結(jié)果推理,每個Worker可以包含一個或者多個Task,這樣的Task可以更方便地共享Worker的公共資源。
機器模型運算中需要反復迭代更新參數(shù)。Angel采用的Parameter Sever架構(gòu)相比其它類型的架構(gòu)更適合解決巨大模型中的參數(shù)更新問題;實際運行中相比參數(shù)更新方面有單點瓶頸的Spark平臺,Angel能夠取得成倍的性能優(yōu)勢,而且模型越大優(yōu)勢越明顯。
Angel與Spark做了如下比較:在有5000萬條訓練樣本的數(shù)據(jù)集上,采用SGD解的邏輯回歸模型,使用10個工作節(jié)點(Worker),針對不同維度的特征逐一進行了每輪迭代時間和整體收斂時間的比較(這里Angel使用的是BSP模式)。
通過數(shù)據(jù)可見,模型越大Angel對比Spark的優(yōu)勢就越明顯。
- 網(wǎng)絡優(yōu)化
Angel的網(wǎng)絡解決方案使用的是香港科技大學的Chukonu。借助Chukonu,Angel可以通過網(wǎng)絡流量再分配的方式,解決半同步的運算協(xié)調(diào)機制SSP中可能出現(xiàn)的快節(jié)點等待慢節(jié)點的問題,減少了窗口空閑等待時間。
如下圖所示,在1億維度、迭代30輪的效果評測中,可以看到Chukonu使得累積的空閑等待時間大幅度減少,達3.79倍。
以及,Chukonu配合參數(shù)服務器,可以讓慢的節(jié)點有更大的可能獲得最新的參數(shù),因此對比原始的SSP計算模型,算法的收斂性得到了提升。下圖所示,同樣是針對五千萬維度的模型在SSP下的效果評測,原生的Angel任務在30輪迭代后(276秒)loss達到了0.0697,而開啟了Chukonu后,在第19輪迭代(145秒)就已達到更低的loss。
雷鋒網(wǎng) AI 科技評論了解到,去年Angel發(fā)布時,騰訊平臺部總經(jīng)理、首席數(shù)據(jù)專家蔣杰對騰訊計算平臺的發(fā)展歷程做過介紹。2009到2011年的第一代平臺主要目標是規(guī)模化,形成了TDW(騰訊分布式數(shù)據(jù)倉庫)這樣的架構(gòu);2012到2014年第二代平臺主要是實時化,把大規(guī)模計算搬到平臺上,支持了實時性強、規(guī)模大的業(yè)務需求,但是基于Spark的數(shù)據(jù)訓練就遇到了超大維度時出現(xiàn)瓶頸的問題。
這樣,騰訊開始建設新的高性能計算框架,要能支持超大規(guī)模數(shù)據(jù)集,能完成十億級別維度的訓練。這就是騰訊的第三臺計算平臺Angel。圍繞Angel,騰訊還建立了一個小生態(tài)圈,可以支持Spark之上的MLLib,支持上億的維度的訓練;也支持更復雜的圖計算模型。
也就是依靠Angel,騰訊獲得了2016年的Sort benchmark的排序的4項冠軍,用98.8秒時間完成了100T數(shù)據(jù)的排序,刷新了四項世界紀錄。2015年的這項排序時間還高達329秒。
騰訊開源的Angel給頭疼于大規(guī)模機器學習模型計算的業(yè)內(nèi)人員提供了一個新選擇。發(fā)展自己技術、擴大自己的平臺的同時,騰訊也承諾未來的開源力度只會越來越大。
相關文章:
騰訊大數(shù)據(jù)宣布開源第三代高性能計算平臺Angel | 重磅
雷峰網(wǎng)版權文章,未經(jīng)授權禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。