跳转到内容

Bonawitz 2019 — Google 联邦学习的工业级系统设计

待复核

你家小区里 100 户人家各自记录了自己的用电习惯。电网公司想训练一个 AI 预测用电高峰,但住户不愿意把自己的用电数据交出去。联邦学习的方案是:电网把模型发到每家的智能电表上,各家在本地用自己的数据训练一小会儿,只把”模型改了多少”(梯度更新)发回公司,公司汇总所有人的更新得到一个更好的模型。原始数据始终不离开用户设备。

Bonawitz 等人 2019 年这篇论文不是提出联邦学习算法本身(那是 mcmahan-fedavg-2017),而是回答一个更实际的问题:怎么在数亿台真实手机上把联邦学习跑起来? 论文描述了 Google 生产环境中的完整系统架构——从设备端何时参与训练、怎么通信、服务端怎么协调、到如何处理设备随时掉线等工程挑战。

不理解这篇论文,下面这些事都没法解释:

  • 为什么 Google Gboard(手机键盘)能根据你的打字习惯改善预测、却声称”没有收集你打的字”——背后跑的就是这套联邦学习系统
  • 为什么联邦学习不只是”把 FedAvg 代码跑一下”——数亿设备的异构性、网络不稳定、掉线容错、隐私合规加在一起,是一个完整的分布式系统设计问题
  • 为什么 kairouz-advances-fl-2019 综述中把”系统挑战”列为联邦学习三大研究方向之一——Bonawitz 这篇就是系统方向的奠基工作
  • 为什么后来的 FLARE、FedML 等联邦学习框架都要处理”设备选择""安全聚合""容错”——这些概念都源自本文的系统设计

读这篇论文需要先理解三个概念:

  • FedAvg 算法mcmahan-fedavg-2017 提出的联邦平均算法。每轮选一批客户端,各自本地做几轮 SGD,把更新后的模型参数传回服务端取平均。Bonawitz 这篇要解决的就是”怎么在真实环境中可靠地执行 FedAvg”。
  • 安全聚合(Secure Aggregation):一种密码学协议,让服务端只能看到所有客户端梯度的总和,看不到任何单个客户端的梯度。类比:全班同学把考试分数写在纸条上放进碎纸箱,老师只能知道总分,看不到谁考了多少。
  • 差分隐私(DP)abadi-dpsgd-2016 的核心概念。在聚合后的梯度总和上加噪声,即使攻击者拿到了模型更新也无法反推个体贡献。安全聚合保护”传输过程”,差分隐私保护”最终结果”。

论文的系统设计围绕 一个核心矛盾 展开:联邦学习需要大量设备同时参与才能训练出好模型,但真实手机设备是不可靠的——它们会掉线、断网、被用户关机、电量不足时拒绝参与。整个系统的设计目标就是:在设备高度不可靠的条件下,仍然高效、安全、正确地完成模型训练。

系统架构分为三层:

  1. 设备层(Device):手机上运行的联邦学习客户端。只在设备满足”空闲条件”时参与——必须连着 Wi-Fi、正在充电、屏幕关闭。类比:只在你睡觉充电时,手机才偷偷帮 Google 训练模型,白天完全不影响使用体验。

  2. 选择器层(Selector/Coordinator):服务端的调度器。每轮训练从签到的设备中挑选一批参与者。不是随机挑——要考虑设备多样性(不同手机型号、不同地区)和公平性(不能总挑同一批设备)。类比:班主任从举了手的同学中选 30 个回答问题,要保证男女生、前后排都有代表。

  3. 聚合层(Aggregator):接收各设备上传的模型更新并聚合。这里集成了安全聚合和差分隐私,确保服务端在汇总梯度的同时不泄漏个体信息。

案例 1:一轮联邦学习的完整生命周期

Section titled “案例 1:一轮联邦学习的完整生命周期”

一轮训练在 Google 生产系统中经历这些步骤:

[设备签到] → [服务端选择参与者] → [下发模型]
→ [本地训练] → [上传更新(加密)]
→ [安全聚合] → [加差分隐私噪声] → [更新全局模型]

具体时间线:

  1. 晚上 11 点,你的手机检测到正在充电且连着 Wi-Fi,向 Google 服务器”签到”
  2. 服务器从签到的几百万台设备中选出几百台参与本轮训练
  3. 被选中的设备下载当前全局模型(约几 MB)
  4. 每台设备用自己的本地数据做 5 轮 SGD(FedAvg 的 E=5)
  5. 设备用安全聚合协议加密自己的梯度更新并上传
  6. 服务端收齐足够多的加密更新后解密出总和,加上差分隐私噪声
  7. 用聚合结果更新全局模型,准备下一轮

论文的一个关键设计是 过度配额(over-selection):如果一轮需要 100 台设备的更新,服务端实际邀请 130 台。前 100 台完成的就够了,后面的可以丢弃。这样即使有 23% 的设备中途掉线(电量不足、用户拿起手机等),训练轮次依然能完成。

类比:老师布置小组作业,每组 5 人但老师多分了 2 个替补。只要 5 人按时交了就行,替补没交也不影响评分。

安全聚合协议需要设备之间建立加密密钥对。论文实验显示:

  • 100 个参与者时,安全聚合增加约 2 倍通信开销
  • 1000 个参与者时,增加约 3-4 倍
  • 超过 10000 个参与者就不实际了

所以实际部署中每轮只选几百到几千台设备。这是”安全性 vs 效率”的工程权衡。

  1. 以为联邦学习 = 分布式训练:数据中心的分布式训练(如 AllReduce)假设节点稳定、带宽充足、可同步。联邦学习的节点(手机)随时掉线、网速慢、计算能力差异 100 倍以上。把数据中心的分布式训练框架直接搬到联邦场景会彻底失败。

  2. 忽略设备选择偏差:如果只让”最快响应的设备”参与训练,模型会偏向高端手机用户的行为模式。论文强调要做设备多样性采样,否则模型对低端手机用户(往往是价格敏感的大众用户)表现更差。

  3. 低估了安全聚合的通信代价:安全聚合不是”免费午餐”。密钥协商需要 O(n^2) 的通信,实际系统中必须分层——先在小组内安全聚合,再在组间做第二层聚合。

  4. 混淆安全聚合与差分隐私的保护范围:安全聚合保护的是”传输中的个体梯度不被服务端看到”。差分隐私保护的是”即使看到聚合结果也推不出个体”。两者互补,不能只用一个就声称”完全隐私”。

  5. 以为更多设备参与就一定更好:更多设备意味着更多通信成本、更长的等待时间(等最慢的设备)、更高的安全聚合开销。论文通过实验确定每轮几百到几千台是最佳平衡点。

适用

  • 移动端输入法改进——Google Gboard 是本论文的旗舰应用场景
  • 手机上的个性化推荐——推荐模型在本地训练,行为数据不离开设备
  • 医疗场景跨院联合建模——各医院不愿共享病历数据,但愿意共享模型梯度
  • 任何”数据孤岛”场景——数据分散在各方、法规或信任问题阻止集中收集
  • 设备数量大(>10^4)、每台设备数据量小的场景——联邦学习的主场

不适用

  • 数据已经集中在一处——直接训练比联邦学习简单 100 倍且效果更好
  • 需要极高训练速度——联邦学习每轮需要等设备签到、传输、聚合,比集中训练慢几个数量级
  • 设备数量少(<100)——安全聚合的隐私保证在参与者太少时很弱
  • 模型太大无法部署到设备——GPT 级别的模型没法放到手机上做本地训练
  • 非 IID 数据分布极端且不可容忍——每个用户的数据分布完全不同时 FedAvg 可能不收敛
  • 2016 年:McMahan 等人在 Google 内部提出 FedAvg 算法并发论文 mcmahan-fedavg-2017。此时只是算法层面的概念验证,跑在几百台模拟设备上。
  • 2017 年:Google 开始在 Gboard 上试验真实的联邦学习——用它来改善下一个词预测。团队发现”算法能跑”和”系统能跑”是两回事:设备掉线、网络超时、版本不一致等问题层出不穷。
  • 2018 年:Bonawitz 和团队把安全聚合协议集成到联邦学习系统中,并在 CCS 2017 发表了安全聚合的协议论文。
  • 2019 年:本论文发表于 MLSys 2019(前身 SysML),是第一篇公开描述”数亿设备上的联邦学习生产系统”的论文。同年 kairouz-advances-fl-2019 综述梳理了联邦学习的开放问题,大量引用本文的系统设计经验。
  • 2020s:Google 的 FL 系统从 Gboard 扩展到 Android 的更多功能(Now Playing、Smart Text Selection 等)。Apple 在 iOS 上也部署了类似系统。开源框架 TFF(TensorFlow Federated)、FLARE(NVIDIA)、Flower 等受本文影响设计了自己的架构。
  1. 算法正确 != 系统可用——FedAvg 算法 2016 年就有了,但让它在数亿台不可靠设备上真正跑起来又花了 3 年。系统设计(容错、调度、安全、效率)是从论文到产品之间最大的鸿沟。

  2. 为失败设计(Design for Failure)——论文的核心哲学是”假设一切都会出错”:设备会掉线、网络会断、用户会随时拿起手机。过度配额、异步聚合、超时丢弃——所有设计都是围绕”优雅降级”展开的。

  3. 隐私保护是分层的——安全聚合(密码学层)+ 差分隐私(统计层)+ 设备数据不出域(数据层)三重保护叠加。不存在一个银弹技术能解决所有隐私问题。

  4. 系统约束反过来塑造算法——为什么 FedAvg 每轮做多步本地 SGD 而不是只做一步?因为通信是瓶颈,多做几步本地训练能减少通信轮次。系统约束(带宽、延迟、设备能力)决定了算法的形状。

  5. 规模带来质变而非量变——从 100 台设备到 10 亿台,不是”把 100 台的方案乘以 1000 万”。设备选择、安全聚合、容错机制、隐私会计全部需要重新设计。

  • mcmahan-fedavg-2017 —— 提供了本文系统所执行的核心训练算法 FedAvg
  • kairouz-advances-fl-2019 —— 联邦学习的开放问题综述,本文是其”系统挑战”章节的核心参考
  • abadi-dpsgd-2016 —— DP-SGD 提供了本系统差分隐私层的理论和实现基础
  • erlingsson-rappor-2014 —— Google 更早的本地差分隐私系统,和本文的联邦学习系统分别解决”数据收集”和”模型训练”两个阶段的隐私
  • tensorflow-osdi-2016 —— TensorFlow 是本系统的计算后端,设备端用 TFLite 做本地训练
  • freedman-psi-2004 —— Freedman PSI 2004 — 把集合交集算出来但不交出名单