文章來源:https://arxiv.org/pdf/2007.13518.pdf
《FedML: A Research Library and Benchmark for Federated Machine Learning》推薦給大家了解聯邦學習。
摘要
現有的庫無法滿足研究所需的各種算法開發(例如各種信息交換),並且由於實驗使用的數據集不一致,導致難以進行公平的對比。本文介紹了 FedML —— 能夠支持分布式訓練、行動裝置訓練和單機仿真訓練的開放庫。
介紹
聯邦學習是一種分布式學習,提出該概念的初衷是為了解決數據孤島問題,從分散、孤立的數據中訓練機器學習模型。
聯邦學習與傳統基於數據中心的分布式學習主要有三方面的不同:
統計異構 Statistical heterogeneous(例如數據的非獨立同分布、部分數據無標籤)。系統約束 System constraints(例如通信和計算能力的差異)。可信度 Trustworthiness(例如數據安全、隱私問題、公平性問題)。
過去幾年對這些問題已經進行了多方面的研究:
對於統計異構:提出了分布式優化方法(例如FedMA、FedProx、Adaptive Federated Optimization和FedNAS)。對於系統約束:利用壓縮、分散或量化技術來減少訓練過程中的通信開銷和計算成本。對於可信性問題:通過對抗性攻擊和防禦技術來增強聯邦學習的魯棒性、通過差分隱私和安全多方計算等方法來保護隱私。
目前對聯邦學習研究存在以下的局限性:
聯邦學習種類的多樣性導致現有 FL 庫不能完全支持。
在網絡結構中,目前已經提出了基於數據中心的FL、去中心化FL、分層FL、縱向FL、split-FL 以及 meta-FL;在信息交換中,除了交換梯度和模型以外,最新的FL算法還建議交換信息,例如半監督FL中的偽標籤和基於神經體系結構搜索FL中的體系結構參數;在訓練過程中, FL-GAN 和 聯邦遷移學習等訓練過程與 FedAvg 算法明顯不同。
2. 缺乏對多種 FL 計算範例的支持。
PyTorch、TensorFlow、MXNet 中 TensorFlow-Federated(TFF)2,PySyft 和 LEAF 僅支持具有中心結構的算法,如 FedAvg 或 FedProx 算法,不適用於需要交換複雜輔助信息和自定義訓練程序的算法。行業發布了面向生產的庫,例如FATE 和PaddleFL,但業界主導的產品通常具有繁瑣的系統設計,不靈活的API和複雜的環境設置,這對於在分布式系統開發中沒有足夠專業知識的算法研究人員來說是一個沉重的學習負擔。
3. 缺乏標準的 FL 算法實現。
由於沒有統一的標準框架,且聯邦學習中具有數據非獨立同分布的特性,導致實驗結果很難復現。因此難以公平地評價不同算法的性能。
4. 缺乏標準的 FL-Benchmark。
本文總結了過去兩年的頂會中使用的數據集合模型,這些已發表文章的實驗設置非常不一致,包括數據集的非I.I.D.設置、用於訓練的模型以及每一輪訓練涉及的 device 數量。這些設置的任何差異都可能影響實驗結果。
為了解決上述問題並促進 FL 研究的創新,本文介紹了 FedML.
(i) FedML 引入了 worker-oriented 的編程接口,用於靈活的拓撲配置和工作程序之間的任意信息交換。用戶可以在 FL 設置中為工作人員附加任何行為(例如,訓練,聚合,攻擊和防禦等),自定義其他交換信息,並控制 worker 之間的信息流,從而使 FedML 更加靈活和通用,可用於更高級的算法開發。
(ii) FedML支持三種計算範例:分布式計算,單機模擬和行動裝置訓練。
(iii)標準化的 FL 算法實現。 FedML 提供了許多現有的 FL 算法的標準化實現。這些實現不僅可以幫助用戶熟悉 API,還可以用作與新開發的 FL 算法進行比較的基準。
(iv) FedML 為非獨立同分布數據集提供了標準化基準設置。為了促進公平和可靠的比較,FedML在合理的設置下提供了有意義的指標和基線結果,確保所有算法都在具有合理調整的超參數的非獨立同分布的數據集上進行評估。
架構設計
FedML-Core 將通信和模型訓練分為兩個核心組件。
首先是通信協議組件 Distributed。它負責網絡中不同作品之間的底層通信。通信後端基於MPI(消息傳遞接口)。我們考慮根據需要添加更多的後端,例如RPC(遠程過程調用)。在通信協議組件內部,TopologyManager支持不同的分布式學習算法所需的靈活拓撲配置。第二個是設備上的深度學習組件(On-Device Machine Learning),它是基於流行的深度學習框架 PyTorch 或 TensorFlow 構建的。為了靈活性,這部分的框架沒有限制。用戶可以根據自己的需要創建 Worker 和 Coordinator, 此外,低級API支持安全性和與隱私相關的算法。
FedML-API 是基於 FedML-Core 構建的。
藉助FedML-core,可以通過採用 Worker-oriented 的編程接口輕鬆實現分布式版本的新算法。對於由於GPU內存和訓練時間限制而無法通過獨立仿真處理大型DNN訓練的情況,這種分布式計算範例至關重要。這種分布式計算設計不僅用於FL,而且還可以用於常規的集群內大規模分布式訓練(例如,訓練CNN或轉換器之類的現代神經體系結構)。 FedML-API 還建議將模型,數據集和算法的實現分開。這種做法可以實現代碼重用,並且還可以進行公平的比較,從而避免了由實現差異導致的算法之間的性能差異。FL 應用程式可以開發更多的模型並提交更現實的數據集,而無需了解不同的分布式優化算法的細節。
其他組件是基於FedML-API構建的。
FedML-Mobile 可以在 Android / iOS 智慧型手機上訓練神經網絡。在無線網絡環境中的測試平臺,研究人員可以評估實際的系統性能,例如培訓時間,通信和計算成本。在FedML-mobile的伺服器端,使用基於Python的框架構建雲服務,因此它可以重用FedML-API的核心實現。
實驗展示
為了演示FedML的功能,我們在真實的分布式計算環境中進行了實驗。我們使用標準的FedAvg算法訓練了大型CNN架構(ResNet和MobileNet)。下圖顯示了訓練期間的相應曲線。一個普遍的現象是對非I.I.D.數據性能低於I.I.D.數據。
FedML 提供 benchmark 的實驗結果作為新開發的算法和系統的參考。為了確保實時更新,使用 Weight 和 Bias 維護基準實驗結果,該在線平臺可幫助管理和可視化實驗結果。查看實驗結果的 Web 連結可在GitHub上找到。
總結
FedML 是面向研究的聯邦學習庫和基準。它為研究人員和工程師提供了端到端工具包,以開發和評估自己的 FL 算法,並與現有算法進行合理比較。在這項工作中,描述了系統設計,新的編程接口,應用示例,基準,數據集和一些實驗結果。它的參考實現,基準和數據集旨在促進 baseline 的再現以及對新開發算法的公平比較。我們接受用戶的反饋,並將不斷更新我們的庫以支持更高級的要求。