add fedrated learning (#61)

This commit is contained in:
chengtianwu
2022-03-11 16:25:37 +08:00
committed by GitHub
parent 937928fcf2
commit 0e29f2bdd5
11 changed files with 153 additions and 1 deletions

View File

@@ -0,0 +1,30 @@
## 实际部署时的挑战
### 部署流程
随着端上算力的提升和算法的快速发展,跨设备联邦学习在智能手机或智能设备中的应用越来越广泛。其主要流程如图:numfef:`ch10-federated-learning-flow`所示,可分为如下几步:
1. FL-Client选择FL-Client主动向FL-Server发起参与联邦学习的请求。FL-Server根据配置筛选出满足条件的FL-Client。选择成功后FL-Server下发模型以及相关联邦学习配置。
2. FL-Client训练在终端设备上进行本地模型训练。
3. 联邦聚合FL-Client上传模型权重到FL-Server并由FL-Server选择聚合算法进行计算并对某些数据进行持久化存储。
4. FL-Client模型更新终端向FL-Server查询联邦聚合后的模型等数据。
5. 重复1-4步完成联邦学习任务。
![跨设备联邦学习流程图](../img/ch10/ch10-federated-learning-flow.png)
:label:`ch10-federated-learning-flow`
### 部署挑战
然而,由于跨设备联邦学习的特殊性,其挑战主要包括:
1. 跨设备联邦学习的FL-Client的网络连接常常是不稳定的在任何时候都只有部分FL-Client可用。
2. 跨设备联邦学习往往是大规模并行的场景通信时间会成为瓶颈。当千万级FL-Client同时进行联邦学习请求时需要大量网络带宽的支持并且单台FL-Server必然承接不住庞大的数据和参数。
### 解决方案
为了解决跨设备联邦学习带来的挑战MindSpore Federated Learning给出两个解决方案
1. 限时通信在FL-Server和FL-Client建立连接后启动全局的计时器和计数器。当预先设定的时间窗口内的FL-Server接收到FL-Client训练后的模型参数满足初始接入的所有FL-Client的一定比例后就可以进行聚合。若时间窗内没有达到比例阈值则进入下一轮迭代。保证即使有海量FL-Client接入的情况下也不会由于个别FL-Client训练时间过长或掉线导致的整个联邦学习过程卡死。
2. 松耦合组网使用FL-Server集群。每个FL-Server接收和下发权重给部分FL-Client减少单个FL-Server的带宽压力。此外支持FL-Client以松散的方式接入。任意FL-Client的中途退出都不会影响全局任务并且FL-Client在任意时刻访问任意FL-Server都能获得训练所需的全量数据。