作者:AI前线
数据里蕴含着价值。在人工智能时代,机器学习尤其深度学习模型的获得需要大量的训练数据作为前提。但是在很多业务场景中,模型的训练数据往往分散在各个不同的业务团队、部门、甚至是不同的公司内的。由于用户隐私,这些数据无法直接使用,形成了所谓的“数据孤岛”。近两年,联邦学习技术 (Federated Learning)迅速发展,为跨团队数据合作,打破“数据孤岛”提供了新的解决思路,并开始从理论研究迈向批量应用的落地阶段。本文系统的介绍了联邦学习的发展历程以及业界情况,并重点介绍了TEG数据平台部研发的AngelFL联邦学习的技术特点,尤其在真正业务场景中落地时的探索和技术上的考量。
在互联网和人工智能发展的今天,数据特别是个性化的数据有助于机器学习算法的效果提升。例如,广告推荐的模型要想获得针对每个用户的精准的推荐效果,除了用户的基本自然属性之外,还需要这个用户的行为数据,比如网页浏览行为、上下文信息、购买支付行为等等。但这些行为数据通常在业务APP、新闻站点、游戏或内容等其他产品中,由于数据中包含着用户的很多个人隐私信息,无法直接拿来使用,数据彼此之间形成了“孤岛”。如何在保护用户隐私的前提下,联合多个数据源进行模型训练,成为一个新的挑战。
数据孤岛与隐私
针对数据孤岛问题,联邦学习,一种新的机器学习技术为这一挑战提出了一种的解决方案。谷歌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联邦学习的发展,主要来自业务需求的驱动。整个平台构建在Angel智能学习平台的基础之上,Angel 已应用于微信支付、QQ、腾讯视频、腾讯社交广告及用户画像挖掘等业务,随着广泛的应用,在保护数据隐私的前提下,联合多方数据建模的需求日益凸显。团队首先梳理整合业务需求,找到共性的关键问题;然后调研学术界和业界是否有成熟的解决方案,能满足业务场景;最后重点解决落地问题,即安全、易用、高效和稳定。
其中业务需求方面主要有以下几个特点:
基于对业务和现有技术方案的调研,团队重新设计了一种“去中心化”的联邦学习框架,无需依赖可信第三方。整个系统以 Angel 的高维稀疏训练平台作为底层,抽象出“算法协议”层,供实现各种常见机器学习算法。
技术上,以两个业务方 A 和 B 为例,AngelFL联邦学习系统架构如图所示(也可以扩展到多个参与方的场景):
AngelFL系统架构图
A、B 双方分别拥有各自的与用户相关的数据,存储在本地集群,在整个联合建模的训练过程中,A 和 B 双方的原始数据均不出本地。可以看到,架构具有以下特点:
在上述系统框架的基础上,再抽象出一层算法协议层,利用平台提供的计算、加密、存储、状态同步等基本操作接口,实现各种联邦机器学习算法。在训练任务执行时,通常拥有标签的一方作为训练的驱动方,算法协议层会控制本地训练步骤,例如梯度计算、残差计算、模型更新、消息发送等,同时与 AngelFL 流程调度模块交互同步执行状态,并按照协议触发对方进行下一步动作。
说明:AngelFL联邦学习平台构建在 Angel 之上,其核心组件是 Angel-PS 参数服务器。在机器学习领域,当模型的参数规模达到高维例如千亿时,单台机器内存已经无法容纳下这样大规模的数据,必须借助于分布式的方式,利用多台机器一起才能完成训练任务,而参数服务器就是其中比较好的解决方案。Angel-PS 针对高维稀疏场景做了大量优化,比如对参数更新做批量处理,将很多在 worker 上的计算提升到 PS 端计算,提升了计算效率和一致性,加快算法收敛速度。Angel-PS 目前支持万亿级模型。同时,整个 Angel 平台底层基于 Spark 搭建,利用 Spark RDD 的高效和灵活性,很容易与大数据系统如 HDFS 等数据打通,兼容性高。
一个典型的算法过程如下图所示:
算法训练流程
假设还是两个业务系统 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 相关部分的参数,并共同提供模型服务。
作为最基础的算法,我们用两方的联邦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++加速,实现了性能上的优化。
除LR算法外,AngelFL还实现了联邦GBDT算法,在某业务场景的数据集中的性能如下,测试环境:8台IDC机器,1000MB/s网络。说明:准确率和时间均指迭代一轮。
场景一:异常检测(二分类) | 场景二:游戏兴趣(多分类) | |
---|---|---|
训练样本 | 585万,500维 | 157万,600维,177类目 |
测试样本 | 146万 | 39万 |
模型准确率 | 85% | 87% |
训练时间 | 2.2 Hour | 1.6 Hour |
在公司内部,AngelFL联邦学习已经在金融云、广告联合建模等业务中开始落地,并取得初步的效果。AngelFL以技术赋能的方式,为分布在不同部门和团队的数据搭建互通的桥梁,在保护数据隐私的前提下,使数据合力成为可能。联邦学习扩展了机器学习能触达的边界。随着人工智能技术的不断落地,将在跨部门合作、数据隐私保护等方面将会发挥越来越重要的作用,有着广阔的应用前景。
推荐阅读:
腾讯健康码 16 亿亮码背后的 Elasticsearch 系统调优实践