技术编辑:鸣飞 发自北京
SegmentFault 思否报道 | 公众号:SegmentFault
PaddleFL是一个基于飞桨( PaddlePaddle)的开源联邦学习框架。研究人员可以很轻松地用PaddleFL复制和比较不同的联邦学习算法。开发人员也可以从padderFL中获益,因为用PaddleFL在大规模分布式集群中部署联邦学习系统很容易。
PaddleFL提供很多联邦学习策略及其在计算机视觉、自然语言处理、推荐算法等领域的应用。此外,PaddleFL还将提供传统机器学习训练策略的应用,例如多任务学习、联邦学习环境下的迁移学习。依靠着PaddlePaddle的大规模分布式训练和Kubernetes对训练任务的弹性调度能力,PaddleFL可以基于全栈开源软件轻松地部署。
联邦学习
如今,数据变得越来越昂贵,而且跨组织共享原始数据非常困难。联合学习旨在解决组织间数据隔离和数据知识安全共享的问题。联邦学习的概念是由谷歌的研究人员提出的。
PaddleFL概述
在PaddleFL中,横向和纵向联邦学习策略将根据给出的分类来实现。PaddleFL也将提供在自然语言处理,计算机视觉和推荐算法等领域的应用示例。
联邦学习策略
- 纵向联邦学习: 带privc的逻辑回归,带第三方privc的神经网络[5]
- 横向联邦学习: 联邦平均,差分隐私
训练策略
- 多任务学习
- 迁移学习
- 主动学习
PaddleFL框架设计
在PaddeFL中,用于定义联邦学习任务和联邦学习训练工作的组件如下:
编译时
- FL-Strategy: 用户可以使用FL-Strategy定义联邦学习策略,例如Fed-Avg[1]。
- User-Defined-Program: PaddlePaddle的程序定义了机器学习模型结构和训练策略,如多任务学习。
- Distributed-Config: 在联邦学习中,系统会部署在分布式环境中。分布式训练配置定义分布式训练节点信息。
- FL-Job-Generator: 给定FL-Strategy, User-Defined Program 和 Distributed Training Config,联邦参数的Server端和Worker端的FL-Job将通过FL Job Generator生成。FL-Jobs 被发送到组织和联邦参数服务器以进行联合训练。
运行时
- FL-Server: 在云或第三方集群中运行的联邦参数服务器。
- FL-Worker: 参与联合学习的每个组织都将有一个或多个与联合参数服务器通信的Worker。
- FL-Scheduler: 训练过程中起到调度Worker的作用,在每个更新周期前,决定哪些Worker可以参与训练。
安装指南和快速入门
请参考快速开始。
Kubernetes简单部署
kubectl apply -f ./paddle_fl/examples/k8s_deployment/master.yaml
请参考K8S部署实例
也可以参考K8S集群申请及kubectl安装配置自己的K8S集群
性能测试
Gru4Rec [9] 在基于会话的推荐中引入了递归神经网络模型。PaddlePaddle的GRU4RC实现代码在https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/gru4rec. 一个基于联邦学习训练Gru4Rec模型的示例请参考Gru4Rec in Federated Learning
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。