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都能获得训练所需的全量数据。

View File

@@ -0,0 +1,8 @@
## 联邦平均算法
和传统分布式学习相比联邦学习存在训练结点不稳定和通信代价大的难点。这些难点导致了联邦学习无法和传统分布式学习一样在每次单步训练之后同步不同训练结点上的权重。为了提高计算通信比并降低频繁通信带来的高能耗谷歌公司提出了联邦平均算法Federated AveragingFedAvg。图:numfef:`ch10-federated-learning-fedavg`展示了FedAvg的整体流程。在每轮联邦训练过程中端侧进行多次单步训练。然后云侧聚合多个端侧权重并取加权平均。
![联邦平均算法](../img/ch10/ch10-federated-learning-fedavg.png)
:label:`ch10-federated-learning-fedavg`

View File

@@ -1 +1,19 @@
# 联邦学习系统
# 联邦学习系统
在本章中,我们介绍深度学习的一个重要分支——强化学习及其在系统方面的知识。本章的学习目标包括:
- 掌握联邦学习基本知识。
- 掌握联邦系统架构组成部分。
- 掌握联邦平均和隐私加密算法。
- 了解联邦学习实际部署时的挑战。
```toc
:maxdepth: 2
overview
system_architecture
fedavg
privacy_encryption_algorithm
challenge
summary
```

View File

@@ -0,0 +1,21 @@
## 概述
为了解决“隐私保护”与“数据孤岛”这两大难题联邦学习Federated LearningFL应运而生。联邦学习的概念最早在2016年被提了出来能有效帮助多个机构在满足用户隐私保护、数据安全和政府法规的要求下进行数据使用和机器学习建模。在联邦学习场景中每个用户被定义为客户端这一角色使用各自的本地数据进行训练、模型更新、权重上传并在中央服务器的协调下多个客户端协作建立机器学习模型。
根据数据分布的不同联邦学习可以分为跨设备cross-device与跨组织cross-silo联邦学习。一般而言跨组织联邦学习的用户一般是企业、机构单位级别的而跨设备联邦学习针对的则是便携式电子设备、移动端设备等。表:numref:`differences-and-connections`展示了两者的区别和联系:
| | 跨设备联邦学习 | 跨组织联邦学习 |
| :------------: | :----------------------------------------------------------: | :----------------: |
| 组网架构 | 由中央服务器和不同客户端之间的交互,且客户端之间没有直接联系。 | |
| 数据分布 | 不同客户端上的数据非独立同分布。 | |
| 主要瓶颈 | 客户端的计算性能以及中央服务器的内存 | 通信开销 |
| 客户端来源 | 不同的终端设备 | 不同的组织 |
| 客户端性能 | 较差 | 较好 |
| 客户端规模 | 较大 | 较小 |
| 客户端参与情况 | 不会参与所有联邦迭代 | 参与大部分联邦迭代 |
| 客户端状态 | 无状态 | 有状态 |
| 客户端可靠性 | 高度不可靠 | 相对可靠 |
:label:`differences-and-connections`
下面就联邦学习中的要点:系统架构、联邦平均算法、隐私加密算法以及实际部署时的挑战进行详细描述。

View File

@@ -0,0 +1,52 @@
## 隐私加密算法
联邦学习过程中用户数据仅用于本地设备训练不需要上传至中央FL-Server。这样可以避免用户个人数据的直接泄露。然而联邦学习框架中模型的权重以明文形式上云仍然存在间接泄露用户隐私的风险。敌手获取到用户上传的明文权重后可以通过重构、模型逆向等攻击恢复用户的个人训练数据导致用户隐私泄露。
MindSpore Federated Learning框架提供了基于本地差分隐私LDP和基于多方安全计算MPC的安全聚合算法在本地模型的权重上云前对其进行加噪或加扰。在保证模型可用性的前提下解决联邦学习中的隐私泄露问题。
### 基于LDP的安全聚合
差分隐私differential privacy是一种保护用户数据隐私的机制。差分隐私定义为
$$
Pr[\mathcal{K}(D)\in S] \le e^{\epsilon} Pr[\mathcal{K}(D) \in S]+\delta
$$
对于两个差别只有一条记录的数据集$D, D$,通过随机算法$\mathcal{K}$,输出结果为集合$S$子集的概率满足上面公式。$\epsilon$为差分隐私预算,$\delta$扰动,$\epsilon$和$\delta$越小,说明$\mathcal{K}$在$D$和$D$上输出的数据分布越接近。
在联邦学习中假设FL-Client本地训练之后的模型权重矩阵是$W$,由于模型在训练过程中会“记住”训练集的特征,所以敌手可以借助$W$还原出用户的训练数据集。
MindSpore Federated Learning提供基于本地差分隐私的安全聚合算法防止本地模型的权重上云时泄露隐私数据。
FL-Client会生成一个与本地模型权重$W$相同维度的差分噪声矩阵$G$,然后将二者相加,得到一个满足差分隐私定义的权重$W_p$:
$$
W_p=W+G
$$
FL-Client将加噪后的模型权重$W_p$上传至云侧FL-Server进行联邦聚合。噪声矩阵$G$相当于给原模型加上了一层掩码,在降低模型泄露敏感数据风险的同时,也会影响模型训练的收敛性。如何在模型隐私性和可用性之间取得更好的平衡,仍然是一个值得研究的问题。实验表明,当参与方的数量$n$足够大时一般指1000以上大部分噪声能够相互抵消本地差分机制对聚合模型的精度和收敛性没有明显影响。
### 基于MPC的安全聚合
尽管差分隐私技术可以适当保护用户数据隐私但是当参与FL-Client数量比较少或者高斯噪声幅值较大时模型精度会受较大影响。为了同时满足模型保护和模型收敛这两个要求MindSpore Federated Learning提供了基于MPC的安全聚合方案。
在这种训练模式下假设参与的FL-Client集合为$U$对于任意FL-Client $u$和$v$
它们会两两协商出一对随机扰动$p_{uv}$、$p_{vu}$,满足
$$
\label{puv}
p_{uv}=
\begin{cases}
-p_{vu}, &u{\neq}v\\
0, &u=v
\end{cases}
$$
于是每个FL-Client $u$ 在上传模型权重至FL-Server前会在原模型权重$x_u$加上它与其它用户协商的扰动:
$$
x_{encrypt}=x_u+\sum\limits_{v{\in}U}p_{uv}
$$
从而FL-Server聚合结果$\overline{x}$为:
上面的过程只是介绍了聚合算法的主要思想基于MPC的聚合方案是精度无损的代价是通讯轮次的增加。

View File

@@ -0,0 +1,3 @@
## 小结
在这一章,我们简单介绍了联邦学习的背景、系统架构、联邦平均算法、隐私加密算法以及实际部署时的挑战。联邦学习是一个新起步的人工智能算法,可以在“数据保护”与“数据孤岛”这两大约束条件下,建立有效的机器学习模型。此外,由于联邦学习场景的特殊性(端侧数据不上传、安全隐私要求高和数据非独立同分布等特点),使得系统和算法的开发难度更高:如何平衡计算和通讯的开销?如何保证模型不会泄露隐私?算法如何在非独立同分布场景下收敛?等等,都需要开发人员对实际的联邦学习场景有更深刻的认识。

View File

@@ -0,0 +1,20 @@
## 系统架构
联邦学习系统由调度器模块、服务器模块和客户端模块三个部分组成,其系统架构如图:numref:`ch10-federated-learning-architecture`所示。其中:
- 联邦学习调度器:
联邦学习调度器FL-Scheduler协助集群组网并负责管理面任务的下发。
- 联邦学习服务器:
联邦学习服务器FL-Server提供客户端选择、限时通信、分布式联邦聚合功能。FL-Server需要具备支持端云千万台设备的能力以及边缘服务器的接入和安全处理的逻辑。
- 联邦学习客户端:
联邦学习客户端FL-Client负责本地数据训练并在和FL-Server进行通信时对上传权重进行安全加密。
![联邦学习系统架构图](../img/ch10/ch10-federated-learning-architecture.png)
:label:`ch10-federated-learning-architecture`

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB