裝置端個人化聯合運算伺服器

聯合運算 (FC) 伺服器是裝置端個人化 (ODP) 提供的聯合學習功能之一。本文旨在介紹 Federated Compute Server (FC Server)、其元件和所用技術。本文將先概略介紹架構,然後詳細說明各個元件。此外,本課程也會探討這些元件如何共同提供聯合學習環境,並提供工作負載的擴充和分片策略。

訓練流程

訓練包含 FC 用戶端與 FC 伺服器之間的資料流。FC Client 是核心 Android 模組,可在裝置上訓練機器學習模型,並與 FC Server 互動。FC 伺服器會在受信任的執行環境 (TEE) 中,安全地處理及彙整 FC 用戶端的結果。

訓練包含下列步驟:

流程圖:顯示 Android 版 Privacy Sandbox 中,聯合運算用戶端與伺服器之間的訓練流程。
  1. 裝置上的 FC 用戶端會從金鑰服務下載公開加密金鑰。
  2. FC 用戶端會向 FC 伺服器回報,並取得訓練工作。
  3. FC 用戶端會下載訓練計畫,以及最新版本的模型 (版本 N)。
  4. FC 用戶端會使用本機資料和計畫進行訓練。
  5. FC 用戶端會使用步驟 0 中取得的公開金鑰,加密這部裝置的貢獻內容,然後上傳至 FC 伺服器。
  6. FC 用戶端會通知 FC 伺服器訓練已完成。
  7. FC 伺服器會等待,直到有足夠的用戶提交貢獻內容為止。
  8. 系統會觸發一輪匯總作業。
  9. 匯總器會將加密的貢獻內容載入受信任的執行環境 (TEE)。
  10. 匯總器會按照 NIST 的 RFC 9334 Remote ATtestation procedureS (RATS) Architecture,向協調器證明自身。驗證成功後,金鑰服務就會授予解密金鑰。這些金鑰可能會在 Shamir 秘密分享機制中,由多個金鑰供應商分割。
  11. 匯總器會執行跨裝置匯總,並根據適當的差異化隱私 (DP) 機制剪輯及加入雜訊,然後輸出加入雜訊的結果。
  12. 匯總工具會觸發模型更新工具
  13. 模型更新程式會載入匯總的貢獻內容,並套用至模型版本 N,藉此建立模型版本 N + 1。新模型會推送至模型儲存空間。

FC 伺服器可部署在支援 TEE 和相關安全防護功能的任何雲端服務上。我們正在評估公有雲供應商和基礎技術,但目前以下章節會以 Google Cloud 為例,說明如何使用 Confidential Space 實作。

整體架構

FC 伺服器在 Google Cloud 中部署了下列元件:

這張圖表顯示 Android 版 Privacy Sandbox 的聯邦運算伺服器架構。
元件 說明
工作管理服務 用於管理訓練工作的網路服務。合作夥伴應使用 Task Management API 建立訓練工作、列出所有現有訓練工作、取消工作,以及擷取所有訓練狀態。
工作指派服務 以 HTTPS 為基礎的網路服務,用戶端裝置會定期簽到,以取得訓練工作並回報訓練狀態。
集結網站 在 Confidential Space 中執行的背景服務。可執行 ODP 撰寫的工作負載。必須向協調員證明身分,協調員會控管解密金鑰的存取權。只有通過認證的匯總器才能解密用戶端裝置提交的貢獻內容,並執行跨裝置匯總。
模型更新程式 在 Confidential Space 中執行的背景服務,可將匯總的梯度套用至模型。

元件詳細資料

下列各節會進一步說明整體架構:

這張圖表顯示 Android 版 Privacy Sandbox 的聯邦運算伺服器元件。

工作管理服務

這張圖表顯示 Android 版 Privacy Sandbox 的工作管理服務拓撲。

工作管理服務包含兩個子元件:工作管理 Web 服務和工作排程器服務,兩者都部署在 GKE 上。

工作管理

這是一組前端網路服務,可接收 HTTPS 要求,並從工作資料庫建立或取得工作。

工作排程器

這項背景服務會持續掃描工作資料庫。這項服務會管理訓練流程,例如建立新的訓練回合和疊代。

工作資料庫

符合 ANSI SQL 標準的資料庫,用於儲存工作、疊代和指派資訊。在這個實作方式中,Google Cloud Spanner 是做為基礎資料庫服務。

工作指派服務

這張圖表顯示 Android 版 Privacy Sandbox 的工作指派服務拓撲。

Task Assignment Service 是託管於 GKE 的前端網路服務。這個服務會接收 FC 用戶端的要求,並在適用時分配訓練工作。

這裡的「工作資料庫」與「工作管理服務」中的工作資料庫是同一個資料庫執行個體。

匯總服務

這張圖表顯示 Android 版 Privacy Sandbox 的匯總器服務拓撲。
匯總工具和模型更新工具

匯總器和模型更新程式類似。這些是背景服務,可在機密空間中安全地處理資料。離線工作之間的通訊是透過 PubSub 進行。

梯度、匯總梯度、模型和計畫
  • 用於儲存用戶端裝置上傳 (加密) 梯度資料的梯度儲存空間。
  • 匯總梯度儲存空間,用於儲存匯總、裁剪和加入雜訊的梯度。
  • 模型和計畫儲存空間,用於儲存訓練計畫、模型和權重。
收集器

收集器是背景服務,會定期計算訓練回合期間的用戶端裝置提交次數。當有足夠的提交內容時,就會通知匯總者啟動匯總作業。

服務主機

所有無法存取私密資訊的服務都託管在 GKE 上。

所有可能接觸機密資訊的服務都託管在機密空間

所有機密資料都會使用多方擁有的金鑰服務所管理的加密金鑰加密。只有在通過認證後,在啟用機密運算的 Confidential Space 版本中,由 ODP 撰寫的開放原始碼才能存取解密金鑰。

在一個服務單元中,運算資源如下所示:

這張圖表顯示 Android 版 Privacy Sandbox 的服務單元拓撲。

擴充性

先前說明的基礎架構著重於單一服務單元。

一個服務單元會使用一個 Cloud Spanner。如要瞭解重要限制,請參閱「Spanner 配額與限制」。

這個架構的每個元件都可以獨立擴充。方法是在 Confidential Space 或 GKE 叢集中,使用標準資源調度機制來調整容量。也就是說,只要增加下列執行個體,就能提高處理容量:

  • 工作指派網路服務
  • 工作管理網路服務
  • 集結網站執行個體
  • 模型更新者執行個體

營運韌性

FC 伺服器的韌性是由災難復原功能處理,該功能會使用複製的儲存空間。如要進行災難復原,請啟用跨區域資料複製功能。這樣一來,即使發生災害 (例如天氣事件導致資料中心中斷),服務也能從上一輪訓練繼續運作。

Spanner

FC 伺服器的預設實作方式是使用 Google Cloud Spanner 做為資料庫,儲存用於控管訓練流程的工作狀態。選取多區域設定前,請先根據業務需求評估一致性和可用性之間的取捨。

任何 Spanner 執行個體都不會儲存使用者資料或其衍生資料 (無論是原始資料或加密資料)。您可以隨意使用 Spanner 提供的任何災難復原功能

Spanner 會記錄變更記錄。匯總器和模型更新程式會儲存每個訓練回合的資料,且每個回合的結果都會分開儲存,不會互相覆寫。因此,服務可以在發生災害時從最後一輪訓練繼續。

Google Cloud Storage

FC 伺服器的預設實作方式是使用 Google Cloud Storage 儲存模型、訓練計畫和加密裝置貢獻內容等 Blob 資料。

設計中包含三個 GCS 執行個體:

  • 裝置貢獻內容:從裝置上傳的加密裝置貢獻內容。
  • 模型:訓練計畫、模型及其權重。
  • 匯總梯度:匯總工具產生的匯總梯度。

儲存在 GCS 中的資料包括:

  • 開發人員提供的資料,例如訓練計畫或
  • 可能屬於私人資料,因為這些資料是從使用者信號 (受多重協調器支援的加密技術保護) 衍生而來,例如裝置上傳的梯度和匯總梯度,或是
  • 從使用者信號衍生但套用差異隱私權後得出的非私人資料,例如模型權重。

您應評估一致性和可用性之間的取捨,並選取適當的 GCS 資料可用性和耐用性功能。您應指定自己的資料保留政策。

複製和備份

除了 Google Cloud 提供的資料複製機制,您也可以選擇定期備份 Spanner 和 GCS 中的資料。舉例來說,您可以使用跨雲端複製服務和產品。由於這些設定高度取決於業務需求,因此 ODP 不提供範例。目前的設計已考量開發人員可能需要這類複製和備份功能。因此,這項服務與第三方提供的複製和備份服務/產品相容。