写点什么

京东超大规模联邦学习探索实践

  • 2021-06-08
  • 本文字数:5688 字

    阅读完需:约 19 分钟

京东超大规模联邦学习探索实践

对于 AI 飞速发展的今天来说,大规模的多维度、高质量的数据是其成功的关键要素,也是制约其进一步发展的重要瓶颈。随着大家对数据的重要性与隐私性的认知程度的不断提升,跨组织的数据的合作越来越谨慎,相关隐私法律法规也陆续出台 ( GDPR ),这样就造成了大量了的数据孤岛,无法充分的利用数据进行分析、决策,严重制约了 AI 的发展。联邦学习在保证数据隐私安全及合法合规的基础上,打破数据孤岛,实现共同建模,共创共赢,将成为未来 AI 发展的一个重要方向,9N-FL 作为联邦学习的整体开源解决方案,也会在未来发挥越来越大的作用。


本文将通过了解联邦学习的原理以及解决方案 9N-FL,并且结合本公司的业务,进行应用,为大分享如何开辟新的业务模式与增长点。

背景


基于数据孤岛的考量而提出联邦学习,数据孤岛的产生有以下两方面的原因:

  • 数据重要性:数据是 AI 的石油,加速了 AI 的高速发展,同时多维度高质量的数据是制约其进一步发展的瓶颈。随着各个组织对于数据重视程度的不断提升,跨组织以及组织内部不同部门之间的数据合作将变得越来越谨慎,大量数据以孤岛的形式存在。

  • 数据隐私法:鉴于数据隐私的重要性,国内外对于数据的保护意识逐步加强。2018 年欧盟发布了《通用数据保护条例》 ( GDPR ),我国国家互联网信息办公室起草了《数据安全管理办法 ( 征求意见稿 ) 》,因此数据在安全合规的前提下自由流动成了大势所趋。这些法律法规的出台,不同程度的对人工智能传统处理数据的方式提出了更多的挑战。


上述都限制了数据的流动,造成了大量信息孤岛。如右图所示,主要有两种方式造成信息孤岛:第一是企业获得用户信息越来越难;第二是企业之间数据不共享。

联邦学习概述

1. 联邦学习概述


信息孤岛的解决方案是联邦学习。2016 年,谷歌提出在安卓手机用户中进行联邦学习,解决个人用户数据在终端上的隐私问题,它可以不上传用户隐私数据,在终端上进行模型训练。后续众多业内研究机构和组织对联邦学习投入了极大的热情,研究了更加安全、使用范围更广的联邦学习机制,将联邦学习应用到更加广阔的领域。


联邦学习的本质是基于数据隐私保护的一种分布式机器学习技术或机器学习框架。联邦学习的目标是在保证数据隐私安全及合法合规的基础上,在模型无损的前提实现共同建模,提升 AI 模型的效果。

2. 联邦学习的特征


联邦学习框架有以下四个特征:

  • 两个或以上两个以上参与方,共同构建机器学习模型。

  • 在模型训练过程中,每个参与方数据都不会离开本地,也就是它的原始特征不会离开本地。在进行联合训练的时候,其实是把分布式平台的计算资源放到多家公司的机房里分开部署,而不是把数据集中起来放到一个地方进行训练。

  • 模型的相关信息以加密方式传输。因为在模型训练的时候,需要传递梯度这些中间结果,所有的中间结果是通过加密的方式进行传输,并且保证任何参与方都不能推断出其他方的原始数据。

  • 联邦学习模型的性能要充分逼近理想模型的性能。所有数据集中在一起搭建的模型和联邦学习这种跨域进行训练的模型的性能是比较接近的,右侧是性能逼近的公式。

3. 联邦学习的分类


联邦学习主要分为三大类:横向联邦学习、纵向联邦学习、联邦迁移学习,联邦迁移学习用的稍微少一些。

  • 横向联邦学习:比如刚才介绍的谷歌输入法案例,就是一个比较典型的横向联邦学习的案例。它的特点是各个参与方数据的特征维度是相同的,但是样本 ID 不同。适用于银行以及手机终端边缘计算等同质数据场景。

  • 纵向联邦学习:它的特点是数据样本 ID 基本相同,特征不同。比如两个数据集的用户大规模重叠,但它们的特征不一样。


9N-FL 主要解决的是纵向联邦学习的问题。

4. 联邦学习的架构


如图是联邦学习的架构,主要简单介绍了横向联邦学习架构和纵向联邦学习架构。

京东开源联邦学习解决方案-9NFL

1. 9N-FL 总体架构


项目背景:我们部门主要是做广告营销,在京东站外的一些营销场景中有很多用户,对于我们来说我们并不认识,比如在抖音、快手这些渠道投放广告的时候,这个用户我们不认识,但我们又想给他都放广告,对于头条和快手来说,他们不可能把用户的原始数据给我们。我们就想了一个办法,可以做一下联邦学习,这样对于我们不认识的用户,也可以去进行广告竞拍。


项目大概是在 2019 年 11 月份进行的开发,2020 上半年进行了正式的上线,并且在 2020 年 9 月份完成了正式的对外开源。9N-FL 平台主要包含以下几个重要的部分:

  • 多任务跨域调度

  • 跨域高性能网络代理

  • 大规模样本匹配

  • 大规模跨域联合训练

  • 模型分层级加密


主要创新点:

  • 业界前沿技术自主研发:从 0 到 1 开发设计的,实现了从大规模样本匹配到模型训练/预测的完整解决方案。

  • 营销推荐领域技术落地:支持百亿规模的样本和百 T 容量的数据,并且在电商领域进行了业务落地,取得了不错的落地效果。

  • 复杂场景下平台演进:整个场景比较复杂,涉及到跨域跨网,在这种复杂多变的环境下,要进行联合训练,难度还是比较大的。


取得的成绩:自上线以来,九数联邦学习平台(9N-FL)在取得了较好业务成绩的同时,也经受住了业务大数据、大算力的考验。在与媒体进行京东广告投放业务场景中,基于媒体侧大量的数据(例如,媒体兴趣标签)、京东侧大量的用户商业兴趣及商品标签数据,双方使用联邦学习平台联合建模,来优化广告的触发召回、CTR/CVR 模型等多个模块,最终成功上线,取得了大概 15%的收入提升。

2. 9N-FL 项目时间轴


这个是 9N-FL 的一个时间轴,2017 和 2018 年做联邦学习的比较多,像微众银行、腾讯、百度、阿里,它们相对来说比较早。京东是在 2019 年 11 月正式开始进行联邦学习平台的开发,当时是基于业务为出发点进行开发;在 2020 年 4 月份,完成了平台的开发落地,双方开始联合建模;在 2020 年中做出了业务效果,并且进行了上线。在 2020 年 9 月,进行了平台的开源,在 github 上搜 9N-FL 就可以搜到。

3. 京东开源联邦学习解决方案 9N-FL


对于联邦学习来说,它是一个全新的多交叉的领域知识,主要需要以下几个方面的能力:

  • 数据隐私:同态加密、可信计算、秘密分享、混淆电路为联邦学习奠定了一个坚实的基础。

  • 抽象异构资源限制:联邦学习不光要构建在不同公司,两个公司的技术栈、技术能力、基础设施都不一样,可以用云平台 K8S 进行一些抽象,另外还需要跨网,比如在联合训练的过程中、在大规模样本匹配中,需要大量跨网的交互,而且整个交互过程非常复杂、异常情况比较多。我们抽象了一些网络代理,自研了基于应用层的一些高效的网络协议。

  • 高性能、高可靠:高效的网络协议、可靠的容错机制 failover。比如在联合训练过程中,两边集群可能是若干台机器,但如果有一台机器宕机,整个模型训练就停止了,需要重新进行训练。最开始我们有些优化没有做的很完整,模型训练时间较长,大概是七八天,在 fail 的情况下重新训练就有很大的问题,整个研发进度无法保障。

  • 联合建模:联邦学习平台对模型结构不做限制。在联邦学习过程中,大家都是独立建模,也就是我和另一家公司在建模的过程中,我们可以互不感知对方的模型结构,只关注上层连接之后的反向梯度的传输。


联邦学习是一个跨多个领域的技术,它包含了大数据、实时计算、云平台、机器学习、深度学习、高并发架构、密码学等方面的一些知识,整体要求比较高。

4. 9N-FL 具体工作


具体工作分为以下几个方面:

  • 组件化:平台的一些策略、一些组件都是可以任意组合。比如有的公司数据体量比较大,可以用 hadoop 做数据存储;有的公司数据体量比较小,可能是一个本地文件,也可能是数据库这种方式,都可以支持。9N-FL 平台可以从大、中、小方面进行一个全方位的覆盖,另外可支持策略的热插拔。

  • 高可靠:第一是虚拟化技术,这种虚拟化技术有底层团队在维护。第二是 failover 机制,比如节点故障的恢复。第三是高效、高容错的网络协议。

  • 大数据、大算力:拥有横向水平扩展能力,整个系统支持分布式以及大数据的一些外围工具:HDFS、分布式文件系统、实时数据 kafka 等。

  • 高性能:自研的分布式异步框架、高效自研网络传输应用协议,实现尽可能的并发。大部分模块采用 C++来编写,包括训练器,训练器基于 tensorflow,并没有重复造轮子。

5. 9N-FL 联邦学习模型


整体架构图中公司 A 和公司 B 的数据是无法打通的,其实这就是一个超大规模的样本匹配工作,为下一步建模做准备。在传统的联邦学习过程中,一条样本就是一个完整的输入,中间可能会进行拆图,没有在最开始的输入过程中拆,只是在中间的某一步进行了拆图。但是联邦学习从纵向上来看,把一个用户的样本数据一下子拆成了两部分,联邦学习的基础就是一个超大规模样本匹配的过程。接着往上就是大规模跨域联合建模,蓝色和紫色模型互不感知,只是在上层进行了数据连接,算一下 loss 作为反向梯度传输。


联邦学习主要解决数据跨域问题,保证数据不出域,也就是计算资源向数据资源靠拢,保证数据安全隐私、安全合规。联邦学习之前,只能用左边的一路或者右边的一路数据进行建模,其实模型能力也是可以的,但两个数据如果结合在一起,从直观或者理论上来说,这个模型能力肯定是有一些显著的增强,我们通过实践证明了这一点。


我们将 9N-FL 的应用场景瞄准了大数据营销这块,当然金融领域也在考虑范畴之内。金融对数据隐私性要求比较高,但对实时性要求不高,所以一般采用加密或比较简单的模型,比如 LR 模型或者树模型,它的数据量也比较小,大概几十万,离线可能跑几个小时。大数据营销这块的场景就比较多。

6. 9N-FL 分层架构


  • 基础资源层:包括基础硬件资源、网络

  • 算计资源层:改造 TensorFlow、op、加密模块

  • 计算调度层:Coordinator、Sample Matching、Union Training

  • UI 层:待完善

7. 9N-FL 总体架构


9N-FL 的整体架构图是一个对称的结构,服务部署在两家公司,每家公司都有一套完整的服务。比如 Coordinator:它是整个系统的总控;Proxy:涉及到跨网,可以理解成 gateway;Resource Manager:资源控制;Trainer:训练器。


详细过程:Coordinator 分为 leader、follower 两个角色。我们平时在机器学习平台训练的时候,只要开启训练就好,因为不涉及跟别人的协调,但是对于联邦学习来说,开启训练的时候涉及一个协调的问题,谁是主导者谁是跟随者?主导发起训练的就是主导者,比如图的左侧是主导者,它就是一个 leader,右侧就是跟随者 follower。所有的调度单元都是基于一个任务来调度,整个系统支持多任务的调度。首先左侧的 Coordinator 通知对端,我要进行训练,并且告诉对端我的样本 meta 信息,包含样本 ( 比如 ctr、cvr 样本 ) 信息、时间信息,两边还有一些协商,就是针对这次任务,我要开启多少个 trainer,比如要开启 20 个,那么两边都开启了 20 个 trainer,但是怎么调度起来呢?联邦学习可以仿照传统的机器学习,也就是现在的样本分了两个训练器,一边消费一半,这种情况下,我把样本拼起来,把训练器拼起来,我们就做了这么一件事儿,把不同的训练器做了个配对。配对完之后就涉及到训练器的协商,左边的训练器会通知右侧训练器,告诉它我在我们这边拿到了一条数据,这个数据的 meta 信息是什么,同时会告诉对端也去拿相应的文件,两边都把相应文件拉下来之后,相当于做了消费同样文件的动作。这样两边就可以同时进行训练,在训练的过程中,不断的交换这些梯度,把整个模型构建起来。Proxy 的作用是路由控制,比如第一个 trainer 把梯度分发给对端 proxy 之后,对端 proxy 知道它是要发给第一个 trainer 而不是发给第二个 trainer。整个 proxy 是一个无状态的服务,它起到一个 gateway 的作用,是整个系统对外的暴露。我可能只监听对外的一些端口,会有一些安全措施在里面,里面的服务包括 Coordinator、Resource manager、Trainer,它们都是不对外的,保证了数据安全。Trainer 主要包含两个动作,一个就是两边取完数据后的协商,另一个就是在训练过程中正向结果的传输和反向梯度的传递。


整体调度:


整体调度这块是整个系统的总控,它控制整个系统的生命周期,比如任务的启动、停止、监控;资源的申请,比如会给 trainer 申请资源;多任务的并发调度,比如我们进行联邦学习的时候,是和多家公司进行合作,每家公司有不同的训练目标,有的是训练转化的、有的是训练召回的,建模方式可能不太一样,所以说是多任务的并行并发调度。


资源管理:


资源管理用的是 K8S。


加密训练:

同态加密:满足密文同态运算性质的加密算法,即数据经过同态加密之后,对密文进行特定的计算,得到的密文计算结果在进行对应的同态解密后的明文等同于对明文数据直接进行相同的计算,实现数据的“可算不可见”。


假如有两个整数 A 和 B,要计算 A+B 的和 C 是多少。两个数据对别人是不可见的,将这两个数据拿给第三方计算,算之前同时先对 A 和 B 进行加密,再对密文计算结果,在整个计算过程中,原始数据 A 和 B 没有暴露,得到密文结果后,再用同态解密的方式将密文解掉。



线性回归模型的训练步骤:例子是基于第三方的方式,第三方持有私钥,他会把公钥发给 A 和 B,公钥进行加密,私钥进行解密。算 loss 和算梯度的整个过程是加密的,之前未加密的计算都对应着一个加密的计算。对于 LR 模型和树模型都有公开的加密解决方案,计算速度偏慢,无法用在在线。京东在做对神经网络加密方案的研究,目前已经在实验阶段,后续会有可用于实时的方案。

8. 9N-FL 开源解决方案


这块是京东 9N-FL 开源的情况,大家有问题可以提 issue。

业务效果


如图是基于媒体侧广告的投放的基本流程,双方收入累计提升 20%+。

未来思考


京东 9N-FL 起步于 2019 年 11 月,团队比较精简,以下几个方面待完善:

  • 平台功能:UI 界面化,减少使用成本

  • 部署便捷性:实现一键部署,简单快捷、方便

  • 监控报警完善化:完善报警机制、完成监控机制


分享嘉宾:

杜宝坤

京东 | 资深算法专家

京东商业提升事业部-广告质量部-资深算法专家,主要负责营销端的联邦学习以及站外的触发算法。拥有十多年的互联网工作经验,曾经供职于百度、360 等多家知名互联网公司。在互联网搜索、推荐与广告等方向的架构与算法方面,有多年的一线开发与项目管理经验,并且成功主导过多个大型项目。2020 年在京东零售数据算法通道委员会的指导下,作为项目技术与业务负责人带领团队完成京东超大规模联邦学习框架 9N-FL 的落地,并且进行技术赋能,与营销媒体端进行合作,取得了不俗的成绩;同时 9N-FL 也于 2020 年 9 月进行开源,回馈社区。


本文转载自:DataFunTalk(ID:dataFunTalk)

原文链接:京东超大规模联邦学习探索实践

2021-06-08 08:002083

评论

发布
暂无评论
发现更多内容

一篇文带你入门SSM框架Spring开发!精彩干货不间断!

Java 程序员 后端

一篇文章带你快速理解JVM运行时数据区 、程序计数器详解 (手画详图

Java 程序员 后端

为了面试阿里巴巴、腾讯、字节跳动,linux内核架构

Java 程序员 后端

一篇送给临近35岁程序员的文章,mysql数据库sql语句面试题

Java 程序员 后端

三面腾讯,已拿offer!分享复习经验和后台开发面经

Java 程序员 后端

上线半天下载量破100W!美团大佬的Java性能调优实战手册,超详细

Java 程序员 后端

上线半天下载量破100W!阿里内部微服务进阶笔记,超详细

Java 程序员 后端

不要再本地启动项目调试了,试SpringBoot远程调试你会发现新大陆!

Java 程序员 后端

一款SQL自动检查神器,再也不用担心SQL出错了,自动补全

Java 程序员 后端

一行Java代码实现两玩家交换装备【并发编程】

Java 程序员 后端

不会吧不会吧?字节“百万级,nginx视频教程吾爱破解

Java 程序员 后端

不是吧阿sir,你这Redis太熟了吧,震惊面试官第六年

Java 程序员 后端

不是吧,就因为他和面试官多聊了半个小时红黑树,进了腾讯

Java 程序员 后端

三面遭阿里新微服务框架暴锤,含恨吃透这份手抄本笔记,终入阿里(1)

Java 程序员 后端

不到30岁开上兰博基尼的程序员,为什么这么强,他告诉我只需要把多线程搞好你也行

Java 程序员 后端

不错,这么好的东西不白嫖也太可惜了!阿里内部首发

Java 程序员 后端

两年JAVA程序员的面试总结,mysql索引原理

Java 程序员 后端

为什么不想做Java了, 现在Java面试怎么这么难,从自身找原因

Java 程序员 后端

一篇文章让你了解基于Spring的测试,java自学百度网盘

Java 程序员 后端

万字长文,字节大牛百万调优经验之作:JVM调优实战笔记

Java 程序员 后端

三面阿里云斩获offer:微服务+Redis,积累总结

Java 程序员 后端

为什么一个还没毕业的大学生能够把 IO 讲的这么好?

Java 程序员 后端

为什么不想做Java了,6年经验去面试10分钟结束,现在Java面试怎么这么难

Java 程序员 后端

世界顶级SQL技术专家呕心沥血半年才整理出这份:SQL优化核心思想笔记,手慢无

Java 程序员 后端

一次完整的JVM NativeMemoryTracking 堆外内存泄露分析

Java 程序员 后端

一篇文章丢给你,让你一文了解JVM,2021Java最新大厂面试真题总结

Java 程序员 后端

一篇文章带你快速理解JVM运行时数据区 、程序计数器详解 (手画详图(1)

Java 程序员 后端

三面蚂蚁金服终获 java高岗 offer,却直言再也不想体验第二次了

Java 程序员 后端

三面遭阿里新微服务框架暴锤,含恨吃透这份手抄本笔记,终入阿里

Java 程序员 后端

三、Spring Cloud之软负载均衡 Ribbon,mysql架构

Java 程序员 后端

不是吧阿sir,你这多线程并发也太熟了吧,震惊面试官第四年

Java 程序员 后端

京东超大规模联邦学习探索实践_AI&大模型_DataFunTalk_InfoQ精选文章