腾讯 AngelFL 联邦学习平台揭秘

作者:AI前线

数据里蕴含着价值。在人工智能时代,机器学习尤其深度学习模型的获得需要大量的训练数据作为前提。但是在很多业务场景中,模型的训练数据往往分散在各个不同的业务团队、部门、甚至是不同的公司内的。由于用户隐私,这些数据无法直接使用,形成了所谓的“数据孤岛”。近两年,联邦学习技术 (Federated Learning)迅速发展,为跨团队数据合作,打破“数据孤岛”提供了新的解决思路,并开始从理论研究迈向批量应用的落地阶段。本文系统的介绍了联邦学习的发展历程以及业界情况,并重点介绍了TEG数据平台部研发的AngelFL联邦学习的技术特点,尤其在真正业务场景中落地时的探索和技术上的考量。

联邦学习技术介绍

数据孤岛

在互联网和人工智能发展的今天,数据特别是个性化的数据有助于机器学习算法的效果提升。例如,广告推荐的模型要想获得针对每个用户的精准的推荐效果,除了用户的基本自然属性之外,还需要这个用户的行为数据,比如网页浏览行为、上下文信息、购买支付行为等等。但这些行为数据通常在业务APP、新闻站点、游戏或内容等其他产品中,由于数据中包含着用户的很多个人隐私信息,无法直接拿来使用,数据彼此之间形成了“孤岛”。如何在保护用户隐私的前提下,联合多个数据源进行模型训练,成为一个新的挑战。

腾讯 AngelFL 联邦学习平台揭秘_第1张图片 数据孤岛与隐私

发展历程

针对数据孤岛问题,联邦学习,一种新的机器学习技术为这一挑战提出了一种的解决方案。谷歌2016年在论文 《Federated Learning: Strategies for Improving Communication Efficiency》 中率先提出了 Federated Learning(联邦学习)的概念,主要用来解决联合存在于多个终端(例如移动手机)中的数据进行中心化模型训练的问题,并应用在输入法改进等场景。

但此后相当一段时间里,联邦学习一直处于理论研究的阶段,并没有太多落地的案例。这其中可能有几方面的原因:首先是缺少需求,最近两三年人工智能飞速发展,已经到达落地的阶段,必然面临着数据从哪里来、如何打通等问题,但在这之前没有数据打通的问题,自然也就不会有联邦学习的需求;其次是技术成熟度不够,谷歌提出的 Federated Learning 模型中,需要有一个中心服务器,负责收集各方训练好的本地模型进行聚合,那么问题就在于这个中心服务器是否可信可靠?另外,这个模型要求不同参与方的数据属性是相同的,例如张三和李四的数据都要求是年龄、身高、性别,虽然他们的具体数值不同,但属性必须一致。

在 2019 年初发表的论文 《Federated Machine Learning: Concept and Applications》 中,香港科技大学的杨强教授进一步发展了 Federated Learning,提出了 Horizontal(横向)和 Vertical(纵向)Federated Learning 两种 框架,如下图所示,其中,谷歌提出的模型可以算作横向联邦的一种。随着技术不断发展成熟,以及人工智能落地过程中数据痛点愈发凸显,联邦学习得到了更多的关注,学术界和工业界开始联合起来系统化地研究整个 技术体系,也有越来越多企业开始尝试引入联邦学习并将其作为打通多方数据的一种解决方案。

腾讯 AngelFL 联邦学习平台揭秘_第2张图片

联邦学习两种形态:横向、纵向联邦在理论发展的同时,联邦学习技术在工业界也逐渐开始实践。这里介绍几个主要的框架:

  1. 2019年1月,谷歌发布了TensorFlow 2.0 Alpha版本,其中包括特性TFF(TensorFlow Federated)。各个终端计算本地梯度,并发送到中心服务器Server做FedAvg,Server聚合梯度后更新模型,并推送给各终端。仅横向联邦,维度相同,样本不同。

  2. 百度PaddlePaddle机器学习框架也发布了联邦学习模块PaddleFL,利用开源FedAvg和基于差异性隐私的SGD算法来实现,思路与TFF类似,需要中心角色辅助。

  3. 微众银行WeBank提出了FATE联邦学习框架,FATE采用Python语言开发,同时支持横向和纵向联邦,底层基于EggRoll分布式,可视化界面等周边比较完善。但从实际测试看,仍然存在一些问题:首先在模型上,FATE需要一个可信第三方Collaborator来协调完成数据的加密解密过程,这在实际应用场景中通常不可行;其次在性能和稳定方面,FATE的训练样本ID和模型全部存放在Roll中心节点上,受单点机器资源的限制,无法支持大数据量,例如广告高维稀疏场景;此外系统也缺少Failover容错机制。

AngelFL联邦学习平台

业务需求

AngelFL联邦学习的发展,主要来自业务需求的驱动。整个平台构建在Angel智能学习平台的基础之上,Angel 已应用于微信支付、QQ、腾讯视频、腾讯社交广告及用户画像挖掘等业务,随着广泛的应用,在保护数据隐私的前提下,联合多方数据建模的需求日益凸显。团队首先梳理整合业务需求,找到共性的关键问题;然后调研学术界和业界是否有成熟的解决方案,能满足业务场景;最后重点解决落地问题,即安全、易用、高效和稳定。

其中业务需求方面主要有以下几个特点:

  • 90% 的场景是纵向联邦学习的问题,即 ID 相同、在数据维度上联合建模。以广告为例,一方有用户的基本画像,主要是静态标签,而另一方则有其购买行为、兴趣等信息,需求是如何安全有效地联合两方的数据。

  • 用户普遍关心安全问题,即学习过程是否安全。除了最终产出的模型参数,过程中不应该泄露任何一方的数据信息,也不可以反推数据信息的中间结果。

  • 效率和稳定问题,平台的训练速度不能太慢,而且要稳定,降低问题调查、任务重跑等代价。

  • 要能兼容现有的业务流程,不要对现有训练系统改动太大。另外要容易部署,系统不能太复杂。

基于对业务和现有技术方案的调研,团队重新设计了一种“去中心化”的联邦学习框架,无需依赖可信第三方。整个系统以 Angel 的高维稀疏训练平台作为底层,抽象出“算法协议”层,供实现各种常见机器学习算法。

系统架构

技术上,以两个业务方 A 和 B 为例,AngelFL联邦学习系统架构如图所示(也可以扩展到多个参与方的场景):

腾讯 AngelFL 联邦学习平台揭秘_第3张图片 AngelFL系统架构图

A、B 双方分别拥有各自的与用户相关的数据,存储在本地集群,在整个联合建模的训练过程中,A 和 B 双方的原始数据均不出本地。可以看到,架构具有以下特点:

  1. A、B 两方独立部署 Angel 联邦学习的本地框架,支持 YARN、K8S 多种资源申请方式,与业务现有系统完全兼容,灵活易用;

  2. 本地训练框架 AngelFL Executor 的计算采用 Spark,充分利用其内存优先和分布式并行的优点,效率高且易于和现有大数据生态(如 HDFS 等)打通;

  3. 本地模型保存在 Angel-PS 参数服务器中,支持大规模数据量训练;同时,PS 写有 checkpoint,意外失败的任务可以从上次保存的进度继续执行,具有很好的容错性;

  4. 模型训练相关的数据经过加密模块加密后,在 A、B 两方之间直接通信而不依赖第三方参与“转发”,实现了“去中心化“,整个训练流程仅需要协调双方的进度即可,能够增强实际应用中的安全性。

在上述系统框架的基础上,再抽象出一层算法协议层,利用平台提供的计算、加密、存储、状态同步等基本操作接口,实现各种联邦机器学习算法。在训练任务执行时,通常拥有标签的一方作为训练的驱动方,算法协议层会控制本地训练步骤,例如梯度计算、残差计算、模型更新、消息发送等,同时与 AngelFL 流程调度模块交互同步执行状态,并按照协议触发对方进行下一步动作。

说明:AngelFL联邦学习平台构建在 Angel 之上,其核心组件是 Angel-PS 参数服务器。在机器学习领域,当模型的参数规模达到高维例如千亿时,单台机器内存已经无法容纳下这样大规模的数据,必须借助于分布式的方式,利用多台机器一起才能完成训练任务,而参数服务器就是其中比较好的解决方案。Angel-PS 针对高维稀疏场景做了大量优化,比如对参数更新做批量处理,将很多在 worker 上的计算提升到 PS 端计算,提升了计算效率和一致性,加快算法收敛速度。Angel-PS 目前支持万亿级模型。同时,整个 Angel 平台底层基于 Spark 搭建,利用 Spark RDD 的高效和灵活性,很容易与大数据系统如 HDFS 等数据打通,兼容性高。

训练过程

一个典型的算法过程如下图所示:

腾讯 AngelFL 联邦学习平台揭秘_第4张图片 算法训练流程

假设还是两个业务系统 A 和 B,其中 ID 表示样本 id 的集合,X 表示维度数据,Y 表示 ID 样本标签,联邦学习的目的是联合 A 和 B 的 X 来训练得到能预测 Y 的最优模型。B 拥有标签,将作为训练的发起方,过程如下:

1)A、B 双方提取样本 ID,通过加密算法加密后,在 B 方进行安全样本 ID 对齐(PSI),得到双方共同的 ID 集合的交集 A^B = {u2, u3}; A,B 均不知对方除了交集外的部分;

2)根据交集 ID,双方提取相应样本的维度数据 X,先在计算本地模型数据如梯度,然后 A 通过加密方式,将中间数据发送给 B,B 根据标签计算预测误差,并将模型更新信息加密后传回 A;

3)模型收敛后训练结束,A、B 分别持有模型中与自己维度 X 相关部分的参数,并共同提供模型服务。

技术优化

  • “去中心化” - AngelFL联邦学习系统主要采用了密码学中的同态加密算法,该加密算法有一个特点是:对经过同态加密后的密文数据进行运算,将运算结果解密,与未加密的原始明文数据进行同样运算的结果是一样的。利用这种特点,研发团队对需要双方交互的模型相关数据采用同态加密,直接发送给对方,对方在密文上完成训练所需的计算,然后将结果返回,接收方解密后,能得到计算后的结果,而无法获知其原始数据。

  • 消息通信膨胀 - 这个问题也与同态加密有关。采用高强度加密算法,例如如果采用 2048 位 Paillier 加密,一个浮点数的体积将膨胀到 4096 位。研发团队采用 bit-packing 的方法压缩了密文的体积,从而较少网络传输量。

  • 跨网传输消息拥塞 - 算法在训练过程中通常有大量的数据需要交换,这导致网络传输量巨大,而联邦的双方一般处于不同网络域中,如果采用简单的 RPC 点对点通信,容易引起交换机 in-cast 现象而导致消息拥塞。为了解决这一问题,研发团队采用 MessageQueue 作为消息管道,控制拥塞并提供消息持久化功能,增强系统稳定性。

  • 加密解密加速 - 联邦学习涉及大量的数字加密和解密操作,属于计算密集型任务,可以采用硬件如 GPU 加速来解决,这方面研发团队正在探索中。

测试结果

LR算法场景测试

作为最基础的算法,我们用两方的联邦LR算法测试了AngelFL的性能,并与业界FATE框架进行了对比,以验证加入双方交互以及基于MessageQueue通信等因素对性能的影响。测试采用公共的a9a数据集 (https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/a9a),测试环境硬件和算法参数配置,以及训练时间如下:

- 测试数据集:a9a公开数据,32561样本,124维度。

- 测试环境:5台机器集群


AngelFL FATE
参数配置 ps.partition = 5, executor.num = 1, executor.core = 5, fullbatch, epoch = 30 egg = 5, partition = 10 fullbatch, epoch = 30
训练时间 13 min 31 min

分析:AngelFL采用了异步MessageQueue消息通信,并且底层加密/解密等耗时操作均采用C++加速,实现了性能上的优化。

GBDT算法场景

除LR算法外,AngelFL还实现了联邦GBDT算法,在某业务场景的数据集中的性能如下,测试环境:8台IDC机器,1000MB/s网络。说明:准确率和时间均指迭代一轮。


场景一:异常检测(二分类) 场景二:游戏兴趣(多分类)
训练样本 585万,500维 157万,600维,177类目
测试样本 146万 39万
模型准确率 85% 87%
训练时间 2.2 Hour 1.6 Hour


应用落地

在公司内部,AngelFL联邦学习已经在金融云、广告联合建模等业务中开始落地,并取得初步的效果。AngelFL以技术赋能的方式,为分布在不同部门和团队的数据搭建互通的桥梁,在保护数据隐私的前提下,使数据合力成为可能。联邦学习扩展了机器学习能触达的边界。随着人工智能技术的不断落地,将在跨部门合作、数据隐私保护等方面将会发挥越来越重要的作用,有着广阔的应用前景。

推荐阅读:

腾讯高性能图计算框架Plato及其算法应用

腾讯健康码 16 亿亮码背后的 Elasticsearch 系统调优实践

你可能感兴趣的:(腾讯 AngelFL 联邦学习平台揭秘)