聯合運算 (FC) 伺服器屬於裝置端個人化功能 (ODP) 提供的聯合學習功能。本文件旨在介紹聯合運算伺服器 (FC Server)、其元件和所用技術。這份文件會概略說明架構,然後深入探討各個元件。並說明這些元件如何共同運作,提供聯合學習環境,以及提供工作負載的擴充和切割策略。
訓練流程
訓練包含 FC 用戶端與 FC 伺服器之間的資料流。FC 用戶端是核心 Android 模組,可用於在裝置端訓練機器學習模型,並與 FC 伺服器互動。FC 伺服器會在可信任的執行環境 (TEE) 中,安全地處理及匯總 FC 用戶端的結果。
訓練包含下列步驟:
- 裝置上的 FC 用戶端會從金鑰服務下載公開加密金鑰。
- FC 用戶端會向 FC 伺服器進行檢查,並取得訓練工作。
- FC 用戶端會下載訓練計畫,以及最新版本的模型 (版本 N)。
- FC 用戶端會使用本機資料和方案進行訓練。
- FC 用戶端會使用在步驟 0 取得的公開金鑰,將這部裝置的貢獻內容加密,然後上傳至 FC 伺服器。
- FC 用戶端會通知 FC 伺服器訓練已完成。
- FC 伺服器會等到足夠的用戶端提交貢獻內容。
- 系統會觸發一次匯總作業。
- 集結網站會將加密貢獻載入信任的執行環境 (TEE)。
- 匯總器會依據 NIST 的 RFC 9334 遠端 ATtestation 程序 (RATS) 架構自行認證協調者,認證成功後,Key Services 會授予解密金鑰。這些金鑰可能會以「Shamir Secret 共用」架構的形式,分配給多個金鑰提供者。
- 匯總器會根據適當的差異化隱私 (DP) 機制,執行跨裝置匯總、限幅和雜訊處理,並輸出經過雜訊處理的結果。
- 匯總器會觸發 Model Updater。
- 模型更新工具會載入匯總貢獻,並將其套用至模型版本 N,以建立模型版本 N + 1。系統會將新模型推送至模型儲存空間。
FC Server 可部署在任何支援 TEE 和相關安全防護功能的雲端服務上。我們正在評估公有雲供應商和基礎技術,但以下各節目前介紹了使用 Sensitive Space 的 Google Cloud 實作範例。
高階架構
FC Server 在 Google Cloud 中部署了下列元件:
元件 | 說明 |
工作管理服務 | 用於管理訓練工作的網路服務。合作夥伴應使用 Task Management API 建立訓練工作、列出所有現有的訓練工作、取消工作,以及擷取所有訓練狀態。 |
工作指派服務 | 這是以 HTTPS 為基礎的網路服務,用戶端裝置會定期檢查以取得訓練工作,並回報訓練狀態。 |
集結網站 | 在 Confidential Space 中執行的背景服務。會執行 ODP 編寫的工作負載。必須向協調員進行認證,協調員會控管解密金鑰的存取權。只有經過成功認證的匯集工具,才能解密用戶端裝置提交的貢獻內容,並執行跨裝置匯集作業。 |
模型更新工具 | 在機密空間執行的背景服務,會對模型套用匯總梯度。 |
元件詳細資料
下列各節會進一步說明整體架構:
工作管理服務
工作管理服務包含兩個子元件:工作管理網路服務和工作排程器服務,兩者皆已部署至 GKE。
工作管理
這是一組前端網路服務,會接收 HTTPS 要求,並從工作資料庫建立或取得工作。
工作排程器
持續掃描工作資料庫的背景服務。可管理訓練流程,例如建立新的訓練回合和疊代作業。
工作資料庫
與 ANSI SQL 相容的資料庫,用於儲存工作、疊代和指派作業資訊。在本實作中,使用 Google Cloud Spanner 做為基礎資料庫服務。
工作指派服務
工作指派服務是託管於 GKE 的前端網路服務。這個外掛程式能接收來自 FC 用戶端的要求,並視情況分配訓練工作。
這裡的「工作資料庫」與「工作管理服務」中的「工作資料庫」資料庫執行個體相同。
集結服務
匯總器與模型更新程式
「Aggregator」和「Model Updater」類似。這些背景服務會在機密空間中安全地處理資料。離線工作之間的通訊會透過 Pub/Sub 進行。
梯度、匯總梯度、模型和規劃
- 適用於用戶端裝置上傳的 (加密) 漸層的漸層儲存空間。
- 用於匯總、裁剪和套用雜訊的漸層的匯總梯度儲存空間。
- 用於訓練模型、模型和權重的模型和方案儲存空間。
收集器
收集器是一項背景服務,可在訓練回合期間定期計算用戶端裝置的提交次數。當有足夠的提交內容時,它會通知匯入器啟動匯入作業。
服務主機
無法存取機密資訊的所有服務都會託管於 GKE。
凡是可能涉及機密資訊的服務,都會納入機密空間。
所有機密資料都會透過由多個第三方擁有的「金鑰服務」管理的加密金鑰進行加密。只有經過 ODP 編寫的開放原始碼程式碼,才能在已啟用合法、機密運算的「機密空間」版本中執行解密金鑰,才能存取解密金鑰。
在一個服務單元中,運算資源如下所示:
擴充性
先前說明的基礎架構著重於一個服務單位。
一個服務單元使用一個 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 不會提供範例,因為這些設定高度依賴業務需求。目前的設計會考量開發人員可能需要進行這類複製和備份作業。因此,這項服務與第三方提供的複製和備份服務/產品相容。