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