设备端个性化联合计算服务器

联邦计算 (FC) 服务器是设备端个性化 (ODP) 提供的联邦学习的一部分。本文档旨在介绍联合计算服务器 (FC Server)、其组件和使用的技术。本文档简要介绍了该架构,然后详细介绍了每个组件。还介绍了这些组件如何协同工作来提供联邦学习环境,并提供了有关扩缩和分片工作负载的策略。

训练流程

训练包括 FC 客户端和 FC 服务器之间的数据流。FC 客户端是一个核心 Android 模块,用于在设备端训练机器学习模型并与 FC 服务器进行交互。FC 服务器会在可信执行环境 (TEE) 中安全地处理和汇总 FC 客户端的结果。

培训包括以下步骤:

展示 Privacy Sandbox for Android 上联合计算客户端与服务器之间的训练流程的流程图。
  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 远程认证程序 (RATS) 架构向协调者进行自我认证。证明成功后,密钥服务会向其授予解密密钥。这些密钥可以在 Shamir 密钥共享方案中拆分到多个密钥提供程序中。
  11. Aggregator 会进行跨设备汇总、根据适当的差分隐私 (DP) 机制进行剪辑和处理噪声,然后输出带噪声的结果。
  12. Aggregator 触发模型更新程序
  13. 模型更新程序加载汇总的贡献并将其应用于模型版本 N,以创建模型版本 N + 1。将新模型推送到模型存储空间。

FC 服务器可以部署在任何支持 TEE 和相关安全功能的云服务上。我们正在评估公有云提供商和底层技术,但以下部分展示的是使用机密空间的 Google Cloud 实现示例。

概要架构

FC 服务器在 Google Cloud 中部署了以下组件:

显示 Privacy Sandbox for Android 联邦计算服务器架构的图表。
组件 说明
任务管理服务 用于管理训练任务的网络服务。合作伙伴应使用 Task Management API 来创建训练任务、列出所有现有训练任务、取消任务以及检索所有训练状态。
任务分配服务 一种基于 HTTPS 的 Web 服务,客户端设备会定期进行签入,以获取训练任务并报告训练状态。
集合商家 在机密空间中运行的后台服务。它运行 ODP 编写的工作负载。它必须向协调者证明其身份,协调者负责管理对解密密钥的访问权限。只有成功通过验证的集合商家才能解密客户端设备提交的贡献内容并执行跨设备汇总。
模型更新程序 在机密空间中运行的后台服务,可将聚合的梯度应用于模型。

组件详情

以下部分对概要架构进行了进一步细化:

显示 Privacy Sandbox for Android 联合计算服务器组件的示意图。

任务管理服务

显示 Privacy Sandbox on Android 任务管理服务拓扑的图表。

任务管理服务包含两个子组件:任务管理 Web 服务和任务调度程序服务,这两个组件都部署在 GKE 上。

任务管理

这是一组前端 Web 服务,它们接受 HTTPS 请求,并从任务数据库创建或获取任务。

任务调度程序

一个持续扫描任务数据库的后台服务。它可以管理训练流程,例如创建新的训练轮次和迭代。

任务数据库

一个符合 ANSI SQL 标准的数据库,用于存储任务、迭代和作业信息。在此实现中,Google Cloud Spanner 用作底层数据库服务。

任务分配服务

显示 Privacy Sandbox for Android 任务分配服务的拓扑图。

任务分配服务是一种托管在 GKE 上的前端网络服务。它会接收 FC 客户端的请求,并在适用时分发训练任务。

这里的任务数据库与任务管理服务中的任务数据库是同一个数据库实例。

集合商家服务

显示 Privacy Sandbox for Android 的聚合器服务拓扑的示意图。
汇总器和模型更新程序

Aggregator 和 Model Updater 类似。它们是可在 Confidential Space 中安全地处理数据的后台服务。离线作业之间的通信通过 PubSub 进行。

梯度、聚合梯度、模型和计划
  • 用于存储客户端设备上传的(加密)梯度的梯度存储空间。
  • 用于存储经过汇总、剪裁和添加噪声的梯度的汇总梯度存储。
  • 用于存储训练计划、模型和权重的模型和方案存储空间。
收集器

收集器是一项后台服务,用于定期统计训练轮期间客户端设备提交的内容。当有足够的提交内容可用时,它会通知汇总方启动汇总。

服务主机

所有无权访问敏感信息的服务都托管在 GKE 上。

所有可能会涉及敏感信息的服务都托管在机密空间中。

所有敏感数据均使用由多方拥有的密钥服务管理的加密密钥进行加密。只有在启用了机密计算的合法机密计算版本中运行的经过成功认证的 ODP 编写的开源代码才能访问解密密钥。

在一个服务单元中,计算资源如下所示:

显示 Privacy Sandbox on Android 服务单元拓扑的图表。

可伸缩性

前面介绍的基础架构侧重于一个服务单元。

一个服务单元使用一个 Cloud Spanner。如需了解重要的限制,请参阅 Spanner 配额和限制

此架构的每个组件都可以独立扩缩。具体方法是使用标准扩缩机制在机密空间或 GKE 集群中扩缩容量。实际上,您可以通过添加更多实例来提高处理能力:

  • 任务分配 Web 服务
  • 任务管理网络服务
  • Aggregator 实例
  • 模型更新程序实例

弹性

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 不提供示例,因为这些配置在很大程度上取决于业务需求。当前的设计考虑了开发者对此类复制和备份的潜在需求。因此,它与第三方提供的复制和备份服务和产品兼容。