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

聯合運算 (FC) 伺服器屬於裝置端個人化功能 (ODP) 提供的聯合學習功能。本文件旨在介紹聯合運算伺服器 (FC Server)、其元件和所用技術。這份文件會概略說明架構,然後深入探討各個元件。並說明這些元件如何共同運作,提供聯合學習環境,以及提供工作負載的擴充和切割策略。

訓練流程

訓練包含 FC 用戶端與 FC 伺服器之間的資料流。FC 用戶端是核心 Android 模組,可用於在裝置端訓練機器學習模型,並與 FC 伺服器互動。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 遠端 ATtestation 程序 (RATS) 架構自行認證協調者,認證成功後,Key Services 會授予解密金鑰。這些金鑰可能會以「Shamir Secret 共用」架構的形式,分配給多個金鑰提供者。
  11. 匯總器會根據適當的差異化隱私 (DP) 機制,執行跨裝置匯總、限幅和雜訊處理,並輸出經過雜訊處理的結果。
  12. 匯總器會觸發 Model Updater
  13. 模型更新工具會載入匯總貢獻,並將其套用至模型版本 N,以建立模型版本 N + 1。系統會將新模型推送至模型儲存空間。

FC Server 可部署在任何支援 TEE 和相關安全防護功能的雲端服務上。我們正在評估公有雲供應商和基礎技術,但以下各節目前介紹了使用 Sensitive Space 的 Google Cloud 實作範例。

高階架構

FC Server 在 Google Cloud 中部署了下列元件:

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

元件詳細資料

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

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

工作管理服務

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

工作管理服務包含兩個子元件:工作管理網路服務和工作排程器服務,兩者皆已部署至 GKE

工作管理

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

工作排程器

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

工作資料庫

與 ANSI SQL 相容的資料庫,用於儲存工作、疊代和指派作業資訊。在本實作中,使用 Google Cloud Spanner 做為基礎資料庫服務。

工作指派服務

圖表:顯示 Android 版 Privacy Sandbox 任務指派服務的拓樸圖。

工作指派服務是託管於 GKE 的前端網路服務。這個外掛程式能接收來自 FC 用戶端的要求,並視情況分配訓練工作。

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

集結服務

這張圖表顯示 Android 版 Privacy Sandbox 集結網站的拓撲。
匯總器與模型更新程式

「Aggregator」和「Model Updater」類似。這些背景服務會在機密空間中安全地處理資料。離線工作之間的通訊會透過 Pub/Sub 進行。

梯度、匯總梯度、模型和規劃
  • 適用於用戶端裝置上傳的 (加密) 漸層的漸層儲存空間。
  • 用於匯總、裁剪和套用雜訊的漸層的匯總梯度儲存空間。
  • 用於訓練模型、模型和權重的模型和方案儲存空間。
收集器

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

服務主機

無法存取機密資訊的所有服務都會託管於 GKE

凡是可能涉及機密資訊的服務,都會納入機密空間

所有機密資料都會透過由多個第三方擁有的「金鑰服務」管理的加密金鑰進行加密。只有經過 ODP 編寫的開放原始碼程式碼,才能在已啟用合法、機密運算的「機密空間」版本中執行解密金鑰,才能存取解密金鑰。

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

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

擴充性

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

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

這個架構的每個元件都可獨立調度資源。方法是在機密空間或 GKE 叢集內,使用標準資源調度機制調整容量。如要有效提高處理能力,請新增下列項目的更多例項:

  • 任務指派網路服務
  • 工作管理網路服務
  • 集結網站執行個體
  • Model Updater 執行個體

營運韌性

FC Server 的復原力是透過使用複製儲存空間的災難復原功能處理。如果您有興趣瞭解災難復原,請啟用跨區域資料備援功能。確保發生災難時 (例如因天氣事件影響資料中心),服務人員會在最後一輪訓練結束後繼續執行。

Spanner

FC Server 的預設實作方式會使用 Google Cloud Spanner 做為資料庫,儲存用來控制訓練流程的工作狀態。請根據業務需求評估一致性和可用性之間的權衡,再選擇多區域設定

任何 Spanner 例項都不會儲存任何原始或加密的使用者資料或衍生資料。您可以自由使用 Spanner 提供的災難復原功能

Spanner 會記錄變更記錄。匯總器和模型更新器會儲存每個訓練輪的資料,且每個訓練輪的結果會個別儲存,不會互相覆寫。因此,發生災難時,服務可以從最近的訓練回合繼續進行。

Google Cloud Storage

FC Server 的預設實作方式會使用 Google Cloud Storage 儲存 blob 資料,例如模型、訓練計畫和加密裝置貢獻內容。

設計中有三個 GCS 執行個體:

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

儲存在 GCS 中的資料有兩種:

  • 開發人員提供的資料,例如訓練計畫,或是
  • 可能的私密資料,因為這類資料衍生自使用者信號 (受到多名協調者支援的加密技術保護),例如裝置上傳的梯度和匯總梯度;或是
  • 從使用者信號衍生,但在應用差異化隱私權後的非私人資料,例如模型權重。

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

複寫和備份

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