使用 TFF 進行聯邦學習研究

總覽

TFF 是一個可擴充且功能強大的架構,透過在逼真的 Proxy 資料集上模擬聯邦式運算,以進行聯邦學習 (FL) 研究。本頁面說明與研究模擬相關的主要概念和組件,以及在 TFF 中進行不同類型研究的詳細指南。

TFF 研究程式碼的典型結構

在 TFF 中實作的研究聯邦學習模擬通常包含三種主要邏輯。

  1. TensorFlow 程式碼的個別片段,通常是 tf.function,可封裝在單一位置 (例如,在用戶端或伺服器上) 執行的邏輯。此程式碼通常在沒有任何 tff.* 參考的情況下編寫和測試,並且可以在 TFF 之外重複使用。例如,「聯邦平均」中的 用戶端訓練迴圈 就是在此層級實作。

  2. TensorFlow Federated 編排邏輯,將 1. 中的個別 tf.function 繫結在一起,方法是將它們包裝為 tff.tensorflow.computation,然後在 tff.federated_computation 內使用 tff.federated_broadcasttff.federated_mean 等抽象概念來編排它們。例如,請參閱此「聯邦平均」的編排

  3. 一個外部驅動程式指令碼,可模擬生產聯邦學習系統的控制邏輯,從資料集中選取模擬用戶端,然後在這些用戶端上執行 2. 中定義的聯邦式運算。例如,「聯邦 EMNIST」實驗驅動程式

聯邦學習資料集

TensorFlow Federated 託管多個資料集,這些資料集代表真實世界問題的特性,而這些問題可以透過聯邦學習解決。

資料集包括

  • StackOverflow 一個逼真的文字資料集,適用於語言模型化或監督式學習任務,在訓練集中有 342,477 位不重複使用者,以及 135,818,730 個範例 (句子)。

  • 聯邦 EMNIST EMNIST 字元和數字資料集的聯邦式預先處理,其中每個用戶端都對應到不同的書寫者。完整訓練集包含 3400 位使用者,以及來自 62 個標籤的 671,585 個範例。

  • 莎士比亞 一個較小的字元級文字資料集,以威廉·莎士比亞的全集為基礎。資料集包含 715 位使用者 (莎士比亞戲劇的角色),其中每個範例都對應到特定戲劇中角色說出的一組連續台詞。

  • CIFAR-100 CIFAR-100 資料集的聯邦式分割,跨越 500 個訓練用戶端和 100 個測試用戶端。每個用戶端都有 100 個不重複的範例。分割的目的是在用戶端之間建立更真實的異質性。如需更多詳細資訊,請參閱 API

  • Google Landmark v2 資料集 此資料集包含各種世界地標的照片,影像依攝影師分組,以達成資料的聯邦式分割。有兩種資料集版本可供使用:較小的資料集有 233 個用戶端和 23080 張影像,而較大的資料集有 1262 個用戶端和 164172 張影像。

  • CelebA 一個包含名人臉部範例 (影像和臉部特徵) 的資料集。聯邦式資料集將每位名人的範例分組在一起,以形成一個用戶端。共有 9343 個用戶端,每個用戶端至少有 5 個範例。資料集可以依用戶端或依範例分成訓練和測試群組。

  • iNaturalist 一個包含各種物種照片的資料集。此資料集包含 120,300 張影像,涵蓋 1,203 種物種。共有七種資料集版本可供使用。其中一個版本依攝影師分組,包含 9257 個用戶端。其餘資料集依照片拍攝地點的地理位置分組。這六種資料集版本包含 11 到 3,606 個用戶端。

高效能模擬

雖然聯邦學習模擬的實際耗時並非評估演算法的相關指標 (因為模擬硬體無法代表真實聯邦學習部署環境),但能夠快速執行聯邦學習模擬對於研究生產力至關重要。因此,TFF 已大力投資提供高效能的單機和多機執行階段環境。文件仍在開發中,但目前請參閱關於使用加速器的 TFF 模擬,以及關於在 GCP 上設定 TFF 模擬的說明。高效能 TFF 執行階段環境預設為啟用。

適用於不同研究領域的 TFF

聯邦最佳化演算法

在 TFF 中,可以使用不同的方式研究聯邦最佳化演算法,具體取決於所需的自訂程度。

「聯邦平均」演算法的最小獨立實作範例在此提供。程式碼包含用於本機運算的 TF 函式、用於編排的 TFF 運算,以及 EMNIST 資料集上的 驅動程式指令碼範例。這些檔案可以輕鬆地針對自訂應用程式和演算法變更進行調整,請依照 README 中的詳細說明進行。

更通用的「聯邦平均」實作範例可以在此處找到。此實作允許更精密的最佳化技術,包括在伺服器和用戶端上使用不同的最佳化工具。其他聯邦學習演算法 (包括聯邦 k-means 分群) 可以在此處找到。

模型更新壓縮

模型更新的失真壓縮可以降低通訊成本,進而縮短整體訓練時間。

若要重現最近的論文,請參閱此研究專案。若要實作自訂壓縮演算法,請參閱專案中的 comparison_methods,以取得基準範例,如果您還不熟悉,請參閱 TFF Aggregators 教學課程

差分隱私

TFF 可與 TensorFlow Privacy 程式庫互通操作,以針對使用差分隱私的模型聯邦式訓練進行新演算法研究。如需使用 基本 DP-FedAvg 演算法擴充功能進行 DP 訓練的範例,請參閱此實驗驅動程式

如果您想要實作自訂 DP 演算法並將其套用至聯邦平均的匯總更新,您可以將新的 DP 平均演算法實作為 tensorflow_privacy.DPQuery 的子類別,並使用查詢的執行個體建立 tff.aggregators.DifferentiallyPrivateFactory。實作 DP-FTRL 演算法的範例可以在此處找到

聯邦 GAN (如下方 說明) 是另一個 TFF 專案實作使用者層級差分隱私的範例 (例如,此處程式碼)。

穩健性和攻擊

TFF 也可用於模擬針對聯邦學習系統的目標攻擊,以及 Can You Really Back door Federated Learning? 中考量的以差分隱私為基礎的防禦措施。這可以透過建構一個包含潛在惡意用戶端的反覆運算程序來完成 (請參閱 build_federated_averaging_process_attacked)。targeted_attack 目錄包含更多詳細資訊。

  • 新的攻擊演算法可以透過編寫用戶端更新函式 (也就是 Tensorflow 函式) 來實作,如需範例,請參閱 ClientProjectBoost
  • 新的防禦措施可以透過自訂 'tff.utils.StatefulAggregateFn' 來實作,此函式會匯總用戶端輸出以取得全域更新。

如需模擬的範例指令碼,請參閱 emnist_with_targeted_attack.py

生成對抗網路

GAN 構成一個有趣的 聯邦式編排模式,它看起來與標準「聯邦平均」略有不同。它們涉及兩個不同的網路 (生成器和鑑別器),每個網路都使用自己的最佳化步驟進行訓練。

TFF 可用於研究 GAN 的聯邦式訓練。例如,近期研究中提出的 DP-FedAvg-GAN 演算法已在 TFF 中實作。這項研究證明了結合聯邦學習、生成模型和差分隱私的有效性。

個人化

聯邦學習環境中的個人化是一個活躍的研究領域。個人化的目標是為不同的使用者提供不同的推論模型。解決此問題可能有多種不同的方法。

一種方法是讓每個用戶端使用其本機資料微調單一全域模型 (使用聯邦學習訓練)。此方法與元學習相關,例如,請參閱本論文。此方法的範例在 emnist_p13n_main.py 中給出。若要探索和比較不同的個人化策略,您可以

另一種方法是避免訓練完全全域模型,方法是完全在本機訓練模型的一部分。此方法的實例化在這篇部落格文章中說明。此方法也與元學習相關,請參閱 本論文。若要探索部分本機聯邦學習,您可以