README_cn.md 7.3 KB
Newer Older
G
guru4elephant 已提交
1 2
# PaddleFL

D
Dong Daxiang 已提交
3
PaddleFL是一个基于PaddlePaddle的开源联邦学习框架。研究人员可以很轻松地用PaddleFL复制和比较不同的联邦学习算法。开发人员也可以从padderFL中获益,因为用PaddleFL在大规模分布式集群中部署联邦学习系统很容易。PaddleFL提供很多联邦学习策略及其在计算机视觉、自然语言处理、推荐算法等领域的应用。此外,PaddleFL还将提供传统机器学习训练策略的应用,例如多任务学习、联邦学习环境下的迁移学习。依靠着PaddlePaddle的大规模分布式训练和Kubernetes对训练任务的弹性调度能力,PaddleFL可以基于全栈开源软件轻松地部署。
G
guru4elephant 已提交
4 5 6 7 8

## 联邦学习

如今,数据变得越来越昂贵,而且跨组织共享原始数据非常困难。联合学习旨在解决组织间数据隔离和数据知识安全共享的问题。联邦学习的概念是由谷歌的研究人员提出的[1,2,3]。

J
jingqinghe 已提交
9 10
## 编译与安装

G
guru4elephant 已提交
11 12
## PaddleFL概述

J
jingqinghe 已提交
13 14
### 横向联邦方案

D
Dong Daxiang 已提交
15
<img src='images/FL-framework-zh.png' width = "1300" height = "310" align="middle"/>
G
guru4elephant 已提交
16

D
Dong Daxiang 已提交
17
在PaddleFL中,横向和纵向联邦学习策略将根据[4]中给出的分类来实现。PaddleFL也将提供在自然语言处理,计算机视觉和推荐算法等领域的应用示例。
G
guru4elephant 已提交
18 19 20

#### 联邦学习策略

D
Dong Daxiang 已提交
21
- **纵向联邦学习**: 带privc的逻辑回归,带第三方privc的神经网络[5]
G
guru4elephant 已提交
22

J
jingqinghe 已提交
23
- **横向联邦学习**: 联邦平均 [2],差分隐私 [6],安全聚合
G
guru4elephant 已提交
24 25 26 27 28 29 30 31 32

#### 训练策略

- **多任务学习** [7]

- **迁移学习** [8]

- **主动学习**

J
jingqinghe 已提交
33 34 35 36 37 38 39
### Paddle Encrypted

Paddle Encrypted 是一个基于PaddlePaddle的隐私保护深度学习框架。Paddle Encrypted基于多方计算(MPC)实现安全训练及预测,拥有与PaddlePaddle相同的运行机制及编程范式。

Paddle Encrypted 设计与PaddlePaddle相似,没有密码学相关背景的用户亦可简单的对加密的数据进行训练和预测。同时,PaddlePaddle中丰富的模型和算法可以轻易地迁移到Paddle Encrypted中。

作为PaddleFL的一个重要组成部分,Paddle Encrypted可以很好滴支持联邦学习,包括横向、纵向及联邦迁移学习等多个场景。既提供了可靠的安全性,也拥有可观的性能。
G
guru4elephant 已提交
40 41 42

## PaddleFL框架设计

J
jingqinghe 已提交
43 44
### 横向联邦方案

Q
qjing666 已提交
45
<img src='images/FL-training.png' width = "1300" height = "450" align="middle"/>
G
guru4elephant 已提交
46

D
Dong Daxiang 已提交
47
在PaddeFL中,用于定义联邦学习任务和联邦学习训练工作的组件如下:
G
guru4elephant 已提交
48 49 50

#### 编译时

J
jingqinghe 已提交
51
- **FL-Strategy**: 用户可以使用FL-Strategy定义联邦学习策略,例如Fed-Avg[2]。
G
guru4elephant 已提交
52 53 54

- **User-Defined-Program**: PaddlePaddle的程序定义了机器学习模型结构和训练策略,如多任务学习。

D
Dong Daxiang 已提交
55
- **Distributed-Config**: 在联邦学习中,系统会部署在分布式环境中。分布式训练配置定义分布式训练节点信息。
G
guru4elephant 已提交
56

D
Dong Daxiang 已提交
57
- **FL-Job-Generator**: 给定FL-Strategy, User-Defined Program 和 Distributed Training Config,联邦参数的Server端和Worker端的FL-Job将通过FL Job Generator生成。FL-Jobs 被发送到组织和联邦参数服务器以进行联合训练。
G
guru4elephant 已提交
58 59 60 61 62

#### 运行时

- **FL-Server**: 在云或第三方集群中运行的联邦参数服务器。

D
Dong Daxiang 已提交
63
- **FL-Worker**: 参与联合学习的每个组织都将有一个或多个与联合参数服务器通信的Worker。
G
guru4elephant 已提交
64

Q
qjing666 已提交
65 66
- **FL-Scheduler**: 训练过程中起到调度Worker的作用,在每个更新周期前,决定哪些Worker可以参与训练。

J
jingqinghe 已提交
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
### Paddle Encrypted

Paddle Encrypted 中的安全训练和推理任务是基于底层的ABY3多方计算协议实现的。在ABY3中,参与方可分为:输入方、计算方和结果方。

输入方为训练数据及模型的持有方,负责加密数据和模型,并将其发送到计算方。计算方为训练的执行方,基于特定的多方安全计算协议完成训练任务。计算方只能得到加密后的数据及模型,以保证数据隐>私。计算结束后,结果方会拿到计算结果并恢复出明文数据。每个参与方可充当多个角色,如一个数据拥有方也可以作为计算方参与训练。

Paddle Encrypted的整个训练及推理过程主要由三个部分组成:数据准备,训练/推理,结果解析。

#### 数据准备

##### 私有数据对齐

Paddle Encrypted允许数据拥有方(数据方)在不泄露自己数据的情况下,找出多方共有的样本集合。此功能在纵向联邦学习中非常必要,因为其要求多个数据方在训练前进行数据对齐,并且保护用户的数>据隐私。凭借PSI算法,Paddle Encrypted可以在一秒内完成6万条数据的对齐。

##### 数据加密及分发

在Paddle Encrypted中,数据方将数据和模型用秘密共享的方法加密,然后用直接传输或者数据库存储的方式传到计算方。每个计算方只会拿到数据的一部分,因此计算方无法还原真实数据。

#### 训练及推理

想PaddlePaddle一样,训练和推理任务可以分为编译阶段和运行阶段。

##### 编译时

##### 运行时

#### 结果重构
G
guru4elephant 已提交
94 95


Q
qjing666 已提交
96
## Kubernetes简单部署
Q
qjing666 已提交
97

J
jingqinghe 已提交
98
### 横向联邦方案
Q
qjing666 已提交
99 100
```sh
 
J
jingqinghe 已提交
101
kubectl apply -f ./python/paddle_fl/paddle_fl/examples/k8s_deployment/master.yaml
Q
qjing666 已提交
102 103

```
J
jingqinghe 已提交
104 105 106
请参考[K8S部署实例](./python/paddle_fl/paddle_fl/examples/k8s_deployment/README.md)

也可以参考[K8S集群申请及kubectl安装](./python/paddle_fl/paddle_fl/examples/k8s_deployment/deploy_instruction.md) 配置自己的K8S集群
J
jingqinghe 已提交
107

J
jingqinghe 已提交
108 109 110
### Paddle Encrypted

会在后续版本中发布。
G
guru4elephant 已提交
111 112
## 性能测试

J
jingqinghe 已提交
113
### 横向联邦方案
D
Dong Daxiang 已提交
114 115
Gru4Rec [9] 在基于会话的推荐中引入了递归神经网络模型。PaddlePaddle的GRU4RC实现代码在 https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/gru4rec. 一个基于联邦学习训练Gru4Rec模型的示例请参考[Gru4Rec in Federated Learning](https://paddlefl.readthedocs.io/en/latest/examples/gru4rec_examples.html)

J
jingqinghe 已提交
116 117
### Paddle Encrypted

D
Dong Daxiang 已提交
118
## 正在进行的工作
G
guru4elephant 已提交
119

J
jingqinghe 已提交
120 121
- 纵向联合学习支持更多的模型。
- 发布纵向联邦学习K8S部署方案。
G
guru4elephant 已提交
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140

## 参考文献

[1]. Jakub Konečný, H. Brendan McMahan, Daniel Ramage, Peter Richtárik. **Federated Optimization: Distributed Machine Learning for On-Device Intelligence.** 2016

[2]. H. Brendan McMahan, Eider Moore, Daniel Ramage, Blaise Agüera y Arcas. **Federated Learning of Deep Networks using Model Averaging.** 2017

[3]. Jakub Konečný, H. Brendan McMahan, Felix X. Yu, Peter Richtárik, Ananda Theertha Suresh, Dave Bacon. **Federated Learning: Strategies for Improving Communication Efficiency.** 2016

[4]. Qiang Yang, Yang Liu, Tianjian Chen, Yongxin Tong. **Federated Machine Learning: Concept and Applications.** 2019

[5]. Kai He, Liu Yang, Jue Hong, Jinghua Jiang, Jieming Wu, Xu Dong et al. **PrivC  - A framework for efficient Secure Two-Party Computation. In Proceedings of 15th EAI International Conference on Security and Privacy in Communication Networks.** SecureComm 2019

[6]. Martín Abadi, Andy Chu, Ian Goodfellow, H. Brendan McMahan, Ilya Mironov, Kunal Talwar, Li Zhang. **Deep Learning with Differential Privacy.** 2016

[7]. Virginia Smith, Chao-Kai Chiang, Maziar Sanjabi, Ameet Talwalkar. **Federated Multi-Task Learning** 2016

[8]. Yang Liu, Tianjian Chen, Qiang Yang. **Secure Federated Transfer Learning.** 2018

D
Dong Daxiang 已提交
141
[9]. Balázs Hidasi, Alexandros Karatzoglou, Linas Baltrunas, Domonkos Tikk. **Session-based Recommendations with Recurrent Neural Networks.** 2016