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