林偉偉 石 方 曾 嵐 李董東 許銀海 劉 波
1 (華南理工大學計算機科學與工程學院 廣州 510006)2 (吉林大學數學學院 長春 130012)
3 (華南師范大學計算機學院 廣州 510631)
人工智能(artificial intelligence, AI)從1995 年達特茅斯會議開始經過了兩起兩落的發展.第1 個高峰期,自動化算法的提出使得人們看到了AI 的希望,但是受計算能力的限制大規模任務訓練無法完成,AI 進入了第1 個低谷.第2 個高峰期,霍普菲爾特神經網絡(Hopfiled neural network, HNN)和反向(back propagation, BP)神經網絡的提出使得大規模網絡訓練成為可能.但是由于算力和數據不夠導致AI 進入了第2 個低谷.隨著深度神經網絡的提出、硬件設備計算能力的提升以及大數據的出現,AI 迎來了第3個高峰.特別是近年來智能邊緣設備的激增,海量的數據更是推動了邊緣協同技術的發展.許多研究人員嘗試將AI 技術和邊緣計算結合起來,挖掘龐大邊緣設備的巨大潛力.其中,Neurosurgeon[1]可以說是較具代表性的研究之一,它的基本思想是將一個完整的深度神經網絡分割成幾個更小的部分并將它們下放到邊緣設備進行訓練,依靠邊緣設備和用戶之間的低延遲,可以顯著提高模型訓練速度.
雖然大數據時代提供了海量數據,但是大部分行業中的數據都是以孤島形式存在.由于隱私安全、公司制度等問題,即使同一個公司的不同部門之間實現數據整合也非常困難.因此,在現實中想要聯合各地的各個機構進行數據交流是一項艱巨的任務.由此可見,“數據孤島”[2]問題和數據隱私安全問題成為了制約AI 發展的重要因素.
為了解決存在的問題,聯邦學習(federated learning,FL)應運而生,并被成功應用于工業界和學術界.2016年,谷歌公司在安卓手機終端研究機器學習時提出了聯邦學習這一概念和技術[3-4],旨在保護隱私安全的前提下進行各參與方的數據交流.具體來講,多個數據擁有者(如移動設備)可以在中央服務器(如服務提供商)協調下訓練模型.且在訓練過程中,各參與方的原始數據始終保留在本地,服務器主要通過加密機制下的參數交換建立共有模型.
可以看出,聯邦學習技術是一種“合作共贏”的模式,在這種聯邦機制下,聯邦系統幫助各參與方建立了一個“共同富裕”的策略.特別是對于各商業企業,聯邦學習可以實現不同行業間的數據交流,打破數據壁壘,實現各行業間的協同發展.因此,隨著聯邦學習研究的不斷深入,各科研團隊與公司紛紛推出了適用于不同場景的聯邦學習框架,如FATE(federated AI technology enabler)[5]和TensorFlow Federated[6]等.
據中國信息通信研究院推出的報告顯示,2020年通過評測的聯邦學習產品多達18 款,擁有聯邦學習框架和產品的企業超過60 多家.除了Google 開源的TensorFlow Federated[7]、OpenMined 開源的PySyft[8]、南加州大學團隊的FedML[9]和劍橋大學團隊的Flower[10]外,業界內較為成熟的聯邦學習框架還有微眾銀行的FATE[5]和百度的PaddleFL[11].根據各框架的受眾定位,其主要被應用于工業產品研究和學術研究,以幫助業界的研究人員了解聯邦學習的原理并進一步促進聯邦學習理論、算法以及隱私安全等方面的優化和創新.由此可見,聯邦學習框架是學術研究和工業應用的基石,然而,盡管聯邦學習的研究和開源框架的開發進展迅速,但目前仍鮮有文獻針對各框架進行系統分析和比較.因此,為了幫助大家更系統、更快速地了解聯邦學習框架,本文根據各開源框架在業界的受眾程度,選取具有代表性的PySyft,FATE,TensorFlow Federated,PaddleFL, FedML,Flower 框架進行詳細分析和比較.針對不同類型的研究框架,本文首先從框架的系統架構和系統功能2 個層次出發分別對各框架進行詳細分析;其次從算法、隱私機制、計算范式、學習類型、工業支持、可視化、硬件類型等多個維度對不同框架進行對比分析.同時本文基于目前框架存在的問題,進一步討論了未來可能的研究發展方向,為開源框架的建設創新、結構優化、安全優化以及算法優化等提供有效思路.
聯邦學習是一種加密的分布式機器學習范式,一般由多個客戶端(如移動設備)和一個中央服務器(如服務提供商)組成.其特點是各參與客戶端的數據始終保持在用戶本地,以最大限度保障客戶端數據安全.
聯邦學習常用的框架包含2 種:中心化架構和去中心化架構.中心化架構也被稱作客戶端-服務器架構,在該架構中,各參與客戶端利用自己的本地數據和本地資源進行本地訓練,待訓練完成后再將脫敏參數上傳到服務器進行整合,其具體架構如圖1 所示.中心化架構的基本流程大致可以分3 步:1)分發全局模型.中央服務器初始化全局模型,并根據不同的客戶端狀態信息(如是否充電、是否為計費網絡等)選擇參與訓練的客戶端,并將初始化后的模型結構和參數分發給所選客戶端.2)訓練本地模型并發回更新.客戶端收到模型后利用本地數據執行模型訓練,在訓練一定次數之后,將更新的模型參數發送給服務器.3)聚合與更新.服務器對所選客戶端參數進行聚合后更新全局模型,并將更新后的模型及參數發送給各客戶端,通過重復這3 個步驟直到停止訓練.

Fig.1 Centralized architecture of federated learning system圖1 聯邦學習系統中心化架構
不同于中心化架構,在去中心化的聯邦學習[12]架構中,由于各參與客戶端可以直接通信,不需要借助第三方(服務器),因此也被稱作對等網絡架構,其架構如圖2 所示.在該架構中,聯邦學習的基本流程與中心化架構相似,不同之處在于訓練全局模型的任務是由某一個參與方發起,且當其他參與方對模型進行訓練后,各參與方需要將其本地模型加密傳輸給其余參與方.雖然該架構減少了第三方服務器的參與,但是由于所有模型參數的交互都是加密的,因此需要更多的操作進行加密和解密操作.目前在工業界和學術界研究更多的還是基于中心化的聯邦學習架構.

Fig.2 Decentralized architecture of federated learning system圖2 聯邦學習系統去中心化架構
此外,在聯邦學習系統中,各參與方的數據又具有不同的分布特征.若根據參與方之間數據重疊程度的不同,聯邦學習又可以分為橫向聯邦學習[13]、縱向聯邦學習[14]以及遷移聯邦學習[15].
如圖3 所示,橫向聯邦學習也稱為特征對齊的聯邦學習,適用于各參與方之間數據特征空間重疊較多而用戶空間重疊較少的情況.目前橫向聯邦學習的經典框架是FedAvg[3],喚醒單詞識別[16]和輸入法下一詞預測[17]是橫向聯邦的典型應用.縱向聯邦學習如圖4 所示,即樣本對齊的聯邦學習,適用于各參與方之間用戶空間重疊較多而特征空間重疊較少或沒有重疊的場景.目前支持縱向聯邦學習的經典框架包括FATE,PaddleFL,FedML.聯邦遷移學習,如圖5所示,是對橫向聯邦學習和縱向聯邦學習的補充.聯邦遷移學習用于克服數據或標簽不足的情況,以解決單邊數據規模小和標簽樣本少的問題,適用于各參與方用戶空間和特征空間都重疊較少的場景.目前支持聯邦遷移學習的框架主要為FATE.

Fig.3 Horizontal federated learning圖3 橫向聯邦學習

Fig.4 Vertical federated learning圖4 縱向聯邦學習
從系統架構上看,聯邦學習與傳統分布式學習都是由服務器和多個分布式節點組成,具有較高的相似性.但是相比于傳統分布式學習,聯邦學習在數據、通信以及系統構成上又具有自己的特點,其與傳統分布式學習的主要區別如表1 所示.

Table 1 Difference Between Traditional Distributed Learning and Federated Learning表1 傳統分布式學習與聯邦學習的區別
1.2.1 數據方面
聯邦學習與傳統分布式學習在數據方面的區別主要體現在3 個方面:數據分布、數據量級和數據安全.
1)數據分布.在傳統分布式學習中,不同設備的數據通常是均勻、隨機分布的,具有獨立同分布的特點.而在聯邦學習中,不同設備的數據是其獨立產生的,由于設備擁有者的喜好、設備的地理位置、時間等的差異往往表現出不同的分布特征,具有非獨立同分布的特點.
2)數據量級.傳統分布式學習為了提高訓練效率,通常都會把訓練數據均勻分布在每個參與設備上,實現負載均衡.然而在聯邦學習中,每個參與設備擁有的數據量與設備擁有者的喜好以及設備自身有關,很難保證不同設備擁有相近的數據量.
3)數據安全.傳統分布式學習中的服務器對參與設備以及其中的數據具有較高的控制權,可以將訓練數據分布在各個參與設備上,也可以對參與設備進行調度,讓設備之間進行數據交換等操作.當數據具有隱私敏感屬性時,傳統分布式學習無疑會給用戶數據帶來極大的隱私泄露風險.而在聯邦學習過程中,由于參與設備的數據始終保持在本地,服務器無法直接或間接操作設備上的數據,因此參與設備對數據具有絕對的控制權,可以最大限度地保障數據隱私和安全.
1.2.2 通信方面
聯邦學習與傳統分布式學習在通信方面的區別主要體現在2 個方面:網絡穩定性和通信代價.
1)網絡穩定性.傳統分布式場景中的服務器與參與設備通常都位于專用的機房中,且用高速寬帶進行互聯,網絡、運行環境都相對穩定.而參與聯邦學習的設備大多數是手機、平板等移動設備,由于具有移動性,其所處的網絡環境并不穩定,導致其穩定性較差,隨時都可能與中心服務器斷開連接.
2)通信代價.由于傳統分布式場景中的服務器和參與設備通常處于同一地理位置,且具有專用的信道進行通信,其通信代價往往較小.而在聯邦學習中,由于參與訓練的設備可能分布在不同的地理位置,與服務器一般處于遠程連接的狀態,受不同設備網絡帶寬的影響,還存在設備掉線等不穩定情況,因此聯邦學習相比于傳統的分布式學習通信代價要更高.
1.2.3 系統構成
聯邦學習與傳統分布式學習的系統構成較為相似,都是由服務器和多個分布式節點組成.不同之處在于,在傳統的分布式學習系統中,數據分布、計算以及模型更新都是由服務器進行統一控制,服務器具有絕對的控制權.而在聯邦學習系統中,由于節點之間數據分布、數據量級、計算能力以及網絡環境之間的差別,聯邦學習的系統不但需要考慮數據安全性和非獨立同分布的特點,還需要考慮數據傳輸時延等眾多因素.
在聯邦學習中,根據其目前的應用場景,我們將其計算范例分為單機模擬、基于拓撲結構的分布式訓練和移動設備端訓練[9].
單機模擬主要是為了幫助研究人員快速了解聯邦學習框架以及測試算法等,比較適合小型研究使用.當項目內容較為簡單時,可以將項目部署在一臺服務器上,由該服務器模擬整個聯邦學習框架.然而,單機對于大規模數據計算和存儲的處理能力有限,當需要進行復雜聯邦學習訓練時,單機的硬件資源將無法滿足需求.
基于拓撲結構的分布式訓練類似于傳統的分布式訓練,由多方協同進行聯邦計算,可以用于大型實驗測試和真實環境部署(如不同機構組織之間).在該計算范例中,中央服務器作為協調者負責分發和聚合模型,所有模型的訓練都在客戶端完成.因此在分布式訓練范例中,通信起著至關重要的作用.在分布式通信中,應用層可以采用的協議有HTTP 和WebSocket等,會話層則可以基于RPC 進行通信.在通信過程中,聯邦學習框架通常采用同態加密、差分隱私和安全多方計算等手段保護隱私安全,以求達到效率、精度和隱私的平衡.
聯邦學習的重要計算范例之一是移動設備端訓練,如移動電話、智能手環等設備.在學習過程中節點間需要頻繁通信,非常消耗計算資源和傳輸資源,然而移動設備通常計算能力有限,且由于網絡狀況的不穩定可能隨時退出訓練.因此,除了PySyft,FedML,Flower 外,其他聯邦學習框架并未過多關注移動設備訓練,而更多考慮在服務器上訓練好模型后,將存儲的模型移植到終端,在終端推理模型.
為了更系統、更快速地了解聯邦學習框架以及不同框架的特點,本文根據開源框架在業界的受眾程度,選取目前在工業界和學術界影響較大的開源框架進行深入分析和介紹,重點從各框架的架構設計和系統功能2 個層次對各框架進行剖析.
PySyft[8]是OpenMined 在2018 年提出、開源于2020 年的一個基于Python 的隱私保護深度學習框架,它主要借助差分隱私和加密計算等技術,對聯邦學習過程中的數據和模型進行分離.PySyft 的設計主要依賴于客戶端之間交換的張量鏈,特點是涵蓋了多種隱私機制,如差分隱私、同態加密和安全多方計算;并以可擴展的方式進行設計,便于研究人員可以添加新的聯邦學習方法或隱私保護機制.
2.1.1 PySyft 系統架構
由于PySyft 的設計主要依賴于客戶端之間交換的張量鏈,因此其系統架構的重點是基于張量的鏈抽象模型的設計.如圖6 所示,基于張量的鏈抽象模型的核心部分是一個稱為_Syft 張量的抽象,_Syft 張量主要用于表示數據的狀態或變換,并且可以鏈接在一起.鏈結構的頭部始終有PyTorch 張量,并使用子屬性向下訪問由_Syft 張量體現的變換或狀態,使用父屬性向上訪問由_Syft 張量體現的變換或狀態.

Fig.6 Chain abstract model圖6 鏈抽象模型
如圖7 所示,_Syft 張量有2 個重要的子類:第1個是在實例化Torch 張量時自動創建的Local 張量,其作用是在Torch 張量上執行與加載運算相對應的本機運算;第2 個是當將張量發送給遠程客戶端時創建的Pointer 張量.Pointer 張量發送和取回十分簡便:當接收到命令時,整個鏈將被發送給客戶端,并被替換為具有雙節點的鏈(張量(空)和指定擁有數據和遠程存儲地址的Pointer 張量).此外,PySyft 采用了類似指針的方式進行多方調度,當向客戶端發送張量時,客戶端會返回一個指向該張量的指針,所有操作都將使用該指針執行.

Fig.7 Tensor sending schematic diagram圖7 張量發送示意圖
PySyft 還建立了一個用于客戶端間通信的標準化協議.在聯邦學習環境中的客戶端有2 種實現方式:Network Sockets 和 Web Sockets.Network Sockets 客戶端通過調用Socket API 來完成應用層協議,實現不同客戶端之間的通信.而Web Sockets 客戶端從瀏覽器中實例化,每個客戶端都被視為設備上的一個單獨實體,并通過WebSocket API 進行通信,為不同機器上的遠程客戶端之間的聯邦學習提供了解決方案.此外,由于WebSocket API 是純事件驅動,因此可以使用異步事件在客戶端監聽連接生命周期的每個階段.
2.1.2 PySyft 系統功能
作為注重隱私安全的深度學習框架,PySyft 重要的一項系統功能就是基于張量指針集成了SyMPC 多方安全計算庫以實現SPDZ 協議.同時,除安全多方計算外,PySyft 還支持差分隱私,包括DP-SGD,PATE,Moments Accountant,Laplace 和指數機制.同態加密方面由TenSEAL 庫負責完成,其主要依賴Microsoft SEAL中的CKKS,允許各方加密它們的數據,以便讓不受信任的第三方使用加密數據訓練模型,而不泄露數據本身.除此之外,還有PyDP,Petlib 等庫提供了隱私保護.
對于聯邦學習類型,PySyft 目前僅可用于橫向聯邦學習,涵蓋的聯邦算法包括FedAvg 等.雖然PySyft 可進行基于拆分神經網絡的垂直學習,并利用PSI 協議以保護數據集隱私,但仍未提供縱向聯邦的解決方案.機器學習算法方面,PySyft 支持邏輯回歸和神經網絡,如DCGAN 和 VAE 模型.除聯邦學習的基本方法外,PySyft 還支持聯邦的同步和異步機制.操作系統方面,PySyft 支持Mac,Windows,Linux.研究人員能進行單機模擬、基于拓撲架構的分布式訓練和移動端設備訓練.
2.1.3 PySyft 版本變化
雖然OpenMined 提供了多種隱私保護方式,但目前的版本僅支持橫向聯邦學習.其中,2021 年7 月發布的PySyft 0.2.8 版本取消了以模型和數據為中心的概念,引入了動態和靜態的聯邦概念.2021 年9月發布的PySyft 0.2.9 版本改進了函數加密共享的執行速度,添加了對BFV 方案的支持,以及監控基準.直到2021 年12 月發布的最新版 PySyft 0.6 暫時僅對功能進行一定程度上的維護.相較于FATE 和PaddleFL,PySyft 尚未提供高效的部署方案及服務器ing 端解決方案.
FATE 是微眾銀行在2019 年開源的聯邦學習框架,旨在解決各種工業應用實際問題.在安全機制方面,FATE 采用密鑰共享、散列[18]以及同態加密技術,以此支持多方安全模式下不同種類的機器學習、深度學習和遷移學習.在技術方面,FATE 同時覆蓋了橫向、縱向、遷移聯邦學習和同步、異步模型融合,不僅實現了許多常見聯邦機器學習算法(如LR[19-20],GBDT,CNN[21]),還提供了一站式聯邦模型服務解決方案,包括聯邦特征工程、模型評估、在線推理、樣本安全匹配等.此外,FATE 所提供的FATE-Board 建模具有可視化功能,建模過程交互體驗感強,具有較強的易用性.目前這一開源框架已在金融、服務、科技、醫療等多領域推動應用落地.為了讓大家更清晰地了解FATE,我們將從系統架構以及系統功能2 個層次出發,對FATE 進行詳細分析.
2.2.1 FATE 系統架構
FATE 系統架構主要包括離線訓練和在線預測2 部分,其系統架構如圖8 所示.其中,FATE Flow 為學習任務流水線管理模塊,負責聯邦學習的作業調度;Federation為聯邦網絡中數據通信模塊,用于在不同功能單元之間傳輸消息;Proxy 作為網絡通信模塊承擔路由功能;元服務為集群元數據服務模塊;MySQL為元服務和FATE-Flow 的基礎組件,用于存放系統數據和工作日志;FATE 服務(FATE serving)為在線聯合預測模塊,提供聯邦在線推理功能;FATE-Board為聯邦學習過程可視化模塊;Egg 和Roll 分別為分布式計算處理器管理模塊和運算結果匯聚模塊,負責計算和存儲數據.

Fig.8 FATE system architecture圖8 FATE 系統架構
2.2.2 FATE 系統功能
1)離線訓練框架
離線訓練框架如圖9 所示,其架構主要分成基礎設施層、計算存儲層、核心組件層、任務執行層、任務調度層、可視化面板層以及跨網絡交互層.在基礎設施層,FATE 提供KubeFATE 模式,使用云本地技術管理聯邦學習工作負載,支持通過Docker Compose和Kubernetes 進行部署.其中,KubeFATE 提供了豐富的FATE 集群生命周期管理功能,可以方便地對集群進行增加或刪減、修改配置等操作.利用FATE 集群管理的任務框架,研發人員可以輕松定位與解決基礎設施層的問題.

Fig.9 Off-line training framework architecture圖9 離線訓練框架架構
在計算存儲層,離線訓練框架使用EggRoll 以及Spark 作為分布式計算引擎.當使用EggRoll 作為計算引擎時,簇管理器(cluster manager)負責提供服務入口以分配資源,節點管理器(node manager)執行實際計算和進行存儲,Rollsite 負責數據傳輸.當使用Spark作為計算引擎時,需要使用HDFS 來實現數據的持久化,而Pipeline 的同步和訓練過程中消息的同步則要依賴于Nginx 和RabbitMQ 服務來完成.
核心組件層主要提供數據交互、算法和模型訓練評估相關的實現.本層主要由FederatedML 組成,其包括許多常見機器學習算法的聯邦實現以及必要的實用工具.簡單來說,可分為4 個功能模塊:①算法模塊,用于數據預處理和聯邦特征工程的機器學習算法;②實用程序模塊,作為啟用聯邦學習的工具,例如加密算子、參數定義及傳遞變量自動生成器等;③框架模塊,用于開發新算法模塊的工具包和基礎模型;④安全協議模塊,包括SPDZ,OT 等協議,以實現安全聯邦學習.
任務執行層以及調度層主要由FATE-Flow 構成.FATE-Flow 是實現聯邦學習建模和任務協同調度的重要工具,主要包括:DAG 定義聯邦學習Pipeline、聯邦任務協同調度、聯邦任務生命周期管理、聯邦模型管理、聯邦任務輸入輸出實時追蹤以及生產發布功能.
可視化面板層由FATE-Board 構成,主要實現聯邦建模過程的可視化.FATE-Board 由任務儀表盤、任務可視化、任務管理與日志管理等模塊組成,可以對聯邦學習過程中模型的訓練狀態及輸出結果進行可視化展現.FATE-Board 提供了矩陣圖、回歸結果、樹模型等的可視化反映,從而研究人員可以更及時地了解模型狀態與調整參數,提升聯邦學習的效果.
跨網絡交互層由Federated-Network 聯邦多方通信網絡構成,它的架構為:元服務為元數據管理者和持有者,負責定位不同數據在不同機器的位置;Proxy為應用程序層聯邦學習路由,Federation 負責全局對象的抽象和實現,FATE-Exchange 提供通信功能.
2)在線預測框架功能
FATE 服務是針對聯邦學習模型的高性能工業化服務系統.在離線建模后,FATE-Flow 將模型推送至FATE 服務,FATE 服務通過加載訓練模型實現在線預測功能,主要支持動態加載聯合學習模型、多級緩存、生產部署的預/后處理、聯邦學習在線批量預測、各方并行預測等.其具體部署架構如圖10 所示.其中服務器服務(serving-service)為預測功能的核心,用于處理各種請求,提供基于gRPC 的模型在線推理服務.服務器服務從FATE-Flow 加載好模型后,將該模型相關的服務信息注入注冊中心(zookeeper),以便網關服務從中拉取可用服務并調用.同時,訓練好的模型信息將被發送給模型管理服務完成持久化存儲,作為備份可在特殊情況下恢復.

Fig.10 FATE-serving deployment architecture圖10 FATE 服務部署架構
服務代理(serving-proxy)主要是在多方交互時作為網關服務實現服務路由,實現客戶端與主機之間的通信.它對外提供gRPC 接口以及HTTP 接口,維護一個各參與方partId 的路由表,通過路由表中的信息轉發外部系統的請求.
從FATE 的系統架構和系統功能可以看出,FATE的優勢在于其具有豐富的算法組件,具有簡單、開箱即用、易用性強的特點.作為目前唯一的一個可以同時支持橫向聯邦學習、縱向聯邦學習以及聯邦遷移學習的開源框架,FATE 得到了業界廣泛的關注與應用.同時,FATE 還提供了一站式聯邦模型解決方案,可以有效降低開發成本,相比于其他開源框架,在工業領域優勢突出.
2.2.3 FATE 版本變化
2019 年首款工業級聯邦學習框架FATE 由微眾銀行推出,其具有區別于其他開源框架的特色功能,包括可視化模塊FATE-Board、聯邦學習建模pipeline調度和生命周期管理工具FATE-Flow.截至2019 年12 月發布的FATE v1.2 版本覆蓋橫向聯邦學習、縱向聯邦學習、聯邦遷移學習,得到了社區內廣泛的關注與應用.2020 年10 月發布的 FATE 1.5 版本對縱向聯邦的通信效率進行了提升,支持不同的計算、存儲和傳輸引擎的組合,并對用戶的便捷使用做出改進,引入了Pipeline 和CLI v2 等.2021 年3 月,該框架新增了本地文件系統目錄路徑虛擬存儲引擎和消息隊列Pulsar 跨站傳輸引擎,對組網模式進一步擴充,并在后續加入了1 對多的FATE 服務的集群推送.在FATE 1.7 版本中,開始支持EggRoll、Spark-Local 計算引擎、Hive 存儲,進一步提升Spark-Local 和Spark-Cluster 之間的異步融合.2022 年4 月發布的FATE 1.8 除了添加加密性能評估Paillier、性能評估SPDZ 和管道dsl的轉換工具外,還對縱向聯邦的性能進行了提升,例如SecureBoost 節省帶寬75%,提速1.5~5 倍.
2019 年,谷歌發布了基于TensorFlow 構建的全球首個大規模移動設備端聯邦學習系統[6],該系統用于在移動智能設備執行機器學習和其他分布式計算,旨在促進聯邦學習的開放性研究和實驗.
2.3.1 TFF 系統架構
為協調客戶端和中央服務器的交互,TFF 除了提供與GKE(Google Kubernetes engine)和Kubernetes 集群的集成,還提供容器映像來部署客戶端并通過gRPC調用進行連接,其系統架構如圖11 所示.

Fig.11 TFF framework architecture圖11 TFF 系統架構
從系統架構圖可以看出,TFF 的訓練流程包括3 步:1)服務器從所有設備端篩選出參與該輪聯邦學習任務的設備,為了不影響用戶體驗,篩選標準包括是否充電、是否為計費網絡等.2)服務器向訓練設備發送數據,包括計算圖以及執行計算圖的方法.而在每輪訓練開始時,服務器向設備端發送當前模型的超參數以及必要狀態數據.設備端根據全局參數、狀態數據以及本地數據集進行訓練,并將更新后的本地模型發送到服務端.3)服務端聚合所有設備的本地模型,更新全局模型并開始下一輪訓練.由此可見,設備端的功能主要包括連接服務器、獲取模型和參數狀態數據、模型訓練、模型更新.TFF 的客戶端架構設計如圖12 所示.

Fig.12 TFF client architecture圖12 TFF 客戶端架構
對于服務器端,TFF 圍繞編程模型參與者模式(actor model)設計,使用消息傳遞作為唯一的通信機制,采用自頂向下的設計結構,如圖13 所示.其中協調方(coordinator)是頂級參與者,負責全局同步和推送訓練.多個協調方與多個聯邦學習設備集群一一對應,負責注冊設備集群的地址.協調方接收有關選擇器的信息,并根據計劃指示它們接受多少設備參與訓練.而選擇器負責接收和轉發設備連接,同時定期從協調方接收有關聯邦集群的信息,決定是否接受每臺設備做出本地決策.主聚合器(master aggregator)負責管理每個聯邦學習任務的回合數,它可以根據設備的數量做出動態決策,以生成聚合器(aggregator)實現彈性計算.

Fig.13 TFF top-down structure圖13 TFF 自頂向下結構
2.3.2 TFF 系統功能
為實現聯邦學習模型訓練的實驗環境和計算框架,TFF 構建了FL API(federated learning API)和FC API(federated core API)兩個級別的接口.
如圖14 所示,FL API 包括模型、聯合計算構建器、數據集3 個部分.模型部分提供封裝完成的tff.learning 函數,研究人員可以直接調用該函數實現各種聯邦學習算法而無需自行構建,如可以使用FedAvg和Fed-SGD 進行模型訓練.聯邦計算構建器的主要目的是使用現有模型為訓練或評估構造聯邦計算,主要用于輔助聯邦學習的訓練和計算過程.在數據集模塊,通過TensorFlow API 中提供的LEAF[22]生成聯邦學習特定訓練數據集,給出了用于TFF 仿真和模型訓練的可直接下載和訪問的罐裝數據集.除了高級接口外,FC API 提供了底層聯邦學習接口,它是聯邦學習流程的基礎,研究人員可以通過它方便地構建自定義聯邦學習算法.

Fig.14 TFF API architecture圖14 TFF API 架構
在聯邦學習類型方面,TFF 目前只支持橫向聯邦學習,尚未提供縱向聯邦及遷移學習的方案;模型方面,提供了FedAvg,Fed-SGD 等算法,同時也支持神經網絡和線性模型;在計算范式方面,TFF 支持單機模擬和移動設備訓練,不支持基于拓撲結構的分布式訓練;在隱私保護機制方面,TFF 采用差分隱私以保證數據安全.TFF 的主要受眾目標是研究人員和從業者,他們可以采用靈活可擴展的語言來表達分布式數據流算法,定義自己的運算符,以實現聯邦學習算法和研究聯邦學習機制.
2.3.3 TFF 版本變化
谷歌于2019 年2 月首次發布TFF 框架,12 月發布TFF 0.11.與PySyft 相同,該框架也僅支持橫向聯邦學習.用戶可以通過FL API 與TensorFlow/Keras 交互,完成分類、回歸等任務,也可以基于FC API 構建自定義的聯邦學習算法.其中,2020 年發布的TFF 0.17版本支持計算跟蹤控制,消除了客戶機數量對分布式運行的影響.2022 年TFF 0.20 版本除了對API 功能進行了升級外,明確了對零客戶端聚合的支持,增加了張量的流量.直至最新的TFF 0.23 版本,該框架仍然僅提供了基于差分隱私的隱私保護,未添加同態加密和多方安全計算.
2019 年,百度基于安全多方計算、差分隱私等領域的實踐,開源了PaddlePaddle 生態中的聯邦學習框架PaddleFL[11],旨在為業界提供完整的安全機器學習開發生態.PaddleFL 提供多種聯邦學習策略,因此該框架在不同領域都受到了廣泛關注.
2.4.1 PaddleFL 系統架構
PaddleFL 架構的整體設計可以參考圖15.如圖所示,PaddleFL 可以支持橫向聯邦和縱向聯邦2 種策略.對于橫向聯邦學習,其主要支持FedAvg,DPSGD,SECAGG 等策略;對于縱向聯邦學習,其主要支持LR with PrivC 和NN with MPC[23]的神經網絡.PaddleFL 底層的編程模型采用的是飛槳訓練框架,結合飛槳的參數服務器功能,其可以實現在 Kubernetes 集群中聯邦學習系統的部署.訓練策略方面,PaddleFL 可進行多任務學習[24]、遷移學習、主動學習等訓練.

Fig.15 PaddleFL architecture圖15 PaddleFL 的架構
2.4.2 PaddleFL 系統功能
PaddleFL 主要提供2 種實現聯邦學習的方案:數據并行(data parallel, DP)和基于多方安全計算的聯邦學習(federated learning with MPC, PFM).在DP 中,模型訓練過程主要分2 個階段:編譯和分布式運行.
如圖16 所示,編譯包含4 個組件:聯邦學習策略、用戶自定義程序、分布式配置、聯邦學習任務生成器.聯邦學習策略主要提供橫向和縱向聯邦學習算法,如神經網絡和邏輯回歸等,用戶也可以自己定義機器學習模型和訓練策略;用戶自定義程序定義了機器學習模型結構和訓練策略;分布式配置的作用是設定分布式訓練的節點信息;聯邦學習任務生成器負責為聯邦服務器端和客戶端生成聯邦任務,并將它發送到聯邦參數服務器進行聯邦訓練.分布式運行由服務器、客戶端、聯邦學習調度器3 部分組成.服務器為聯邦參數服務器,是聯邦學習的管理者;客戶端為聯邦學習的各參與方,與聯邦參數服務器進行通信,其中通信模式包括 Gloo 和gRPC;聯邦學習調度器在訓練過程中負責調度,選擇每一訓練回合中參與的客戶端.

Fig.16 Data parallel training framework圖16 Data parallel 訓練框架
PFM 整個訓練過程包括數據準備、訓練推理、結果解析3 個階段.其中數據準備階段主要包括2 項工作:1)隱私集合求交.在保護數據隱私的前提下,求出各參與方的數據交集.2)數據加密及分發.采用Secret Sharing 進行數據和模型加密,并分發給參與方.數據準備完成后,根據用戶設定的聯邦學習模型進行訓練,同時基于多方安全計算保證訓練安全.在訓練結束后,對結果解密并發送給各參與方.PFM 提供了多方安全計算下的聯邦學習,支持橫向和縱向聯邦學習.在PFM 中,一共有3 個參與者:輸入方(IP)、計算方(CP)和結果方(RP).輸入方(數據或模型的擁有者)負責將數據或模型加密后發送給計算方;計算方(云上的虛擬機)接受加密后的數據或模型后基于特定的MPC 協議進行訓練或任務推理,完成后將結果發送給結果方;結果方接受加密計算結果后重構明文結果.三方參與者角色可以重疊.
PaddleFL 提供的聯邦學習策略涵蓋了橫向聯邦學習和縱向聯邦學習,相比于其他的聯邦學習框架,其適合在大規模分布式集群中部署.其中,橫向聯邦學習主要涵蓋了FedAvg[3],DP-SGD[25]等算法,縱向聯邦學習主要包括了基于PrivC 的邏輯回歸和基于ABY3協議的神經網絡.目前Paddle FL 開源了橫向聯邦學習場景,可以用于具有相同類型任務的多個組織進行聯合訓練.對于縱向聯邦學習場景,百度公司指出將會在未來開源縱向聯邦學習編程框架,并實現不同聯邦學習類型的編程接口統一,同時在性能方面也將提升訓練的速度和精度、跨地域的稀疏通信、通信的穩定性等.
2.4.3 PaddleFL 版本變化
PaddleFL 自2019 年11 月開源以來,百度公司隨后在2020 年5 月發布的Paddle 1.8 版本深度優化了命令式編程模式功能.對原生推理庫性能進行了顯著優化,推出了可以輕量化部署的推理引擎PaddleLite,并發布了前端推理引擎Paddle.js.且Paddle-服務器ving 全面升級,提供了強大簡單化的部署功能,其對應的開發庫和工具組件也進一步豐富完善.2022 年11 月百度公司推出了Paddle 2.4.0 版本,對框架使用了新動態圖架構,對框架的調度性能進行大幅度提升,超過90%的API 的調度性能提升超過50%.全面提升了Paddle 的動靜統一能力,提供了更加豐富的Python 語法支持.新增稀疏計算類API,支持多種稀疏Tensor,極致節省內存.
FedML 是由美國南加州大學聯合MIT、Stanford、MSU、UW-Madison、UIUC、騰訊、微眾銀行等眾多高校與公司聯合發布的聯邦學習開源框架.FedML 不但支持3 種計算范例(單機模擬、基于拓撲結構的分布式訓練和移動設備訓練),還通過靈活通用的API設計和參考基準實現促進了各種算法研究,并針對非獨立同分布(non-independent identically distributed, Non-IID)數據設置了精選且全面的基準數據集用于公平性比較.
2.5.1 FedML 系統架構
FedML 主要包含FedML-core 和FedML-API 這2個組件,分別對應低級別接口(low-level API)和高級別接口(high-level API),系統架構如圖17 所示.

Fig.17 FedML system architecture圖17 FedML 系統架構
圖17 中FedML-core 將分布式通信和模型訓練分為2 個單獨的模塊.分布式通信模塊負責不同客戶端之間的底層通信,并使用統一的通信管理來完成算法通信協議.目前,FedML-core 支持MPI,RPC,MQTT通信后端.其中MPI 主要用于滿足單個集群中的分布式訓練需求;RPC 主要用于滿足跨數據中心的通信需求(例如cross-silo FL);MQTT 主要用于滿足移動設備的聯邦學習訓練.由于FedML 默認采用MPI通信,因此下面簡要介紹其通信過程,而針對移動設備的MQTT 通信則在2.5.5 節介紹.
在FedML 中,MPI 通信主要由通信管理和其維護的發送線程和接收線程實現.其中發送線程和接收線程各自維護一個緩沖隊列,發送線程每隔0.003 s輪詢一次自己的隊列,如果有新消息放入,就將其發送.對于收到的消息,通信管理每隔0.3 s 進行1 次對其自身的輪詢,有新消息收到則通知觀察者,觀察者利用回調機制處理信息.
具體通信過程如圖18 所示:①服務器啟動,發送初始化信息給客戶端;②客戶端收到服務器端發送的消息,觸發handler 函數;③訓練方進行本地模型的訓練;④每輪訓練結束后,將訓練好的參數放入發送隊列;⑤發送線程將隊列中的數據傳回服務器;⑥服務器收到客戶端端發送的消息,觸發handler 函數;⑦更新全局模型參數;⑧將更新后的全局參數傳入發送隊列進行下發,開始下一輪迭代訓練.此外,FedML還支持用戶自定義通信協議.如果需要使用不同的通信協議,用戶只需替換底層的通信管理即可.

Fig.18 MPI communication diagram圖18 MPI 通信示意
在分布式通信模塊內部,TopologyManager 支持多種網絡結構,如基于數據中心的聯邦學習、去中心化聯邦學習、分層聯邦學習[26-27]等.
FedML-API 建立在FedML-core 之上,FedML-API包括模型、數據集和算法.FedML 支持的算法包括線性模型(邏輯回歸)、神經網絡(CNN,RNN)等;每個算法包括服務器Manager 和客戶端Manager 這2 個對象,用于集成FedML-core 的通信模塊的ComManager與機器學習組件的客戶端和coordinator,完成分布式算法協議(如FedAvg,FedNAS,FedNova,FedOpt 等)和分布式訓練.FedML-API 采用模型、數據集和算法相互分開的系統設計,以實現代碼重用和公平比較,避免由于不同實現方式導致的算法之間的統計或系統級差距.此外,通過這種設計,研究人員無需了解不同的分布式算法的細節就可以開發新模型并提交更現實的數據集.
2.5.2 FedML 系統功能
從圖17 可以看出,FedML 的系統功能主要包含FedML-core,FedML-API,FedML-Mobile,FedML-IoT.
1)FedML-core 功能
①自定義客戶端及信息交換.FedML-core 采取了面向客戶端的編程設計模式,當設計聯邦學習算法中的訓練過程時,用戶可以通過繼承客戶端Manager類并使用其預定義的API 來定義接收消息和發送消息,從而在聯邦學習網絡中自定義其客戶端.另外,消息交換方面,FedML 還支持梯度或模型之外的消息交換(如特定的中間結果),每個客戶端都可以從發送的角度定義消息類型.客戶端Manager 用于處理各客戶端定義的消息,并發送其自身定義的消息.
②拓撲管理.聯邦學習具有各種拓撲定義,例如垂直聯邦學習[28]、拆分學習[29]、去中心化聯邦學習和分層聯邦學習[27].為了滿足這種多樣化的要求,FedML提供了TopologyManager 來管理拓撲,并允許客戶端在培訓期間將消息發送給任意相鄰客戶端.在完成TopologyManager 的初始設置后,網絡中的每個客戶端都可以通過TopologyManager 查詢相鄰客戶端的ID、權重等信息.
③隱私安全和魯棒性.除了保護數據隱私外,聯邦學習框架(尤其是移動設備訓練時)的另一個關鍵要求是應對用戶退出的魯棒性.為了增強安全性和隱私性,FedML-core 實現了常見的密碼原語,可支持多方安全計算(秘密共享)和同態加密(密鑰協議和數字簽名).針對聯邦學習中對抗攻擊的防御,FedML涵蓋了規范差異裁剪[30]、弱差分隱私[30]、RFA[31]、KRUM和MULTIKRUM[32].該框架還提供了通用的對抗性攻擊API,該API通過實施模型替換攻擊[33]和邊緣案例后門攻擊[34]來支持后門.
2)FedML-API 功能
①算法.FedML 提供了網絡拓撲結構不同、交換信息不同(如交換模型參數或特定中間結果)的各種聯邦學習算法.不同計算范式支持的算法有:單機模擬支持FedAvg、FedOpt、FedNova、FedNAS[35]、去中心化聯邦、縱向聯邦、分層聯邦;分布式計算支持去中心化聯邦、FedAvg、FedRobust、FedNAS、FedSEG、FedGKT、縱向聯邦、Split Learning;移動設備僅支持FedAvg.同時,這些算法也可以用作實現示例和基準,以幫助用戶開發和評估自己的算法.FedML 還在不斷添加新的聯邦學習算法,如Adaptive Federated optimizer,FedProx,FedMA.
②模型和數據集.由于不同實驗中模型和數據集的用法不一致,因此很難公平比較聯邦學習算法的性能.為了加強公平比較,FedML 采取了模型和數據集合二為一的方法,明確規定了數據集和模型的組合.FedML 提供的模型和數據集分為3 類:線性模型(凸優化)、輕型淺層神經網絡(非凸優化,一般用于Cross-device 設置)以及深度神經網絡(非凸優化,用于Cross-silo 訓練大型DNN).其中線性模型的數據集包括MNIST[36]、聯邦EMNIST[37]和Synthetic(α,β)[38];淺層神經網絡的數據集包括聯邦EMNIST[22]、CIFAR-100[39]、莎士比亞[40]和StackOverflow[41];深度神經網絡的數據集有CIFAR10,CIFAR100,CINIC10,Stack-Overflow.具體模型和數據集的組合如表2 所示.

Table 2 Combination of FedML Specific Models and Datasets表2 FedML 具體模型和數據集的組合
3)FedML-Mobile 和FedML-IoT
FedML 的一項主要功能是其在實際硬件框架上對聯邦學習的支持.具體來說,FedML 包括FedMLMobile 和FedML-IoT,這是2 個基于實際硬件框架構建設備上的聯邦學習測試框架.當前,FedML-Mobile(包括FedML-服務器和Android 客戶端 Simulator 這2 個API)支持在Android/iOS 智能手機進行設備的培訓.而FedML-IoT 支持Raspberry PI 4 和NVIDIA Jetson Nano.借助建立在實際硬件框架上的測試框架,研究人員可以評估實際系統性能,例如訓練時間、通信成本和計算成本.FedML 的架構設計可以將分布式計算代碼平穩地移植到FedML-Mobile 和FedML-IoT 框架上,從而幾乎重用了分布式計算范式中的所有算法.
根據訓練設備的異構性,FedML 采用了當前最流行的物聯網協議MQTT,實現FedML-服務器與移動/IoT 設備之間的通信.在發布/訂閱體系結構中,FedML-服務器為訂閱者,主要識別設備何時準備好開始培訓以及接收模型;而參與訓練的客戶端為發布者.
圖19 為服務器和設備之間的工作流程.在步驟1~3 中,服務器和設備與代理建立連接,然后由代理進行通信.同時,服務器為自己訂閱一個特定的主題,以便從設備端接收狀態更新.步驟4 和步驟5 將訓練模型發送到設備.在模型發送之前,服務器分配并準備所有對通信階段有用的參數(資源分配、模型序列化等).在步驟6 和步驟7 中,參與訓練的設備開始訓練并返回模型更新.

Fig.19 Workflow between FedML servers and devices圖19 FedML 服務器與設備之間的工作流程
2.5.3 FedML 版本變化
2020 年9 月由南加州大學聯合多所科研院所聯合發布了FedML 聯邦學習開源框架,針對現有軟件框架不能充分支持多樣化算法開發以及實驗對比存在不一致的問題,提供了一個開放的研究庫以及基準.2020 年10 月7 日的版本提供了面向研究的數據集和模型.2020 年10 月28 日的版本對單一的FedAvg聚合算法進行擴充,加入了更多的聯合優化算法.2020年11 月5 日的版本針對物聯網設備的聯邦學習模式進行支持.直至2022 年5 月發布了最新的版本,本次升級對原有的MPI 訓練進行了擴充,加入了NCCL 的模式,支持跨組織的跨倉聯合訓練.相較于FATE,Paddle FL 等工業聯邦學習框架, FedML 更適合開發人員作為學術研究使用.
Flower[10]是由英國牛津大學在2020 年發布的一款聯邦學習框架,其優點在于Flower 可以模擬真實場景下的大規模聯邦學習訓練.基于其跨平臺的兼容性、跨設計語言的易用性、對已有機器學習框架的支持以及抽象的框架封裝,用戶可以快速高效搭建所需的聯邦學習訓練流程.Flower 綜合計算資源、內存空間和通信資源等因素,高效實現了移動端和無線客戶端下異構資源的使用.
2.6.1 Flower 系統架構
Flower 包含Flower 客戶端(Flower client)、Flower服務器端(Flower service)、Flower 聯邦策略(Flower federation strategy)、Flower 協議(Flower protocol)、Flower 數據集(Flower datasets)、Flower 基準(Flower baselines)、Flower 工具(Flower tools)這7 部分,系統架構如圖20 所示.

Fig.20 Flower system architecture圖20 Flower 系統架構
Flower 客戶端允許用戶借助接口實現相應的操作,如軟件開發工具包(software development kit, SDK),SDK 主要為用戶處理連接管理、Flower 協議和序列化等操作.在目前的版本中,SDK 提供了對Android和Python 的支持,研究團隊指出將陸續開放SDK 對iOS 端等移動終端的支持.
Flower 服務器端在整個框架中負責節點之間的連接,客戶端生命周期的管理,聯邦學習執行的定制、驗證、聚合和度量等處理.聯邦策略中,用戶可以借助抽象的策略來實現新的聯邦學習算法,如FedAvg,FedProx,QFedAvg,FedOpt.
此外,Flower 協議降低了對聯邦學習設備的要求和對特定編程語言的依賴程度,提高了使用上的客制化程度.Flower 數據集中考慮到不同實驗數據的使用以及數據的劃分,提供了一組內置的數據集和相應的分區函數,滿足客戶機之間數據的動態分配.Flower 基準提供了端到端的聯邦學習實現,用戶借助特定領域語言(domain-specific language,DSL),設置好相應的實驗條件就可創建.Flower 工具提供了一套部署、模擬、檢測參數的系統級工具.主要包括1)部署實例去模擬客戶端和服務器端;2)模擬不同性能的客戶端設備;3)改變客戶端和服務器端之間的網絡帶寬,模擬真實場景下的網絡狀態.
Flower 的通信模塊位于Flower 服務端組件中,該組件可大致分為4 層,如圖21 所示.目前Flower 僅支持gRPC 的通信方式,但是也支持用戶自定義通信協議的替換.gRPC 的交互過程主要通過連接管理(connection management)和gRPC 網橋(gRPC bridge)這2 個模塊實現.其中連接管理模塊負責維護當前的所有gRPC 連接,如圖22 所示.當gRPC 服務器第1次收到請求時,會觸發注冊函數進行客戶端連接的注冊管理,將該客戶端的信息存放到一個數組中,每一個gRPC 對應一個客戶端.服務器借助這個模塊來獲得指定客戶端的gRPC 連接,之后進行通信,獲取模型信息.在完成通信或者因為等待超時等情況導致gRPC 斷開,則調用非注冊函數將斷開連接的客戶端從當前的記錄中刪去.

Fig.21 Flower server architecture圖21 Flower 服務器端架構

Fig.22 Connection management diagram圖22 連接管理示意圖
客戶端和服務器端的通信由gRPC 網橋進行,該模塊負責緩存客戶端和服務器端的gRPC 信息.首先由客戶端向gRPC 網橋放入信息,客戶端再從中獲取;客戶端本地訓練完模型后,將模型信息上傳至網橋,服務器端從網橋獲取客戶端所上傳的本地模型信息進行全局模型的更新.該過程通過狀態轉換的方法來保證其中儲存的都是相同信息.大致的狀態轉換見圖23.

Fig.23 gRPC bridge state transition diagram圖23 gRPC 網橋狀態轉換圖
2.6.2 Flower 系統功能模塊
Flower 主要提供可復現實驗、機器學習算法、網絡擾動、跨平臺接入、大規模接入這5 個功能模塊.
1)可復現實驗模塊
一個完整的聯邦學習框架需要多個組件來實現,Flower 中提供了一套可靠、成熟的組件來實現,研究人員可以在一套組件下快速進行實驗驗證.此外,已有算法庫可以讓研究人員快速與現有方案進行對比.
2)機器學習算法模塊
聯邦學習計算的方式彌補了傳統單機模式下的不足,但是仍舊有許多的ML 算法尚未遷移過來.Flower通過對現有機器學習框架的鏈接,允許用戶在現有機器學習代碼庫的基礎之上將機器學習算法快速應用于聯邦學習模型的訓練中.
3)網絡擾動模塊
通信網絡貫穿聯邦學習的整個始末,在現實場景中,網絡通信狀態直接會影響模型訓練的效率和結果.Flower 提供了對網絡帶寬約束的功能,方便量化網絡波動對整個聯邦學習過程的影響.
4)跨平臺接入模塊
現有聯邦學習框架對異構設備的支持十分有限,更多的是傾向于對服務器端的定義和客戶端的計算,或是傾向于對服務器集群而忽視對移動客戶端的關注.Flower 中提供了對不同架構的支持,因此可以測試異構環境下不同算法的表現.此外,Flower 在設計上抽象類的設計,使得Flower 對于特定編程語言的依賴降到最低.
5)大規模接入模塊
在真實場景下的聯邦學習訓練需要大量的設備參與.然而,在實驗場景中往往不會以真實的參與規模進行設計,對于大規模設備參與的可擴展性有待考察.Flower 在設計之初就考慮到了大量并發連接客戶機的場景,具有很好的可擴展性.
2.6.3 Flower 版本變化
相比于其他聯邦學習框架,Flower 具有可擴展性、兼容性、易擴展等特性,使得使該框架不僅可以用于項目研究,還能方便地進行生產部署.除了2020年11 月發布的首個版本,2021 年1 月Flower 0.13.0版本實現了由集中式訓練向聯合式訓練的轉變.2021 年9 月的Flower 0.17 版本引入了虛擬客戶端引擎,支持在單臺機器或計算集群中實現大規模客戶端的模擬.2022 年2 月Flower0.18.0 版本實現了對Android 移動端的支持.
除了目前業內較常用的幾款開源框架外,其他的公司也根據自己的業務場景設計、開源了其框架.其中開源框架包括Fedlearner,FedNLP,FederatedScope;閉源框架有ClaraFL 和蜂巢.由于閉源框架的封閉性,本文后續的對比僅針對開源框架進行.
3.1.1 Fedlearner 框架
字節跳動公司在2020 年初就開源了聯邦學習框架 Fedlearner,該框架可以支持各類聯邦學習模式,包括模型管理、訓練任務管理等模塊[42].與微眾銀行等開源框架不同,Fedlearner 實行產品化工作,將模塊部署于平臺側和廣告主側,注重于在推薦行業開展聯邦學習,如圖24 所示.

Fig.24 Fedlearner architecture圖24 Fedlearner 架構
Fedlearner 的主要架構如圖24 所示,主要流程可以概括為3 個部分:數據求交、模型訓練和部署.
1)數據求交
在進行聯邦學習前,首先要對訓練雙方數據求交集,找到共有的數據特征,數據求交的方法有2 種:流式數據求交和隱私集合求交(private set intersection,PSI)數據求交.①流式數據求交.流式數據通常是指由共同在線流量產生的數據,它們的數據落盤時間、樣本存儲可靠性都不能做到一致,且不同的訓練方還存在樣本缺失和樣本順序不統一的問題.因此,Fedlearner針對這些數據采取了流式數據求交的方法.②PSI 數據求交.對于各方獨自持有的數據,例如不同機構的用戶信息數據,Fedlearner 提供了PSI 加密數據求交的方式,通過該方式完成數據求交后,雙方不會得到除交集信息之外的其他任何信息.
2)模型訓練
由于字節跳動公司在推薦場景有豐富的技術資源,因此模型訓練部分包括神經網絡模型訓練(支持橫向和縱向聯邦學習)和樹模型訓練(SecureBoost 算法).
3)部署
為了實現一鍵式部署,Fedlearner 的設計團隊推出了Kubernetes+HDFS/MySQL/Elasticsearch 的部署模式.其中,Kubernetes 管理集群和任務;HDFS 負責數據存放;MySQL 負責存儲系統數據;Elasticsearch 用于實現一個動態可擴展的集群,實現主節點、客戶端和數據節點的多角色部署.由此,用戶可以利用Helm Chart 輕松完成大規模部署.
3.1.2 FedNLP 框架
除了工業界,南加州大學Lin 等人[43]也開源了首個以研究為導向的自然語言處理聯邦學習框架(federated learning natural language processing, FedNLP).其具體框架如圖25 所示,主要由應用程序層、算法層和基礎架構層這3 層組成.

Fig.25 FedNLP architecture圖25 FedNLP 架構
1)應用程序層
應用程序層定義了數據管理、模型定義和自然語言處理(natural language processing,NLP)訓練器3個功能模塊.①數據管理.在數據管理中,4 種不同類型的數據管理負責控制從加載數據到返回訓練函數的整個工作流程.用戶可以根據需要開展聯邦學習任務,實現自定義數據管理.②模型定義.FedNLP 提供了Transformer 和LSTM 模型.其特點是與HuggingFace Transformers 庫兼容,研究人員可以直接應用現有NLP生態中各種類型的Transformer,無需重新設計.此外,Fedlearner 也支持LSTM 模型,以實現一些特定的聯邦學習案例.③NLP 訓練器(單進程角度).該NLP 訓練器不需要研究人員了解分布式系統的內容即可完成設定,即用戶只需完成單進程代碼編寫.為實現聯邦訓練,用戶需要繼承應用層的訓練分類來實現操作:獲取本地模型參數并傳輸至服務器、獲取服務器聚合后模型并更新本地模型參數.
2)算法層
算法層由服務器管理和客戶端管理核心對象組成,其作用是集成基礎結構層的通信模塊,以完成分布式算法協議(如FedAvg,FedProx,FedOpt 等)和分布式訓練.同時,用戶也可以通過將自定義的訓練方傳遞給算法API 來自定義訓練方,API 的參數包括模型、數據和單進程訓練器.
3)基礎架構層
該層包括分布式計算、訓練傳輸、訓練引擎3 個模塊.其中分布式計算模塊主要負責管理各聯邦學習參與端,進行GPU 資源分配.訓練傳輸模塊中使用統一抽象的通信管理來完成復雜的算法通信協議.當前,該架構支持MPI,RPC,MQTT 通信后端.其中MPI 主要用于滿足單個集群中的分布式訓練需求;RPC 主要用于滿足跨數據中心的通信需求(例如,跨孤島聯邦學習);MQTT 主要用于滿足智能手機或物聯網設備的通信需求.訓練引擎模塊的主要作用是通過訓練分類重用現有的深度學習訓練引擎.雖然該模塊的當前版本是基于PyTorch,但它可以輕松支持TensorFlow等框架.同時,未來該框架可能會考慮在此級別上支持通過編譯器技術優化的輕量級邊緣訓練引擎.
3.1.3 FederatedScope
FederatedScope 是由阿里巴巴達摩院研發、開源的框架[44].該框架采用事件驅動的編程范式,用于支持現實場景中聯邦學習應用的異步訓練,并借鑒分布式機器學習的相關研究成果,集成了異步訓練策略來提升訓練效率.具體而言,FederatedScope 將聯邦學習看成是參與方之間收發消息的過程,其通過定義消息類型以及處理消息的行為來描述聯邦學習過程.
如圖26 所示,FederatedScope 通訊模塊由信息和通信兩部分組成,在服務器和客戶端之間交互.信息主要由發送方、接收方、“TYPE”和數據載體4 部分組成,發送方和接收方用于信息的跟蹤和驗證,“TYPE”用于區分信息的類型,數據載體用于保存交換的信息.

Fig.26 FederatedScope architecture圖26 FederatedScope 架構
FederatedScope 的優點在于不需要開發者將聯邦學習的過程用順序執行的視角來完整描述,而只需采用事件驅動的方式增加新的消息類型和消息處理行為,系統協助完成自動調參和高效異步訓練,降低了所需的開發量以及復雜度.
之后該團隊開發了FS-G (FederatedScope-GNN),一種基于FederatedScope 面向于圖神經網絡的聯邦學習(GFL)框架[45].FS-G 包含了一個FGL 包,用于構建可配置、統一、全面的基準.其系統架構如圖27 所示.

Fig.27 FS-G architecture圖27 FS-G 架構
FS-G 系統組件功能為:
1)GNN 模型庫模塊用于處理不同級別任務;神經網絡模塊構建不同結構的GNN;GNN 訓練方封裝本地訓練方法接口;圖數據庫模塊允許用戶通過配置數據集、分割器、轉化器以及數據下載器來構建聯邦學習數據集.
2)圖學習后端模塊可對接包括TensorFlow,Pytorch,JAX 在內的多種主流機器學習框架以及 SQL 前端.
3)FGL 運行模式模塊為FS-G 的運行調用接口,可接收配置參數信息并返回訓練結果指標集合.
4)模型調優組件模塊為模型調整組件.超參數優化模塊用于自動調整參數,通過減半算法(SHA)加快超參數評估和搜索,降低資源消耗.監控器模塊通過可視化損失函數以及準確率等指標監控訓練過程.個性化模塊允許用戶在Non-IID 的條件下調整模型參數或者實現GNN 的超參數個性化.
5)攻擊與防御模塊主要繼承了現成的各種主動和被動隱私攻擊方式,包括成員推理攻擊、屬性推理攻擊和標簽推薦攻擊等.隱私安全保護策略,包括差分隱私、多方安全計算.
英偉達也推出了一款主要應用目標為醫院和醫療機構的聯邦學習框架ClaraFL[46].該框架的特點是客戶端可以部署于面向邊緣的英偉達服務器上,在本地進行模型訓練,并通過聯邦學習的方式實現數據交流,從而與多參與方共同訓練出更精準的全局模型.ClaraFL 可以將患者數據保存在醫院內部,實現隱私保護的同時,幫助醫生進行高速而準確的診斷.由于單個醫療機構的數據量有限,基于ClaraFL 進行聯邦學習可以有效匯總海量醫療數據,打破數據壁壘,提高醫療救治水平.
此外,平安科技也推出了一款主要應用于物流行業的聯邦智能框架——“蜂巢”.該框架的特點是支持定制化,采用了國密SM2、國密SM4 以及差分隱私和同態加密等加密方式,以滿足不同場景所需的不同保密級別.
在3.1 節介紹的開源框架中,框架在隱私泄露風險和數據加密都有各自的方案.其中FedNLP 和FederatedScope 共同支持差分隱私的加密技術.在此基礎之上,FederatedScope 除了支持多方安全加密和同態加密之外,還提供了主流的隱私評估算法.Fedlearner則是采用嵌入式的保護框架.例如采用PSI 加密數據或是采用Paillier 算法對梯度加密.在算法級別,FedNLP,FederatedScope 和Fedlearner 三者均支持傳統的機器學習算法、深度學習網絡,但是在學習類型中FederatedScope和FedNLP 都支持橫向聯邦學習和縱向聯邦學習,而Fedlearner 暫時僅支持橫向聯邦學習.在計算范式方面,三者均支持單機模擬和分布式訓練,其中FederatedScope為單機模擬和分布式部署提供了統一的算法描述和接口.除了單機和分布式2 種模式外,FedNLP 還支持移動設備端的訓練.針對可視化系統的支持,Fedlearner自身有可視化圖表功能,FedNLP 借助wandb 模塊完成對框架的監控.
為了更好地根據應用場景以及應用需求選擇相應的開源框架,本節從各框架支持的隱私機制、機器學習算法、計算范式、聯邦學習類型、訓練架構以及可視化等方面對目前應用較廣的6 個開源框架進行了深入分析和對比,具體如表3 所示.
降低隱私泄露風險、提升私密數據安全性是聯邦學習的初衷之一,因此各框架均采用多樣的加密技術(如同態加密、多方安全計算和差分隱私)以保障參與方的隱私安全.其中同態加密主要是利用具有同態性質的加密函數對數據加密,實現對加密后的數據處理和保證隱私安全.Deffie-Hellman 算法的通信雙方通過交換信息生成共同密鑰,并利用密鑰進行對稱加密通信.RSA 加密算法則是非對稱加密技術,由一對公鑰和私鑰組成密鑰.
多方安全計算是指在無可信第三方情況下,通過多方共同參與安全完成協同計算.SPDZ 是許多聯邦學習框架采用的協議,它包含混淆電路、秘密共享和不經意傳輸等技術.ABY3 協議則綜合采用算術分享、布爾分享和混淆電路協議.
基于差分隱私的數據保護,是通過向數據或模型參數注入隨機噪聲以實現隱私保護,同時防止對模型的推理攻擊.目前的聯邦學習框架主要采用DPSGD 算法對隨機梯度下降算法進行改進而使其具有差分私有性.
PySyft 具有相對完善的隱私保護機制,同時應用差分隱私、基于CKKS 的同態加密和基于SPDZ 協議的安全多方計算來保障數據安全;而TFF 和Flower僅采用了差分隱私技術.與PySyft 類似,FedML 同樣提供了較為全面的隱私保障,同時它還能抵御對抗攻擊,采取RFA 和KRUM 等技術讓聯邦學習具有魯棒性.PaddleFL 利用差分隱私和基于PrivC 和ABY3的安全多方計算來實現安全聯邦學習.FATE 在隱私機制上主要采用同態加密技術和安全多方計算,其中前者包括Paillier,RSA,Affine,IterativeAffine 等加密算法,后者基于SPDZ、混淆電路、不經意傳輸等密碼學協議實現.
在算法級別,FATE 框架最為全面,對于橫向聯邦學習、縱向聯邦學習和聯邦遷移學習均支持許多機器學習算法.該框架集成了各種線性模型和DNN,RNN,CNN 等神經網絡.此外,除了FATE 提供了SecureBoost 安全樹外,其他框架均尚未支持決策樹相關算法.PaddleFL 在橫向聯邦方面提供了DP-SGD等算法;Flower 在橫向聯邦方面,除了對常規神經網絡有很好的支持外,對Sklearn 中提供的算法也有很好的支持.對于縱向聯邦學習,支持關于神經網絡和邏輯回歸的相關算法.TFF,PySyft,FedML 可以實現線性模型和神經網絡算法.總而言之,FATE 和PaddleFL傾向于提供現成算法供用戶直接使用,而PySyft,TFF,FedML 則更側重用戶構建自定義聯邦學習算法.
計算范式方面,針對科學研究、測試開發和工業生產等不同使用場景,需要有不同的計算范式,因此是否擁有多樣化的計算范式是衡量聯邦學習框架的一個重要因素.目前較多學者主要采用支持3 種范式的PySyft,FedML,Flower 開展學術研究;此外,Flower相較于其他框架,提供了一套用于模擬真實場景下網絡擁塞和大規模并發的機制,使得模擬場景更貼近現實場景.FATE 作為工業級聯邦學習框架,可進行單機模擬和分布式計算,雖然在工業應用上較有優勢,但暫未支持移動設備端訓練.PaddleFL 目前主要支持單機模擬與基于拓撲結構的分布式訓練,但研究團隊指出在下一版本中將開源手機端的聯邦學習模擬器.
聯邦學習中服務器與客戶端間存在大量的通信,需要保證通信的效率和可靠性.多數開源框架都利用Google 提供的gRPC 來實現RPC 通信,包括TFF,FATE,Paddle FL,Flower.RPC 框架可以有效連接跨數據中心的設備,適用于相互之間數據傳輸頻繁的Crosssilo 聯邦學習場景.FedML 支持的通信后端最為豐富,包括MPI,gRPC,MQTT,這是FedML 框架的一個突出優勢.此外,Flower 和FedML 的通信模塊采用了靈活的設計,可以通過替換底層的通信管理模塊來使用自定義的通信協議.
對于工業生產應用,利用FATE 可以輕松構建端到端的聯邦學習 Pipeline ,包括生產服務、建模訓練、模型管理、生產發布和在線推理等方面.PySyft 尚未提供大規模或工業部署方案,更適合作為學術研究的工具.Flower 提供了大規模的部署方案以及網絡模擬,此外也在移動端、無線端提供了跨平臺支持,適合作為模擬大規模場景下的學術研究工具.TensorFlow,Federated 和FedML 同樣缺少對線上生產的完善支撐.
可視化方法可以幫助研究人員形象了解復雜模型的本質和過程[47],從而進行模型設計和模型調試等任務[48].截至目前,只有FATE 和FedML 提供了可視化功能,其他框架尚未推出相關功能.相對于其他框架,FATE 設計了針對模型訓練過程的可視化組件,可以記錄聯邦學習的全流程.對于聯邦學習了解較少的研究人員來說,使用FATE 可以更好地跟進聯邦學習過程,完成模型調試等操作.
異步聚合方面,FATE 提供異步聚合的接口,其他框架未直接提供異步聚合接口,但可以基于框架進行2 次開發實現異步聚合的功能.現有原生的框架本身都提供了比較健全、完善的方法接口,用戶可以根據需求編寫自己的算法來滿足不同的聯邦學習場景的需要,如用戶掉線場景.
為了幫助研究人員更好地根據應用需求選擇合適的聯邦學習框架,本節以2 個不同的場景為例,闡述如何選擇以及搭建聯邦學習框架,并基于搭建的框架進行實驗.
隨著智能設備感知能力和計算能力的不斷提升,越來越多的設備具備了微型計算機的能力.而如何利用這些智能設備的本地數據和計算資源創造更有益的技術成為了目前的研究熱點之一.因此,我們選擇的第1 個應用場景是:在IoT 網絡中,通過在分散的IoT 設備中訓練一個圖像分類模型,使其可以準確識別、分類圖片.
對于此應用場景,其需求是在IoT 網絡中部署聯邦學習框架,分析已有的開源框架,目前FedML 和Flower 支持該需求.我們以FedML 為例搭建聯邦學習框架,利用樹莓派搭建IoT 設備集群,在MNIST 和CIFAR10 數據集上實現圖片的分類任務.
5.1.1 實驗基本設置
該系統主要包含4 臺樹莓派,并將其中1 臺作為中心服務器,用于模型聚合;另外3 臺作為客戶機,基于本地數據集進行訓練并上傳模型.
算法:采用常規的聯邦學習算法Fedavg.
其他參數:采用Adam 優化器,學習率為0.01.
數據集:為了測試搭建框架在不同數據集以及不同模型上的訓練效果,分別基于真實數據集MNIST和CIFAR10 進行實驗.
對比方法:①集群訓練.聯合3 臺客戶機的本地數據進行分布式聯邦學習模型訓練.②單機本地訓練.單臺客戶機基于本地數據集進行模型訓練.
5.1.2 基于MNIST 數據集的實驗
MNIST 數據集包含了60 000 個樣本(50 000 個訓練集、10 000 個測試集).在MNIST 數據集中的每張圖片由28× 28 個像素點構成,每個像素點用1 個灰度值表示.采用MobileNet 模型,模型由13 個Depthwise Separable 卷積層、1 個二元自適應均值匯聚層和1 個全連接層構成.圖28 分別分析了客戶端數據為500和5 000 這2 種情況下的聯邦學習和單機的模型準確率收斂曲線.相比于單機本地訓練,圖28(a)下聯邦學習可以提升12.4%的準確率;圖28(b)下聯邦學習可以提升2.3%的準確率.可見,在數據缺乏的情況下,聯邦學習可以帶來更大的收益.

Fig.28 Model convergence curves under MNIST dataset圖28 MNIST 數據集下模型收斂曲線
5.1.3 基于CIFAR10 數據集的實驗
CIFAR10 是1 個包含60 000 張圖片的數據集.其中每張照片為32× 32 的彩色照片,每個像素點包括RGB 3 個數值,數值范圍是 0~255.所有照片分屬10 個不同的類別,分別是“airplane”“automobile”“bird”“cat”“deer”“dog”“frog”“horse”“ship”“truck”.其中50 000張圖片為訓練集,剩下的10 000 張圖片屬于測試集.
模型采用2 個5× 5 的卷積網絡(每層有64 個通道),1 個2× 2 的最大池化層,2 個完全連接層(分別包含384 個單元和192 個單元),最后是一個softmax 輸出層.該實驗設置單機隨機選擇1 500 個數據(圖29 (a))和5 000 個數據(圖29(b))作為對比,觀測在聯邦學習和單機模式下訓練模型準確率的收斂曲線.2 組對照實驗中,聯邦學習的準確率整體提升了8%,相較于傳統的單機模式性能有所提升.

Fig.29 Model convergence curves under CIFAR10 dataset圖29 CIFAR10 數據集下模型收斂曲線
人工病理診斷一般都要求醫院具有較強的技術支持和醫生具有較豐富的經驗.而在一些醫療資源相對欠缺的區域,如果醫生無法通過一些儀器進行輔助診斷,則可能存在誤診與漏診情況.目前,人工智能的發展大大推動了智能藥物研發、輔助醫療診斷、基因特性分析的發展,使得不同醫療機構之間共享醫療資源成為可能.因此,第2 個應用場景是:通過學習不同醫療機構的醫療數據,訓練一個可以輔助醫生進行病理診斷的模型.
對于此應用場景,我們最基本的設計需求是需要搭建一個支持數據隱私保護的分布式學習架構.雖然已有開源框架幾乎都支持該需求,但是由于醫院對其醫療數據的安全性要求特別高,且目前工業支持和應用較為成熟的只有FATE,因此,我們選擇以FATE 為例搭建病理診斷模型的聯邦學習系統,選用UCI 數據庫中Wisconsin 州乳腺癌數據集[49]進行模型訓練.
5.2.1 配置文件
1)dsl 文件.用來描述任務模塊,以有向無環圖(DAG)的形式組合任務模塊.
2)conf 文件.設置各個組件的參數,如輸入模塊的數據表名、算法模塊的學習率、batch 大小、迭代次數等.
5.2.2 參與各方角色
1)Guest.任務的發起者,代表數據應用方.
2)Host.數據提供方,為Guest 提供數據.
3)Arbiter.輔助多方完成聯合建模,主要作用是聚合梯度或者模型.比如聚合各方本地模型,各方將自身梯度模型參數發送給Arbiter,Arbiter 進行聯合優化等.
5.2.3 橫向聯邦場景
1)數據集.采用乳腺癌數據集Breast Cancer 作為實驗數據.Breast Cancer 數據集有569 組31 維實例數據,30 維的診斷屬性包括radius 半徑(從中心到邊緣上點的距離的平均值)、texture 紋理(灰度值的標準偏差)等,1 維的標簽類分為WDBC-Malignant 惡性和WDBC-Benign 良性.該數據集中,469 條數據作為訓練樣本,100 條數據作為測試樣本.從469 條訓練樣本中,選取200 條樣本作為參與方A(host)的本地數據,將剩余的269 條樣本作為參與方B(guest)的本地數據,測試數據共享.
2)任務.采用Breast Cancer 數據集在Logistic Regression 模型下進行醫療病例診斷.
3)對比方法.①聯邦訓練.聯合參與方A,B進行聯邦學習模型訓練.②本地訓練.參與方B基于本地數據進行模型訓練.
實驗結果如圖30 所示.圖30(a)為模型準確率的收斂曲線,在整個訓練過程中,雙方都達到了不錯的效果,但是采用聯邦學習的方式,相比于單機模式提高了2.3%的準確率.在圖30(b)所示的模型損失函數的收斂曲線中,聯邦學習的方式使得損失以更快的速度達到最小.相比于本地訓練,聯邦學習下模型的準確率有所提升.橫向聯邦學習可以聯合多個參與者的具有相同特征的數據樣本,提高樣本的豐富性.

Fig.30 Breast Cancer horizontal federated learning圖30 Breast Cancer 橫向聯邦學習
5.2.4 縱向聯邦學習場景
1)數據集.采用Breast Cancer 數據集作為實驗數據.其中,400 條數據作為訓練樣本,169 條數據作為評估測試樣本.從400 條訓練樣本中,選取Breast Cancer數據集前20 個特征作為參與方A的本地數據,后10個特征以及標簽作為參與方B的本地數據,測試數據參與方B獨享.
2)任務.采用Breast Cancer 數據集在邏輯回歸模型下進行醫療病例診斷.
3)對比方法.①聯邦訓練.聯合參與方A和B進行聯邦學習模型訓練.②本地訓練.參與方B基于本地數據進行模型訓練.
實驗結果如圖31 所示.圖31(a)為模型準確率的收斂曲線.在準確率方面:聯邦學習的結果相較于本地訓練這種方式,準確率提升了4.7%.在訓練速度方面:聯邦學習的結果也比本地訓練加快了約10 輪.圖31(b)為模型損失函數的收斂曲線,可以明顯看出聯邦學習的損失函數以更快的速度達到收斂.因此,從圖31可以看出,縱向聯邦學習可以聯合多個參與者的共同樣本的不同數據特征,豐富樣本特征,提高模型的識別準確率.

Fig.31 Breast Cancer vertical federated learning圖31 Breast Cancer 縱向聯邦學習
總之,從圖30 和圖31 表明,橫向聯邦學習和縱向聯邦學習都可以有效提高模型的訓練效果,同時,聯邦學習的計算范式保證了用戶本地數據的隱私安全.此外,在開展聯邦學習時,需要根據場景選擇合適的聯邦學習模式,缺少樣本數據可以選擇橫向聯邦學習,缺少樣本特征可以選擇縱向聯邦學習.
為了進一步對比不同框架的效率,我們基于FedML和FATE 框架分別對Breast Cancer 數據集進行橫向聯邦學習模型訓練和縱向聯邦學習模型訓練,從時間角度來比較2 個框架間的效率差異.服務器配置清單:CPU 為i5-4460,1.86 GHz,6 核;內存容量為16 GB;網絡帶寬為30 Mbps;操作系統為CentOS Linux release 7.9.2009.
實驗結果如圖32 所示,橫向聯邦學習到達指定目標準確率時,FedML 框架比FATE 框架耗時少8s,有8%左右的速度優勢.究其原因,FedML 相比于FATE更輕量級,時間優勢主要體現在框架啟動過程中,但整體上2 個框架在橫向聯邦學習訓練效率上比較相近.縱向聯邦學習到達指定目標準確率時,FedML 框架只需103s,相比于FATE 框架速度提升了86%.這主要由于FATE 框架中的縱向聯邦學習采用了多方安全的樣本對齊算法,該算法基于RSA 加密算法和散列函數實現,在增強隱私保護的同時嚴重降低了模型的訓練效率.

Fig.32 Comparison of training time of different frame models圖32 不同框架模型訓練時間對比
FATE 框架相比于FedML 有隱私保護機制支持,因而不可避免地造成效率上的損失.其他框架也是如此,追求數據的高度隱私安全會造成訓練效率的急劇下降,但可以通過并行加密計算等技術加速訓練,提高效率.
盡管聯邦學習已有實際落地的項目,但是其仍然處于發展初期,對于各種復雜的學習場景還有很多待解決的挑戰問題以及待提升的技術,通過對目前聯邦學習開源框架的研究和應用現狀的分析,本文總結了5 點挑戰與展望.
1)隱私安全
隱私安全問題是聯邦學習研究的動因.雖然通過訓練數據不離開本地進行訓練可以保護數據隱私信息的安全性,但在實際應用過程中,由于聯邦學習的訓練過程包含多個復雜環節,因而每個環節依然面臨許多安全與隱私挑戰,如投毒攻擊[50-51]、基于GAN[52-53]的攻擊、推理攻擊[54]、通信節點攻擊和中央服務器攻擊等.多數實驗證明,即使只上傳模型的相關參數,仍然能反推出終端的隱私數據[55-56].針對以上威脅,聯邦學習框架在安全和隱私保護方面采取了一系列的措施,如差分隱私[57-58]、同態加密[59-60]和安全多方計算[61-62]等.雖然這些技術能實現安全聯邦學習,但仍然存在一些易受攻擊的漏洞需要填補.此外,采用隱私技術的同時也會造成較大的通信開銷,因此如何平衡模型安全和通信也是一個相當大的挑戰.
2)效率、準確性和隱私的權衡
增強聯邦學習的隱私保護,在一定程度上犧牲了模型訓練效率與結果準確性.在聯邦學習場景下,一個模型訓練包括大規模的數據樣本和復雜計算,此時運算效率是一個重要問題.聯邦學習框架采用復雜的加密系統以保護隱私,而這需要龐大的計算量和通信量.網絡帶寬有限、設備掉線等通信問題都會使傳輸的數據量和傳輸速度下降[63-64],從而導致聯邦學習的效率不高.結果準確性方面,如果加密級別太高或添加噪聲過多,無疑會降低模型的準確性.因此,如何在保障隱私安全的前提下提高聯邦學習的訓練效率和結果準確性,實現安全、效率和準確性之間的平衡[64-66],是聯邦學習框架需要解決的問題.
3)激勵機制
聯邦學習是一個多方數據聯盟的技術,只有提高參與用戶的數量才能訓練出更精確有效的模型.如果沒有采取合適的激勵機制,那么獲取的數據和訓練的模型質量受限.同時,各方可能因利益沖突、互不信任等問題導致最終合作失敗.如何制定合理的激勵機制是聯邦學習框架面臨的一大挑戰.未來,聯邦學習框架不僅需要考慮隱私保護,更要考慮如何通過共識機制實施公平激勵[67-68],以實現聯邦集體利益最大化.各框架可以通過計算各參與方對模型的貢獻建立數據記錄機制(例如記錄于區塊鏈中[69-70])以激勵不同程度參與方,從而形成最優聯邦組織.
4)異構性與個性化
現有的聯邦學習框架要求全體參與方訓練出一致的全局模型,而這在實際復雜的物聯網應用中是不現實的.由于設備、統計和模型的異構性[71],現有的聯邦學習模型不能直接在物聯網設備中有效應用.為了解決異構性挑戰,聯邦框架需要考慮個性化處理[72-74],讓每個設備獲得高質量的個性化模型,如采取多任務和元學習的方法.
5)跨框架交互
隨著聯邦學習逐漸進入大眾視野,不同行業的公司都推出了各自的聯邦學習框架.而這在豐富市場選擇中也出現了新的問題:由于各框架技術實現的差異和安全協議的區別,不同框架所托管的數據在實際應用中無法跨框架交互.不同聯邦學習技術框架之間互聯的阻礙限制了跨行業數據的交流和行業間融合互通,制約了數據價值的釋放.因此,聯邦學習框架應朝著數據跨框架交流、算法跨框架部署、任務跨框架執行的方向發展,使不同行業可以在統一的標準下進行聯邦學習,實現行業互聯互通,推進數字化融合發展.
作為破解“數據孤島”問題和保障隱私安全的有效手段,聯邦學習的重要性日益凸顯.而聯邦學習的有效應用主要依托于開源框架的研究和建設.因此,考慮到聯邦學習開源框架的重要性,本文重點從系統架構、系統功能、版本變化3 方面介紹開源框架FATE,PySyft,TensorFlow Federated,Paddle FL,FedML,Flower.并從隱私機制、機器學習算法、計算范式、學習類型、訓練架構、通信協議、可視化等方面對比總結了各框架的優劣勢.為了更好地幫助讀者搭建開源框架,本文給出了2 個不同應用場景框架搭建的實例.并基于目前框架存在的開放性問題,從隱私安全、激勵機制與置信規則、跨框架交互等方面討論了未來可能的研究發展方向.總之,本文對于聯邦學習未來的研究具有較好的參考意義,可為開源框架的建設創新、結構優化、安全優化以及算法優化等提供有效思路.
作者貢獻聲明:林偉偉提出文章的整體思路和框架;石方和曾嵐負責撰寫論文;李董東和許銀海負責完成實驗;劉波提出指導意見并修改論文.