聯合運算 (FC) 伺服器是裝置端個人化 (ODP) 提供的聯合學習功能之一。本文件旨在介紹聯合運算伺服器 (FC Server)、其元件和所用技術。這份文件會概略說明架構,然後深入探討各個元件。並說明這些元件如何共同運作,提供聯合學習環境,並提供工作負載的擴充和切割策略。
訓練流程
訓練包含 FC 用戶端和 FC 伺服器之間的資料流。FC 用戶端是核心 Android 模組,可在裝置上訓練機器學習模型,並與 FC 伺服器互動。FC 伺服器會在可信任的執行環境 (TEE) 中,安全地處理及匯總 FC 用戶端的結果。
訓練包含下列步驟:
- 裝置上的 FC 用戶端會從 Key Services 下載公開加密金鑰。
- FC 用戶端會向 FC 伺服器進行檢查,並取得訓練工作。
- FC 用戶端會下載訓練計畫,以及最新版本的模型 (版本 N)。
- FC 用戶端會使用本機資料和計畫進行訓練。
- FC 用戶端會使用在步驟 0 取得的公開金鑰,將這部裝置的貢獻內容加密,然後上傳至 FC 伺服器。
- FC 用戶端會通知 FC 伺服器,訓練已完成。
- FC 伺服器會等到足夠的用戶端提交貢獻內容。
- 系統會觸發一輪匯總作業。
- 匯集器會將已加密的貢獻內容載入至受信任的執行環境 (TEE)。
- 匯集器會根據 NIST 的 RFC 9334 遠端認證程序 (RATS) 架構,向協調器進行自我認證。認證成功後,Key Services 就會授予解密金鑰。這些金鑰可能會在 Shamir 秘密共享方案中,分散至多個金鑰供應器。
- 匯總器會根據適當的差異化隱私 (DP) 機制,執行跨裝置匯總、限幅和雜訊處理,並輸出經過雜訊處理的結果。
- Aggregator 會觸發Model Updater。
- 模型更新工具會載入匯總貢獻,並將其套用至模型版本 N,以建立模型版本 N + 1。系統會將新模型推送至模型儲存空間。
FC Server 可部署在任何支援 TEE 和相關安全防護功能的雲端服務上。我們正在評估公有雲供應商和基礎技術,但目前在下一個章節中,我們會提供使用 Confidential Space 的 Google Cloud 實作範例。
高階架構
FC Server 在 Google Cloud 中部署了下列元件:
元件 | 說明 |
工作管理服務 | 用於管理訓練工作的網路服務。合作夥伴應使用 Task Management API 建立訓練工作、列出所有現有的訓練工作、取消工作,以及擷取所有訓練狀態。 |
工作指派服務 | 這是以 HTTPS 為基礎的網路服務,用戶端裝置會定期檢查以取得訓練工作,並回報訓練狀態。 |
集結網站 | 在 Confidential Space 中執行的背景服務。執行 ODP 編寫的工作負載。必須向協調員進行認證,協調員會控管解密金鑰的存取權。只有經過成功認證的匯集器才能解密用戶端裝置提交的貢獻,並執行跨裝置匯集作業。 |
模型更新工具 | 在 Confidential Space 中執行的背景服務,可將匯總的漸層效果套用至模型。 |
元件詳細資料
下列各節將進一步說明整體架構:
工作管理服務
工作管理服務包含兩個子元件:工作管理網路服務和工作排程器服務,兩者皆已部署至 GKE。
工作管理
這是一組前端網路服務,可接收 HTTPS 要求,並從工作資料庫建立或取得工作。
工作排程器
持續掃描工作資料庫的背景服務。它會管理訓練流程,例如建立新的訓練輪次和迭代。
工作資料庫
符合 ANSI SQL 標準的資料庫,用於儲存工作、迭代和指派資訊。在這個實作中,Google Cloud Spanner 會用做基礎資料庫服務。
工作指派服務
工作指派服務是託管於 GKE 的前端網路服務。它會接收 FC 用戶端的要求,並在適用情況下分發訓練工作。
此處的 Task Database 與 Task Management Service 中的 Task Database 是相同的資料庫例項。
匯總服務
集結網站和模型更新工具
匯總器和模型更新器的運作方式相似。這些背景服務可在機密空間中安全地處理資料。離線工作之間的通訊會透過 PubSub 進行。
梯度、匯總梯度、模型和企劃書
- 用於上傳 (加密) 漸層的用戶端裝置漸層儲存空間。
- 用於匯總、裁剪和雜訊梯度的匯總梯度儲存空間。
- 訓練計畫、模型和權重專用的模型和計畫儲存空間。
收集器
收集器是背景服務,會定期計算訓練期間提交的用戶端裝置。當有足夠的提交內容時,它會通知匯入器啟動匯入作業。
服務主機
所有無法存取機密資訊的服務都會託管在 GKE 上。
所有可能涉及機密資訊的服務都會在機密空間中代管。
所有機密資料都會使用由多方擁有的金鑰服務管理的加密金鑰加密。只有在合法機密空間中執行的機密運算 ODP 原始開放原始碼,才能存取解密金鑰。
在一個服務單元中,運算資源如下所示:
擴充性
先前所述的基礎架構著重於一個服務單位。
一個服務單位會使用一個 Cloud Spanner。如要瞭解重要限制,請參閱「Spanner 配額與限制」。
這個架構的每個元件都可以獨立調整。您可以使用標準的資源調度機制,在機密空間或 GKE 叢集內調度容量。如要有效提高處理能力,請新增下列項目的執行個體:
- 工作指派網路服務
- 工作管理網路服務
- 集結網站執行個體
- 模型更新器執行個體
營運韌性
FC Server 的復原力是透過使用複製儲存空間的災難復原功能處理。如果您有興趣瞭解災難復原,請啟用跨區域資料複寫功能。這樣一來,如果發生災難 (例如天氣事件導致資料中心中斷),服務就會從上次訓練開始繼續執行。
Spanner
FC 伺服器的預設實作方式會使用 Google Cloud Spanner 做為資料庫,用於儲存用來控管訓練流程的工作狀態。請根據業務需求評估一致性和可用性之間的權衡,再選擇多區域設定。
任何 Spanner 例項都不會儲存任何原始或加密的使用者資料或衍生資料。歡迎使用 Spanner 提供的災難復原功能。
Spanner 會記錄變更記錄。匯總器和模型更新器會儲存每個訓練輪的資料,且每個訓練輪的結果會個別儲存,不會互相覆寫。因此,在發生災難時,服務可以從上次訓練開始繼續運作。
Google Cloud Storage
FC 伺服器的預設實作方式會使用 Google Cloud Storage 儲存模型、訓練計畫和已加密的裝置貢獻等 Blob 資料。
設計中包含三個 GCS 執行個體:
- 裝置貢獻:從裝置上傳的加密裝置貢獻。
- 模型:訓練計畫、模型和權重。
- 匯總梯度:匯總器產生的匯總梯度。
儲存在 GCS 中的資料有兩種:
- 開發人員提供的資料,例如訓練計畫
- 可能屬於私人資料,因為這些資料是從使用者信號 (由多協調器支援的加密技術保護) 衍生而來,例如裝置上傳的漸層和匯總漸層。
- 從使用者信號衍生,但在應用差異化隱私權後的非私人資料,例如模型權重。
您應評估一致性和可用性之間的權衡,並選取適當的 GCS 資料可用性和耐用性功能。您應指定自己的資料保留政策。
複寫和備份
除了 Google Cloud 提供的資料複製機制外,您也可以選擇定期備份 Spanner 和 GCS 中的資料。舉例來說,您可以使用跨雲端的複製服務和產品。由於這些設定高度依賴業務需求,ODP 不會提供範例。目前的設計會考量開發人員可能需要進行這類複製和備份作業。因此,這項服務與第三方提供的複製和備份服務及產品相容。