百度开源联邦学习框架 PaddleFL:简化大规模分布式集群部署
百度开源联邦学习框架 PaddleFL:简化大规模分布式集群部署
作者 | 钰莹近两年,联邦学习技术发展迅速。作为分布式的机器学习范式,联邦学习能够有效解决数据孤岛问题,让参与方在不共享数据的基础上联合建模,从技术上打破数据孤岛。但是,目前这一技术在很多企业落地遇到了困难,InfoQ 将通过选题的方式逐一揭开各大公司在联邦学习方面的探索。
为了让机器学习模型取得更好的效果,开发者往往希望获得更多数据训练模型,而有助于解决该问题的联邦学习受到了越来越多的关注。简单来说,联邦学习可以在不共享数据的前提下,利用双方数据实现模型优化,在数据隐私越来越重要的今天,联邦学习很好的平衡了隐私和数据利用之间的关系。正因如此,很多科技公司在联邦学习方向有所探索。
近日,百度宣布开源基于飞桨( PaddlePaddle) 开源框架的联邦学习框架 PaddleFL 。据了解,研究人员可以很轻松地用 PaddleFL 复现和比较不同的联邦学习算法;得益于飞桨在大规模并行训练方面的基础能力的积累,PaddleFL 可以帮助开发者快速实现在大规模分布式集群中部署联邦学习系统。对此,InfoQ 采访了百度深度学习研发工程师,为大家进一步剖析 PaddleFL 的技术原理和提供联邦学习部署的建议。
PaddleFL 为何而生?
众所周知,百度在 2016 年就开源了深度学习平台 PaddlePaddle,而为了帮助飞桨开发者快速调研一些联邦学习算法,作为底层编程框架支撑上层应用,PaddleFL 应运而生。
百度工程师表示,PaddleFL 为联邦学习研究人员提供了基础编程框架,并封装了一些公开的联邦学习数据集。针对横向联邦学习场景,PaddleFL 实现了多种不同的优化算法,举例来说 DP-SGD、Fed-Avg、Secure-Aggregate 都是在飞桨开源框架灵活的编程组件之上搭建的。此外,借助于飞桨丰富的模型库和预训练模型,研究人员也可以快速上手针对一些具体的垂直场景应用进行研究。
图 1
PaddleFL 整体的建设方向可以参考图 1,当前 PaddleFL 已经开源了完整的横向联邦学习能力,底层的编程模型采用飞桨训练框架,结合飞桨的参数服务器功能,PaddleFL 可以实现在 Kubernetes 集群中进行横向联邦学习系统的部署。值得一提的是,尽管横向联邦学习与传统的数据并行分布式训练原理一致,但在如何部署训练任务的方式上有一些区别:
1)横向联邦学习中,参与训练的各方数据格式可能不同,这需要框架能够支持不同类型数据读取器,并在同一套训练系统里运行。
2)横向联邦学习中的各方以及模型参数维护方可能处于不同的集群当中,很难通过一次统一的调度实现多方训练任务同时启动。
为此,PaddleFL 设计了编译期阶段,在编译期通过多方协商生成一个具有共识的网络配置,然后由 PaddleFL 自动拆分成多方集群需要运行的程序,大大简化部署过程,同时也开发了二次开发接口允许各方定义私有化的数据读取器。编译期和执行期的关系可以参考下图:
图 2
当前,PaddleFL 已经开源了横向联邦的场景,适合有相同类型任务的多个组织进行联合训练。针对云端提供计算资源,但用户不愿意上传原始数据的应用场景,PaddleFL 也开源了一套两方安全学习的方案。以图像分类为例,可以参考图 3,用户通过本地计算资源,利用图像的预训练模型的前几层进行图片原始数据的编码,云端接收客户端的编码以及对应的标签进行训练,这种模式在保护用户原始数据的情况下可以提供用户云端进行安全训练的能力。
图 3
PaddleFL 未来之路
据了解,在接下来的迭代中,飞桨将会开源纵向联邦学习编程框架,并在横向与纵向之间进行编程接口方面的统一。借助于飞桨训练框架的快速迭代,PaddleFL 在分布式训练的速度,跨地域的稀疏通信以及通信的稳定性方面都会得到稳步的提升。在应用层,PaddleFL 还将提供传统机器学习训练策略的应用,例如多任务学习、联邦学习环境下的迁移学习。基于飞桨丰富的模型库,PaddleFL 还将开放更多适合联邦学习的模型示例和部署教程,方便用户学习。
由于是基于飞桨开源框架的联邦学习框架,所以目前安装 PaddleFL 的时候会自动安装飞桨开源框架依赖,两者有绑定关系。建议开发者能够把 PaddleFL 当成底层编程框架,在上层封装出一些支撑垂直领域的平台,探索联邦学习的更多产品形态。
企业该如何部署联邦学习?
虽然我们已经可以看到联邦学习在一些实际业务场景中有了应用,但只能算是刚刚开始,这项技术目前还远远没有进入大规模落地的阶段,这样意味着存在大量的机会和挑战。
百度工程师表示,搭建一个方便易用的平台还是十分重要的,参与联邦训练的开发者不一定非要知道自己在采用联邦学习技术,平台能够让用户知道自己的数据很安全且不会泄露,以及业务的实际效果有提升,这才是最关键的。
目前来看,百度工程师补充道,面向 C 端用户的端上产品,落地联邦学习的可能性比较大,例如在手机的 app 端利用联邦学习为用户提供快速且安全的个性化能力就是一个典型的横向联邦学习场景。企业级的联邦学习,跨群组、跨分公司的联邦学习更容易成功,前提是有一个置信的、易用的联邦学习平台以及相关的政策法规做保障。
百度开源联邦学习框架 PaddleFL:简化大规模分布式集群部署相关推荐
- 巧用 Nginx 实现大规模分布式集群的高可用性
本文是我对2019年GOPS深圳站演讲的文字整理.这里我希望带给各位读者的是,如何站在整个互联网背景下系统化地理解Nginx,因为这样才能解决好大流量分布式网络所面临的高可用问题. 标题里有" ...
- ClickHouse数据库培训实战 (PB级大数据分析平台、大规模分布式集群架构)
一.ClickHouse数据库培训实战课程 (PB级大数据分析平台.大规模分布式集群架构)视频教程 为满足想学习和掌握ClickHouse大数据分析专用的数据库,风哥特别设计的一套比较系统的Click ...
- 集群-大规模Linux集群部署-MPI集群搭建与MPI编程
一.集群的概念及其相关技术 集群计算机是指利用高速通信网络将一组高档工作站或PC按某种结构连接起来,在并行程序设计甚至可视化人机交互集成开发环境支持下,统一调度,协调处理,实现高效并行处理的系统,利用 ...
- 微众银行AI团队开源联邦学习框架,并发布《联邦学习白皮书1.0》
(图片由AI科技大本营付费下载自视觉中国) 编辑 | Jane 来源 | <联邦学习白皮书1.0> 出品 | AI科技大本营(ID:rgznai100) [导语]2019年,联邦学习成为业 ...
- |NO.Z.00005|——————————|BigDataEnd|——|HadoopHadoop核心框架.V05|——|Hadoop.v04|分布式集群搭建|...
一.什么是Hadoop ### --- Hadoop 是一个适合大数据的分布式存储和计算平台.~~~ 如前所述,狭义上说Hadoop就是一个框架平台, ~~~ 广义上讲Hadoop代表大数据的一个技术 ...
- 学习搭建Hadoop+HBase+ZooKeeper分布式集群环境
一.环境配置 由于集群至少需要三台服务器,我就拿上次做的MongoDB Master, Slave, Arbiter环境来做Hadoop集群.服务器还是ibmcloud 免费提供的.其中Arbiter ...
- 数据可用不可见,百度新版本联邦学习PaddleFL来了
伴随着智能化时代的迈进,AI无处不在,万事皆可智能化,很多企业走到了时代的风口,也不断有着更多的企业想跻身队伍,跨上AI大时代的战车.大家都深知人工智能的三大基石是:算法.算力与数据.传统企业有着丰富 ...
- 联邦学习框架和数据隐私综述
联邦学习 --新型的分布式机器学习技术. 一.联邦学习开源框架 1.联邦学习框架(按架构分类) 联邦学习常用的框架分为2种:中心化框架.去中心化框架,以中心化框架为主. 2.联邦学习的分类(按照参与方 ...
- [tensorflow]联邦学习框架TFF安装记录(基于docker)
1.介绍 tensorflow federated (下面简称为TFF) 是谷歌开发的一款开源联邦学习框架,该框架基于tensorflow (下面简称为TF) 运行.安装这个框架花了我两天时间,现在对 ...
最新文章
- 配置mysql主从服务器
- 地图收敛心得170405
- 大型Web应用的数据库设计与部署
- 二维“有序”数组查找问题
- 实施工程师常用linux命令,009Linux管理日常使用的基本命令
- JAVA首次课堂测试总结
- 启航龙图计算机网络,2020年哈尔滨工业大学854计算机基础考研大纲
- 新的博客,试试写博客看看
- 人生就是一次Presentation
- 谷歌浏览器 Chrome 最新版离线安装包下载地址
- access vba代码大全_VBA编程在翻译中的应用
- 【Java面试题】线程的生命周期包括哪几个阶段?
- 如何在python官网下载pip_python库在哪里下载?怎么安装?
- RobotFramework学习笔记二:遇到Frame框架
- 微信小程序开发 | 02 - 轮播图实现(swiper组件)
- 哈师大大二有计算机课,哈师大附中晨风计算机社团
- Python 打开文件对话框
- 离子交换树脂过滤重金属
- web页面的性能优化以及SEO(搜索引擎优化)
- 一般可行性研究报告的主要内容和要求
热门文章
- 腾讯面试题:创建索引时,你会怎么考虑呢?(看完你就能和面试官谈人生了)
- cross_val_score,cross_val_predict,cross_validate理解
- java中byte、 int、char、long、float、double各占多少字节数?
- @Bean 与@Component的区别
- keras.layers 各种层介绍
- [转]java.lang.instrument 学习(一)
- Java 获取操作系统名字、系统版本、cpu信息
- mysql删除表中的唯一索引吗_Mysql 使用sql删除同表中重复数据并加唯一索引
- 不用任何数学方法,如何计算圆面积
- 对话BAT数据分析专家:数据分析比你想象的更强大