Categories
程式開發

對話騰訊大數據團隊:自研聯邦學習系統的技術實踐和難點


近兩年,聯邦學習發展迅速,開始從理論研究邁向批量應用的落地階段,越來越多企業嘗試引入聯邦學習,用它來解決人工智能大規模落地過程中遭遇的數據瓶頸問題。但現成的聯邦學習工具和框架並非拿來即用的“靈丹妙藥”,聯邦學習要真正在企業實際業務場景中發揮作用,仍有許多問題需要摸索,比如如何匹配業務的實際需求、如何兼容現有業務流程、如何盡可能減少對已有訓練系統的改動等。為此,InfoQ採訪了騰訊TEG數據平台部的智能學習團隊,深入了解聯邦學習在騰訊的實踐情況,以及他們對聯邦學習技術難點的解決思路。

聯邦學習技術發展歷程

早在2016年,谷歌就在論文《Federated Learning: Strategies for Improving Communication Efficiency》中率先提出了Federated Learning(聯邦學習)的概念,主要用來解決聯合存在於多個終端(例如移動手機)中的數據進行中心化模型訓練的問題,並應用在輸入法改進等場景。

但此後相當一段時間裡,聯邦學習一直處於理論研究的階段,並沒有太多落地的案例。這其中可能有幾方面的原因:首先是缺少需求,最近兩三年人工智能飛速發展,已經到達落地的階段,必然面臨著數據從哪裡來、如何打通等問題,但在這之前沒有數據打通的問題,自然也就不會有聯邦學習的需求;其次是技術成熟度不夠,谷歌提出的Federated Learning模型中,需要有一個中心服務器,負責收集各方訓練好的本地模型進行聚合,那麼問題就在於這個中心服務器是否可信可靠?另外,這個模型要求不同參與方的數據屬性是相同的,例如張三和李四的數據都要求是年齡、身高、性別,雖然他們的具體數值不同,但屬性必須一致。

在2019年初發表的論文《Federated Machine Learning: Concept and Applications》中,香港科技大學的楊強教授進一步發展了Federated Learning,提出了Horizo​​ntal(橫向)和Vertical(縱向)Federated Learning兩種框架,如下圖1所示,其中,谷歌提出的模型可以算作橫向聯邦的一種。

對話騰訊大數據團隊:自研聯邦學習系統的技術實踐和難點 9

圖 1. 聯邦學習兩種形態:橫向、縱向

隨著技術不斷發展成熟,以及人工智能落地過程中數據痛點愈發凸顯,聯邦學習得到了更多的關注,學術界和工業界開始聯合起來系統化地研究整個技術體系,也有越來越多企業開始嘗試引入聯邦學習並將其作為打通多方數據的一種解決方案。

騰訊聯邦學習實踐

基於2016年推出的自研分佈式機器學習平台Angel(2017年在GitHub上開源),騰訊TEG數據平台部的Angel智能學習團隊正在進行聯邦學習項目的攻堅工作。據介紹,Angel聯邦學習的發展,主要來自業務需求的驅動。

在機器學習,尤其是深度學習中,模型的獲得需要大量的訓練數據作為前提。自2016年年初在騰訊內部上線以來,Angel已應用於微信支付、QQ、騰訊視頻、騰訊社交廣告及用戶畫像挖掘等業務。隨著Angel在公司內部和合作夥伴中應用越來越廣泛,在很多業務場景中,模型的訓練數據往往分散在各個不同的業務團隊、部門,甚至是不同的公司內。例如,廣告推薦的模型要想獲得針對每個用戶的精準推薦效果,除了用戶的基本自然屬性之外,還需要這個用戶的行為數據,比如網頁瀏覽行為、上下文信息、購買支付行為等等,但這些行為數據通常在瀏覽器、新聞站點、遊戲或內容等其他產品中,無法直接用來訓練廣告模型。如何在保護用戶隱私的前提下,聯合多個數據源進行模型訓練,成為Angel智能學習團隊的一項新挑戰。

2019年10月初,團隊內部成立專項組,著手研發聯邦學習平台。首先梳理整合業務需求,找到共性的關鍵問題;然後調研學術界和業界是否有成熟的解決方案,能滿足業務場景;最後重點解決落地問題,即安全、易用、高效和穩定。

其中業務需求方面主要有以下幾個特點:

  • 90%的場景是縱向聯邦學習的問題,即ID相同、在數據維度上聯合建模。以廣告為例,一方有用戶的基本畫像,主要是靜態標籤,而另一方則有其購買行為、興趣等信息,需求是如何安全有效地聯合兩方的數據。
  • 用戶普遍關心安全問題,即學習過程是否安全。除了最終產出的模型參數,過程中不應該洩露任何一方的數據信息,也不可以反推數據信息的中間結果。
  • 效率和穩定問題,平台的訓練速度不能太慢,而且要穩定,降低問題調查、任務重跑等代價。
  • 要能兼容現有的業務流程,不要對現有訓練系統改動太大。另外要容易部署,系統不能太複雜。

基於對業務和現有技術方案的調研,團隊重新設計了一種“去中心化”的聯邦學習框架,無需依賴可信第三方。整個系統以Angel的高維稀疏訓練平台作為底層,抽像出“算法協議”層,供實現各種常見機器學習算法。

Angel聯邦學習系統架構

從技術層面看,分佈式機器學習平台Angel的架構如圖2所示,其核心組件是Angel PS參數服務器。在機器學習領域,當模型的參數規模達到高維例如千億時,單台機器內存已經無法容納下這樣大規模的數據,必須藉助於分佈式的方式,利用多台機器一起才能完成訓練任務,而參數服務器就是其中比較好的解決方案。 Angel PS針對高維稀疏場景做了大量優化,比如對參數更新做批量處理,將很多在worker上的計算提升到PS端計算,提升了計算效率和一致性,加快算法收斂速度。 Angel PS目前支持萬億級模型。同時,整個Angel平台底層基於Spark搭建,利用Spark RDD的高效和靈活性,很容易與大數據系統如HDFS等數據打通,兼容性高;後端可以接入TensorFlow、PyTorch等作為運行時算子。

對話騰訊大數據團隊:自研聯邦學習系統的技術實踐和難點 10

圖 2. Angel機器學習平台架構

騰訊目前整個聯邦學習框架構建在Angel之上,以兩個業務方A和B為例,Angel聯邦學習系統架構如圖3所示(也可以擴展到多個參與方的場景)。

對話騰訊大數據團隊:自研聯邦學習系統的技術實踐和難點 11

圖 3. Angel聯邦學習系統架構

A、B雙方分別擁有各自的與用戶相關的數據,存儲在本地集群,在整個聯合建模的訓練過程中,A和B雙方的原始數據均不出本地。可以看到,架構具有以下特點:

  1. A、B兩方獨立部署Angel聯邦學習的本地框架,支持YARN、K8S多種資源申請方式,與業務現有系統完全兼容,靈活易用;
  2. 本地訓練框架Angel-FL Executor的計算採用Spark,充分利用其內存優先和分佈式並行的優點,效率高且易於和現有大數據生態(如HDFS等)打通;
  3. 本地模型保存在Angel-PS參數服務器中,支持大規模數據量訓練;同時,PS寫有checkpoint,意外失敗的任務可以從上次保存的進度繼續執行,具有很好的容錯性;
  4. 模型訓練相關的數據經過加密模塊加密後,在A、B兩方之間直接通信而不依賴第三方參與“轉發”,實現了“去中心化“,整個訓練流程僅需要協調雙方的進度即可,能夠增強實際應用中的安全性。

在上述系統框架的基礎上,再抽像出一層算法協議層,利用平台提供的計算、加密、存儲、狀態同步等基本操作接口,實現各種聯邦機器學習算法。在訓練任務執行時,通常擁有標籤的一方作為訓練的驅動方,算法協議層會控製本地訓練步驟,例如梯度計算、殘差計算、模型更新、消息發送等,同時與Angel-FL流程調度模塊交互同步執行狀態,並按照協議觸發對方進行下一步動作。

一個典型的算法過程如下圖4所示:

對話騰訊大數據團隊:自研聯邦學習系統的技術實踐和難點 12

圖 4. 聯邦學習訓練過程

假設還是兩個業務系統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相關部分的參數,並共同提供模型服務。

2019年年底,Angel智能學習團隊已經完成了上圖中Angel聯邦學習框架的Demo原型驗證,證明了系統可以滿足業務場景的需求,並開始產品系統的開發。

技術難點

在技​​術層面,Angel聯邦學習系統存在幾個主要的難點:

  • “去中心化”。 Angel聯邦學習系統主要採用了密碼學中的同態加密算法,該加密算法有一個特點是:對經過同態加密後的密文數據進行運算,將運算結果解密,與未加密的原始明文數據進行同樣運算的結果是一樣的。利用這種特點,研發團隊對需要雙方交互的模型相關數據採用同態加密,直接發送給對方,對方在密文上完成訓練所需的計算,然後將結果返回,接收方解密後,能得到計算後的結果,而無法獲知其原始數據。
  • 消息通信膨脹,這個問題也與同態加密有關。採用高強度加密算法,例如如果採用2048位Paillier加密,一個浮點數的體積將膨脹到4096位。研發團隊採用bit-packing的方法壓縮了密文的體積,從而較少網絡傳輸量。
  • 跨網傳輸消息擁塞。算法在訓練過程中通常有大量的數據需要交換,這導致網絡傳輸量巨大,而聯邦的雙方一般處於不同網絡域中,如果採用簡單的RPC點對點通信,容易引起交換機in-cast現象而導致消息擁塞。為了解決這一問題,研發團隊採用MessageQueue作為消息管道,控制擁塞並提供消息持久化功能,增強系統穩定性。
  • 加密解密加速。聯邦學習涉及大量的數字加密和解密操作,屬於計算密集型任務,可以採用硬件如GPU加速來解決,這方面研發團隊正在探索中。

早期應用

目前,整個Angel聯邦學習框架已初步成型,並逐漸在實際場景中落地。 在騰訊內部,Angel聯邦學習已經在金融私有云、廣告聯合建模等業務中開始嘗試落地應用。

以廣告場景為例,廣告用戶畫像數據庫中有用戶的基礎屬性標籤,如性別、年齡等,而其他業務上則有更豐富的行為數據,如何綜合這些數據維度給用戶更好的廣告推薦?針對這個場景,Angel智能學習團隊用多分類問題建模,以候選廣告為分類標籤,採用聯邦GBDT算法來訓練分類器。在500百萬訓練樣本、100萬測試樣本、500維數據特徵的數據集上,聯邦GBDT算法的訓練和測試ACC準確率均達到80%以上,具體提升指標還在業務放量收集中。

另外,Angel智能學習團隊還在騰訊內部籌建了聯合項目組,由多個團隊參與共建,接下來將對聯邦學習框架做進一步的性能優化,並開發更多聯邦學習算法,例如FM、神經網絡等。

未來展望

雖然聯邦學習技術正在快速演進,但從國內企業的整體落地情況來看,聯邦學習在業界還處於早期階段。在安全標准上,還沒有一套完善且業界都認可的安全認定標准出台;加密和解密帶來的計算量劇增也需要性能優化;深度學習等複雜算法如何改造成聯邦學習模式也是面臨的挑戰。

目前,不同企業和研究團隊在上述這些技術發展的細節上還存在分歧,但Angel智能學習團隊認為這並不妨礙聯邦學習在各個實際場景的應用,分歧反而可能成為促進發展的催化劑,過多糾結於這些分歧,不如去應用場景中尋找答案。

和大多數技術的發展一樣,聯邦學習技術也會經歷概念萌芽,到低谷期,再到逐漸被重視的過程。在Angel智能學習團隊看來,聯邦學習技術有其獨特的價值,如果說常規機器學習解決的是一個部門自有數據的模型訓練問題,那麼聯邦學習則是解決不同部門的數據如何訓練模型的問題,擴展了機器學習能觸達的邊界。隨著人工智能技術的不斷落地,聯邦學習在跨部門合作、數據隱私保護等方面將會發揮越來越重要的作用,有著廣闊的應用前景。

本文由InfoQ粵港澳大灣區內容中心採訪報導,我們重點關注大灣區AI、金融科技、智能硬件、物聯網、5G等前沿技術動態及相關產業、公司報導,尋求報導請聯繫郵箱:natalie. [email protected]