1. 标题

FedCure: Mitigating Participation Bias in Semi-Asynchronous Federated Learning with Non-IID Data
FedCure:面向非独立同分布数据的半异步联邦学习参与偏差缓解方法
①半异步联邦学习,表明它不是传统的完全同步联邦学习,也不是完全异步,而是介于两者之间的训练方式。
②各客户端的数据分布不同(Non-IID);
③参与偏差,应该是指不同客户端参与训练不公平;

2. 摘要

①半异步联邦学习中,训练快的客户端经常参与,训练慢的客户端容易被忽略,形成参与偏差;非 IID 数据会进一步加剧这个问题。
②提出了一种新的半异步联邦学习框架 FedCure,通过联盟构建和参与感知调度来缓解非 IID 数据条件下的参与偏差。具体而言,FedCure 包含三项关键机制:
<1>联盟构建:先根据客户端的数据分布,把合适的客户端分到同一个组,尽量让每个组的数据比较均衡,避免某个组只包含单一类型的数据。
<2>参与调度:决定每一轮让哪个组参加训练。系统会记录哪些组很久没被选中,并适当提高它们的优先级;同时估计各组需要多长时间,避免为了公平而让训练速度过慢。
<3>资源分配:根据客户端的计算能力、训练耗时和能耗,调整它们的 CPU 使用频率。计算能力强的设备可以多分配资源,较弱的设备则避免负担过重。

3. 场景流程

以手写数字为例子

① 系统建立云端—边缘—客户端三层结构。
系统包含一个云服务器、多个边缘服务器以及多个客户端。每个客户端可以理解为一台参与联邦学习的设备,边缘服务器负责管理一组客户端,云服务器负责汇总不同边缘服务器的模型。

② 每个客户端保存自己的手写数字数据。
每个客户端拥有一部分 MNIST 手写数字图片和标签,使用一个包含卷积层、池化层和全连接层的 CNN 模型进行分类。原始图片始终保存在客户端本地,不上传给边缘服务器或云服务器。

③ 不同客户端的数据分布可能不同。
例如,客户端 A 可能主要拥有数字“0”和“1”,客户端 B 主要拥有数字“5”和“6”。这种不同客户端拥有不同类别数据的情况,就是非 IID 数据。

④ FedCure 先构建客户端联盟。
系统根据客户端的数据分布情况,将客户端分配给不同的边缘服务器,形成多个客户端联盟。目标是让每个联盟中的数据尽量合理、均衡,减少不同联盟之间的数据差异。

⑤云服务器选择本轮参与训练的联盟

⑥云服务器向被选中的联盟下发全局模型
例如本轮选择了联盟 B,云服务器就把当前全局 CNN 模型发送给联盟 B 对应的边缘服务器。
然后,边缘服务器再把模型发送给联盟 B 中的各个客户端。
发送的是模型参数,不是 MNIST 手写数字图片。

⑦系统为联盟内客户端分配计算资源

⑧客户端使用本地 MNIST 数据进行训练
客户端收到模型后,使用自己本地保存的手写数字图片进行训练。

⑨客户端向边缘服务器上传本地模型
本地训练完成后,客户端把更新后的模型参数发送给所属边缘服务器。
如果某个客户端暂时不可用、训练太慢或上传失败,边缘服务器可以先处理已经成功收到的模型,不必无限期等待所有客户端。

⑩边缘服务器聚合联盟内的客户端模型
边缘服务器收到客户端模型后,先在联盟内部进行一次聚合。
通常会根据每个客户端的本地数据量分配权重。拥有更多训练样本的客户端,对联盟模型的影响通常更大。
聚合完成后,边缘服务器得到一个联盟模型。

⑪云服务器进行全局模型聚合
云服务器收到联盟模型后,将其与当前全局模型进行聚合,生成新的全局模型。
云服务器不会一直等待其他还没完成的联盟。
如果某个联盟的模型上传得比较晚,该模型可能已经比较“旧”,云服务器会降低它的聚合权重,避免旧模型对全局模型造成过大影响。

⑫更新联盟的参与状态
一轮训练结束后,系统会更新各联盟的状态:

  • 本轮参加训练的联盟,等待时间减少;
  • 没有参加的联盟,等待时间增加;
  • 记录每个联盟本轮的实际训练耗时;
  • 更新下一轮的耗时预测。

⑬ 进入下一轮训练,每一轮选择的联盟可能不同,因此不同客户端群体可以逐渐获得参与机会。

⑭最终得到共享的手写数字识别模型
经过多轮训练后,云服务器得到一个共享 CNN 模型。

4. 总结

这篇文章主要是联邦学习方向(三层云边端场景),具体是异步联邦学习,它先将客户端分成多个联盟(联盟中选择一个边缘服务器用于聚合此联盟中的客户端),然后云服务器每次选择一个联盟和已经有的云端模型进行聚合!创新点说是摘要中说的那3点!