腾讯 AngelFL 联邦学习平台揭秘
作者:AI前線
數據里蘊含著價值。在人工智能時代,機器學習尤其深度學習模型的獲得需要大量的訓練數據作為前提。但是在很多業務場景中,模型的訓練數據往往分散在各個不同的業務團隊、部門、甚至是不同的公司內的。由于用戶隱私,這些數據無法直接使用,形成了所謂的“數據孤島”。近兩年,聯邦學習技術 (Federated Learning)迅速發展,為跨團隊數據合作,打破“數據孤島”提供了新的解決思路,并開始從理論研究邁向批量應用的落地階段。本文系統的介紹了聯邦學習的發展歷程以及業界情況,并重點介紹了TEG數據平臺部研發的AngelFL聯邦學習的技術特點,尤其在真正業務場景中落地時的探索和技術上的考量。
聯邦學習技術介紹
數據孤島
在互聯網和人工智能發展的今天,數據特別是個性化的數據有助于機器學習算法的效果提升。例如,廣告推薦的模型要想獲得針對每個用戶的精準的推薦效果,除了用戶的基本自然屬性之外,還需要這個用戶的行為數據,比如網頁瀏覽行為、上下文信息、購買支付行為等等。但這些行為數據通常在業務APP、新聞站點、游戲或內容等其他產品中,由于數據中包含著用戶的很多個人隱私信息,無法直接拿來使用,數據彼此之間形成了“孤島”。如何在保護用戶隱私的前提下,聯合多個數據源進行模型訓練,成為一個新的挑戰。
數據孤島與隱私發展歷程
針對數據孤島問題,聯邦學習,一種新的機器學習技術為這一挑戰提出了一種的解決方案。谷歌2016年在論文?《Federated Learning: Strategies for Improving Communication Efficiency》?中率先提出了 Federated Learning(聯邦學習)的概念,主要用來解決聯合存在于多個終端(例如移動手機)中的數據進行中心化模型訓練的問題,并應用在輸入法改進等場景。
但此后相當一段時間里,聯邦學習一直處于理論研究的階段,并沒有太多落地的案例。這其中可能有幾方面的原因:首先是缺少需求,最近兩三年人工智能飛速發展,已經到達落地的階段,必然面臨著數據從哪里來、如何打通等問題,但在這之前沒有數據打通的問題,自然也就不會有聯邦學習的需求;其次是技術成熟度不夠,谷歌提出的 Federated Learning 模型中,需要有一個中心服務器,負責收集各方訓練好的本地模型進行聚合,那么問題就在于這個中心服務器是否可信可靠?另外,這個模型要求不同參與方的數據屬性是相同的,例如張三和李四的數據都要求是年齡、身高、性別,雖然他們的具體數值不同,但屬性必須一致。
在 2019 年初發表的論文?《Federated Machine Learning: Concept and Applications》?中,香港科技大學的楊強教授進一步發展了 Federated Learning,提出了 Horizontal(橫向)和 Vertical(縱向)Federated Learning 兩種?框架,如下圖所示,其中,谷歌提出的模型可以算作橫向聯邦的一種。隨著技術不斷發展成熟,以及人工智能落地過程中數據痛點愈發凸顯,聯邦學習得到了更多的關注,學術界和工業界開始聯合起來系統化地研究整個?技術體系,也有越來越多企業開始嘗試引入聯邦學習并將其作為打通多方數據的一種解決方案。
聯邦學習兩種形態:橫向、縱向聯邦在理論發展的同時,聯邦學習技術在工業界也逐漸開始實踐。這里介紹幾個主要的框架:
2019年1月,谷歌發布了TensorFlow 2.0 Alpha版本,其中包括特性TFF(TensorFlow Federated)。各個終端計算本地梯度,并發送到中心服務器Server做FedAvg,Server聚合梯度后更新模型,并推送給各終端。僅橫向聯邦,維度相同,樣本不同。
百度PaddlePaddle機器學習框架也發布了聯邦學習模塊PaddleFL,利用開源FedAvg和基于差異性隱私的SGD算法來實現,思路與TFF類似,需要中心角色輔助。
微眾銀行WeBank提出了FATE聯邦學習框架,FATE采用Python語言開發,同時支持橫向和縱向聯邦,底層基于EggRoll分布式,可視化界面等周邊比較完善。但從實際測試看,仍然存在一些問題:首先在模型上,FATE需要一個可信第三方Collaborator來協調完成數據的加密解密過程,這在實際應用場景中通常不可行;其次在性能和穩定方面,FATE的訓練樣本ID和模型全部存放在Roll中心節點上,受單點機器資源的限制,無法支持大數據量,例如廣告高維稀疏場景;此外系統也缺少Failover容錯機制。
AngelFL聯邦學習平臺
業務需求
AngelFL聯邦學習的發展,主要來自業務需求的驅動。整個平臺構建在Angel智能學習平臺的基礎之上,Angel 已應用于微信支付、QQ、騰訊視頻、騰訊社交廣告及用戶畫像挖掘等業務,隨著廣泛的應用,在保護數據隱私的前提下,聯合多方數據建模的需求日益凸顯。團隊首先梳理整合業務需求,找到共性的關鍵問題;然后調研學術界和業界是否有成熟的解決方案,能滿足業務場景;最后重點解決落地問題,即安全、易用、高效和穩定。
其中業務需求方面主要有以下幾個特點:
90%?的場景是縱向聯邦學習的問題,即 ID 相同、在數據維度上聯合建模。以廣告為例,一方有用戶的基本畫像,主要是靜態標簽,而另一方則有其購買行為、興趣等信息,需求是如何安全有效地聯合兩方的數據。
用戶普遍關心安全問題,即學習過程是否安全。除了最終產出的模型參數,過程中不應該泄露任何一方的數據信息,也不可以反推數據信息的中間結果。
效率和穩定問題,平臺的訓練速度不能太慢,而且要穩定,降低問題調查、任務重跑等代價。
要能兼容現有的業務流程,不要對現有訓練系統改動太大。另外要容易部署,系統不能太復雜。
基于對業務和現有技術方案的調研,團隊重新設計了一種“去中心化”的聯邦學習框架,無需依賴可信第三方。整個系統以 Angel 的高維稀疏訓練平臺作為底層,抽象出“算法協議”層,供實現各種常見機器學習算法。
系統架構
技術上,以兩個業務方 A 和 B 為例,AngelFL聯邦學習系統架構如圖所示(也可以擴展到多個參與方的場景):
AngelFL系統架構圖A、B 雙方分別擁有各自的與用戶相關的數據,存儲在本地集群,在整個聯合建模的訓練過程中,A 和 B 雙方的原始數據均不出本地。可以看到,架構具有以下特點:
A、B 兩方獨立部署 Angel 聯邦學習的本地框架,支持 YARN、K8S 多種資源申請方式,與業務現有系統完全兼容,靈活易用;
本地訓練框架 AngelFL Executor 的計算采用 Spark,充分利用其內存優先和分布式并行的優點,效率高且易于和現有大數據生態(如 HDFS 等)打通;
本地模型保存在 Angel-PS 參數服務器中,支持大規模數據量訓練;同時,PS 寫有 checkpoint,意外失敗的任務可以從上次保存的進度繼續執行,具有很好的容錯性;
模型訓練相關的數據經過加密模塊加密后,在 A、B 兩方之間直接通信而不依賴第三方參與“轉發”,實現了“去中心化“,整個訓練流程僅需要協調雙方的進度即可,能夠增強實際應用中的安全性。
在上述系統框架的基礎上,再抽象出一層算法協議層,利用平臺提供的計算、加密、存儲、狀態同步等基本操作接口,實現各種聯邦機器學習算法。在訓練任務執行時,通常擁有標簽的一方作為訓練的驅動方,算法協議層會控制本地訓練步驟,例如梯度計算、殘差計算、模型更新、消息發送等,同時與 AngelFL 流程調度模塊交互同步執行狀態,并按照協議觸發對方進行下一步動作。
說明:AngelFL聯邦學習平臺構建在 Angel 之上,其核心組件是 Angel-PS 參數服務器。在機器學習領域,當模型的參數規模達到高維例如千億時,單臺機器內存已經無法容納下這樣大規模的數據,必須借助于分布式的方式,利用多臺機器一起才能完成訓練任務,而參數服務器就是其中比較好的解決方案。Angel-PS 針對高維稀疏場景做了大量優化,比如對參數更新做批量處理,將很多在 worker 上的計算提升到 PS 端計算,提升了計算效率和一致性,加快算法收斂速度。Angel-PS 目前支持萬億級模型。同時,整個 Angel 平臺底層基于 Spark 搭建,利用 Spark RDD 的高效和靈活性,很容易與大數據系統如 HDFS 等數據打通,兼容性高。
訓練過程
一個典型的算法過程如下圖所示:
算法訓練流程假設還是兩個業務系統 A 和 B,其中 ID 表示樣本 id 的集合,X 表示維度數據,Y 表示 ID 樣本標簽,聯邦學習的目的是聯合 A 和 B 的 X 來訓練得到能預測 Y 的最優模型。B 擁有標簽,將作為訓練的發起方,過程如下:
1)A、B 雙方提取樣本 ID,通過加密算法加密后,在 B 方進行安全樣本 ID 對齊(PSI),得到雙方共同的 ID 集合的交集 A^B = {u2, u3}; A,B 均不知對方除了交集外的部分;
2)根據交集 ID,雙方提取相應樣本的維度數據 X,先在計算本地模型數據如梯度,然后 A 通過加密方式,將中間數據發送給 B,B 根據標簽計算預測誤差,并將模型更新信息加密后傳回 A;
3)模型收斂后訓練結束,A、B 分別持有模型中與自己維度 X 相關部分的參數,并共同提供模型服務。
技術優化
“去中心化” - AngelFL聯邦學習系統主要采用了密碼學中的同態加密算法,該加密算法有一個特點是:對經過同態加密后的密文數據進行運算,將運算結果解密,與未加密的原始明文數據進行同樣運算的結果是一樣的。利用這種特點,研發團隊對需要雙方交互的模型相關數據采用同態加密,直接發送給對方,對方在密文上完成訓練所需的計算,然后將結果返回,接收方解密后,能得到計算后的結果,而無法獲知其原始數據。
消息通信膨脹 - 這個問題也與同態加密有關。采用高強度加密算法,例如如果采用 2048 位 Paillier 加密,一個浮點數的體積將膨脹到 4096 位。研發團隊采用 bit-packing 的方法壓縮了密文的體積,從而較少網絡傳輸量。
跨網傳輸消息擁塞 - 算法在訓練過程中通常有大量的數據需要交換,這導致網絡傳輸量巨大,而聯邦的雙方一般處于不同網絡域中,如果采用簡單的 RPC 點對點通信,容易引起交換機 in-cast 現象而導致消息擁塞。為了解決這一問題,研發團隊采用 MessageQueue 作為消息管道,控制擁塞并提供消息持久化功能,增強系統穩定性。
加密解密加速 - 聯邦學習涉及大量的數字加密和解密操作,屬于計算密集型任務,可以采用硬件如 GPU 加速來解決,這方面研發團隊正在探索中。
測試結果
LR算法場景測試
作為最基礎的算法,我們用兩方的聯邦LR算法測試了AngelFL的性能,并與業界FATE框架進行了對比,以驗證加入雙方交互以及基于MessageQueue通信等因素對性能的影響。測試采用公共的a9a數據集 (https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/a9a),測試環境硬件和算法參數配置,以及訓練時間如下:
- 測試數據集:a9a公開數據,32561樣本,124維度。
- 測試環境:5臺機器集群
| 參數配置 | ps.partition = 5, executor.num = 1, executor.core = 5, fullbatch, epoch = 30 | egg = 5, partition = 10 fullbatch, epoch = 30 |
| 訓練時間 | 13 min | 31 min |
分析:AngelFL采用了異步MessageQueue消息通信,并且底層加密/解密等耗時操作均采用C++加速,實現了性能上的優化。
GBDT算法場景
除LR算法外,AngelFL還實現了聯邦GBDT算法,在某業務場景的數據集中的性能如下,測試環境:8臺IDC機器,1000MB/s網絡。說明:準確率和時間均指迭代一輪。
| 訓練樣本 | 585萬,500維 | 157萬,600維,177類目 |
| 測試樣本 | 146萬 | 39萬 |
| 模型準確率 | 85% | 87% |
| 訓練時間 | 2.2 Hour | 1.6 Hour |
應用落地
在公司內部,AngelFL聯邦學習已經在金融云、廣告聯合建模等業務中開始落地,并取得初步的效果。AngelFL以技術賦能的方式,為分布在不同部門和團隊的數據搭建互通的橋梁,在保護數據隱私的前提下,使數據合力成為可能。聯邦學習擴展了機器學習能觸達的邊界。隨著人工智能技術的不斷落地,將在跨部門合作、數據隱私保護等方面將會發揮越來越重要的作用,有著廣闊的應用前景。
推薦閱讀:
騰訊高性能圖計算框架Plato及其算法應用
騰訊健康碼 16 億亮碼背后的 Elasticsearch 系統調優實踐
總結
以上是生活随笔為你收集整理的腾讯 AngelFL 联邦学习平台揭秘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯高性能图计算框架Plato及其算法应
- 下一篇: 如何提高自身监控系统的能力?