本文介绍字节跳动联邦学习技术团队自主研发的联邦学习平台,分享该平台的技术实现和实施经验,向读者展示字节跳动如何突破联邦学习的实施。
联邦学习作为一种分布式机器学习范式,可以有效解决数据孤岛问题,让参与者在不共享数据的情况下共同建模和挖掘数据价值。
近两年来,联邦学习技术发展迅速,阿里巴巴、腾讯、百度、京东、蚂蚁金服、微众银行等多家主流互联网公司和金融科技公司纷纷涉足。 不久前,字节跳动联邦学习技术团队也开源了自研的联邦学习平台。
据介绍,字节跳动的联邦学习平台已应用于电商、金融、教育等行业的多个实施场景。 字节跳动联邦学习技术负责人吴迪在接受 InfoQ 专访时表示,联邦学习面临的困难更多是如何为客户获得最大的感知商业价值。 不同行业的合作伙伴有不同的产品特性和价值诉求。
得益于字节跳动在推荐和广告领域机器学习建模技术的长期积累,字节跳动联邦学习找到了一个帮助企业客户实现可感知商业价值的方向,即基于字节跳动的个性化推荐算法和模型的优势,探索并找到着陆场景。 例如,在电商广告场景下,帮助合作伙伴实现投放效率提升10%以上,流量消耗提升15%+,电商平台ROI提升20%+。
除电商行业外,在与教育行业龙头客户探索联邦学习实施过程中,效果也得到了较为良好的验证,帮助教育客户广告投放量增长了124.73%,投放数量也得到了较好的验证。正价课程续订增加了 211.54%。 续费率提升32.69%,正价课程续费用户获客成本下降11.73%。
即便如此,从整个行业来看,联邦学习技术的落地仍然存在困难。 在安全和效率的平衡、建模能力和机器学习算法的演进方面,平台和企业还需要做一些事情。 很多。
在这篇文章中,我们将分享字节跳动联邦学习平台的技术实现和应用经验,看看字节跳动如何在联邦学习的落地上找到突破。
1、联邦学习平台的技术实现及挑战
字节跳动的联邦学习团队于2020年初低调开源了自研的联邦学习平台(项目地址:),并持续更新。 v1.5版本于2020年10月26日上线。
吴迪告诉 InfoQ:“开源的原因是字节跳动拥有海量的用户数据,深知保护用户数据安全的重要性。通过开源,我们希望与行业伙伴一起推动行业的发展。” “隐私计算,与客户共同保护。用户数据是安全的。另一方面,在保护用户数据安全的同时,我们也为我们的平台建立了公开透明的机制,以增强客户的信任。”
联邦学习平台可以支持多种类型的联邦学习模型。 整个系统包括控制台、训练器、数据处理、数据存储等模块。 每个模块对称部署在参与联邦双方的集群上,并通过代理相互通信以实现训练。
数据交集
双方在开始训练之前,必须根据双方的数据进行交集,找到交集,实现模型训练。 通常,训练数据相交的方式主要有两种,一种是流数据相交,另一种是PSI数据相交。
流数据的交集
流数据通常是指普通在线流量产生的数据。 例如,在广告场景中,当用户点击广告时,媒体平台和广告主都会生成一条数据记录。 为了训练基于联合训练的模型,必须首先对齐这两个数据记录并生成样本。
但在流数据场景下,数据放置时间和样本存储可靠性无法统一,还存在样本缺失、双方样本顺序不一致的问题。 因此,必须有一套协议将双方的样本进行交叉并统一排序,并计算双方共享的样本条目进行模型训练。
如前所述,当前大多数应用场景都需要处理大规模数据。 为此,在流式数据处理中,预先将数据根据哈希值分为N份。 要求交叉时,双方各拉出N个棋子。 配对后,形成N对,每对处理一个。 在每一对中,负责方将其自己的数据流发送到序列。 接收到后,与自己本地的数据流相交,然后将交集发回。
在实际处理过程中,进行联邦学习训练的双方的数据处理流程通常不同,双方样本的存储和调用顺序也不同。 因此,在求交集时,通常采用键值查询机制。 这种查询机制是随机访问整个数据进行查询,但是随机访问整个数据的成本太高。 例如,为了处理大量数据,建立并维护KV数据库。 成本非常高。
为了解决这个问题,采用了时间窗法,即在内存中维护两侧时间相近的样本,丢弃少量超出时间窗的样本,从而大大减少设备和操作和维护成本。
PSI 数据的交集
与流式数据不同,还有一些场景下的数据不是普通线上流量产生的,而是各方独立记录的,比如不同金融机构记录的用户画像数据。
对于这种各方独立记录的数据,在模型训练之前,需要利用双方共享的用户信息(如用户ID)来寻找双方用户的交集。 例如,组织A有2亿用户数据,组织B有4亿用户数据。 如果要查找组织A和B共享的1.5亿用户,则需要找到两个组织中相同的用户ID。 1.5亿用户的交集。
但在寻找两方交集的过程中,组织A并不想将自己用户中与组织B不交集的5000万用户泄露给对方。同样,组织B也不想泄露给对方与组织A亿用户不交叉的250万用户相互泄露。
为此,团队采用了PSI(Set, Set )加密数据交集方法。
PSI加密数据交集方法允许持有自己集合的两方共同计算两个集合的交集。 在这个过程中,无论是在传输还是计算过程中,双方的真实用户ID都会被加密隐藏,这样在计算交互结束时,一方或双方都能得到正确的交集,而不会得到其中的任何信息。路口外的另一个集合。
由于需要离线处理单独存储的数据,因此PSI加密数据的相交方法需要分为两个步骤。 第一个是在离线场景下安全加密双方的完整ID。 基本流程是:
线下场景完成后,双方可以在线上场景进行实时约会:
模型训练
联邦学习技术本质上是为了帮助联邦双方更好地训练模型。 不同的企业因其积累的数据类型和特点不同、应用场景不同,会采用不同的模型训练方法。
常见的模型训练包括神经网络模型训练、树模型训练、线性回归模型训练等。其中,神经网络训练模型最常见的应用场景是推荐,包括个性化内容推荐、广告推荐等,而树模型在金融领域更常用于对信用/风险和其他指标进行建模。
由于字节跳动在个性化推荐技术方面积累了大量经验,其模型训练主要集中在神经网络模型训练和树模型训练上。
神经网络模型训练
根据特征分布的不同,联邦学习神经网络模型训练可以分为垂直(Cross-silo)和水平(Cross-)两种模式。 在纵向模式中,每个参与者对同一样本具有不同的维度特征,将模型分为两部分,并行训练类似的模型。 在水平模式下,每个参与者具有不同样本的相同维度特征,并且每个参与者都有模型的副本,类似于数据并行训练。
垂直和水平两种训练模式可以简化为一个框架,其中一对各自执行一个神经网络并传达中间结果和梯度。 为了支持这种模式,实现了基于gRPC的通信协议,并以算子的形式集成到其中:
bfl.bridge.Bridge(50051, 'localhost:50052') =
bridge.wait_for_remote_startup()
g = tf.Graph()
with g.as_default():
x = tf.placeholder(tf.float32)
w1 = bridge.receive_op('w1', dtype=tf.float32)
...
send_gw1 = bridge.send_op('gw1', gw1)
dataset = MnistData()
sampler = bfl.data.SequentialSampler(dataset)
data_loader = bfl.data.DataLoader(bridge, 'leader', dataset, 256, sampler)
with tf.Session(graph=g) as sess:
sess.run(tf.global_variables_initializer())
for round_id, (np_x, np_y) in data_loader:
bridge.start(round_id)
print sess.run([...], feed_dict={...})
bridge.commit()
利用这种通信协议,算法工程师只需在普通模型代码中添加发送算子()和接收算子(),就可以将其更改为支持联邦训练的模型。
基于神经网络模型训练,目前已处理数据量高达40TB。 在不稳定的公网通信环境下,可以用很少的资源快速稳定地完成训练数据交叉和模型训练,迭代效率高。
树模型训练
与神经网络模型训练不同,树模型训练目前仅支持两方纵向学习模式,一方提供特征,另一方提供标签和特征。 为了在保护双方数据和标签隐私的前提下进行模型训练,同时性能又要满足实际使用需求,树模型训练器采用如下算法:
从模型训练的结果来看,字节跳动联邦学习平台的数据与业内其他竞争对手相当甚至超越。
此前,字节跳动联邦学习团队在单机上对比了微众银行FATE上树模型的性能。 基于MINST数据集的训练指标显示,当双方参数设置一致时,训练后的模型精度、F1、AUC、KS等指标基本相同,差异仅出现在小数点后三位。
MINST 数据集上的训练指标。
双方的主要差距出现在模型训练速度上。 经过5轮迭代平均训练,FATE的训练速度相比FATE有17.2%左右的优势。
一键部署,可视化平台
为了处理大规模数据,数据交叉和模型训练依赖于分布式计算和存储系统。 为此,字节跳动联邦学习团队开发了基于+HDFS/MySQL/的解决方案来管理集群和任务。 其中,在阿里云等公有云上,用户可以通过一键脚本快速创建整个集群。
整个系统使用K8s Helm系统进行集成和部署。 用户只要准备好标准的K8s集群和HDFS/MySQL服务,就可以使用Helm一键部署整个系统。
系统部署后,K8s集群可以自动调度联邦学习任务。 每个任务都需要在参与双方上启动一个K8s任务。 这两个任务需要配对并相互通信。 字节跳动联邦学习团队定制了K8s和NGINX实现配对和加密跨机房通信。
由于K8s本身只提供命令行+YAML管理任务,为了方便算法工程师使用,字节跳动联邦学习团队开发了可视化Web平台,用户可以在上面提交任务、查看进度、分析结果。
该任务需要由相关各方同时发起。 为了降低双方的沟通成本,字节跳动联邦学习团队还开发了基于字节跳动的预授权系统。 只要一方创建指定的授权范围,另一方就可以独立发起多个训练和预测任务。
2、落地应用:广告效率提升209%
目前,在字节跳动内部,分散在各个部门和业务的数据已经通过技术赋能连接起来,在保护用户和公司数据的隐私和安全的前提下,帮助企业在各种业务场景中挖掘数据的价值。 在外部市场,字节跳动也在推动在电商、金融、教育等各个垂直行业的落地,并与行业领先客户合作验证技术沉淀和商业效益。
“最大的挑战是如何为客户争取最大的感知商业价值,并提供良好的安全保障和完整的联邦学习生态系统,为实施提供坚实的基础。” 吴迪表示,“但从‘技术基础’到‘最终商业价值增量’还有很长的路要走。”
目前市面上有很多开放的联邦学习平台,每个平台都有不同的数据优势。 吴迪认为,企业需要根据自己的业务目标选择合适的联邦学习平台。
对于我们来说,除了技术训练速度和效率之外,最大的优势无疑是字节跳动在推荐和广告领域的机器学习建模技术的长期积累。 例如,在电商广告场景中,电商广告主会将产品广告投放到字节跳动的京东引擎平台上。 京东引擎和电商广告主都希望提高广告的ROI,共同优化深度转化,即购买事件。 然而,电商广告商通常不希望将产品详情、用户购买历史等敏感信息发送回巨擎平台。 在这种情况下, 的能力。
在这个场景下,联邦学习平台的实现过程大致可以分为两部分。
第一个是该过程的在线部分:
线下部分流程:
基于上述解决方案,结合巨擎平台侧的用户内容兴趣标签和电商广告主侧的用户交易行为和产品标签,利用联邦学习平台进行联合建模,可以充分发挥两者的互补性来自双方的数据并优化广告。 召回率、精细化CTR、CVR模型等多个模块。
在实际合作案例中,我们实现了交付效率10%以上的提升,并协助提高了收购量和投资回报率。
“除了技术优势之外,高质量的数据对于这种实施和应用也非常关键。” 吴迪表示,“训练数据是机器学习的核心基石,联邦学习场景也不例外。选择与业务目标一致。高度相关和表达力的训练数据可以加速最终商业价值的获取。”
字节跳动营销平台海量引擎依托今日头条、抖音的数据优势,基于600T+海量用户群体画像,对用户行为特征进行动态分析和深度建模,用户标签超过220万个。 这些数据对于很多行业和企业来说具有极高的商业价值。
比如在线教育行业,由于正价课程付费人群的数据是核心营收数据,很多客户对正价课程付费人群的数据严格保密,无法导出到海量引擎服务器。 但正价课程付费是在线教育广告的核心转化和考核目标,客户也希望提高正价课程的付费/续学率。
基于“联邦学习-海量引擎单端特征模型”的方法,海量引擎端和教育客户端可以各自提供用户标识+特征/标签,数据交集后可以联合建模。 该方法能够在不知道用户的深度行为标签(即谁购买了正价课程)的情况下预测深度正价课程的转化率。 结合广告微调阶段的动态出价调整,可以优化在线教育广告正价课程的转化率,提高获客投资回报率。
基于上述解决方案,字节跳动联邦学习目前正在与多家在线教育行业领先客户探索深度合作,帮助教育客户广告投放量提升124%,正价课程续订量提升209%,续订率提高了33.1%。 正价课程续订用户获客成本降低11.7%。
3、联邦学习迫切需要解决安全与效率的冲突。
在吴迪看来,联邦学习目前仍处于“早期采用”阶段。 无论是字节跳动,还是近两年国内外科技公司推出的一系列联邦学习平台,仍然面临着各种挑战。
吴迪结合字节跳动开发联邦学习平台的经验以及字节跳动联邦学习技术的实现情况,总结了联邦学习技术的四大挑战。
首先是安全。
联邦学习自然具有无可比拟的安全优势。 近两年,世界各国对数据安全的高度重视和严格监管,是联邦学习持续加速发展的动力。
然而,机器学习范围内仍然存在一些安全挑战。 例如,训练过程中的梯度是否有可能让协作者A猜测协作者B的标签分布,从而泄露用户行为的统计信息? 同样,甲方是否可以猜测乙方的特征分布,或者使用乙方在其他模型中传递的中间产品(例如)? 其中一些“安全”问题可以通过同态/半同态加密等传统手段来解决,而另一些则需要通过创新的机器学习算法和框架来解决。 例如,为了进一步保证客户端数据安全,基于联邦学习框架和神经网络模型,对标签和加密算法进行隐私保护升级。
二是效率。
尽管字节跳动在推荐、广告、用户增长等场景取得了一定的成绩,但吴迪表示,这些场景中的大规模数据和训练效率仍然面临严峻的挑战。 例如,我们能否在彼此数据不可见的情况下,在几个小时内完成超过数十亿行的训练样本集的对齐和预处理,并通过有限且不稳定的网络连接在几个小时内完成所有样本的多轮循环? 训练,对球队的要求非常高。
除了对团队的挑战之外,效率也会给安全带来挑战。 “更强的数据安全性要求会导致数据处理效率和训练效率下降,也会限制机器学习算法的选择。安全性和效率之间需要更好的平衡。” 吴迪表示,“团队正在探索新的机器学习算法和框架,也涵盖了软硬件集成等很多技术方案。目前整个行业已经做了很多针对性的投入,相信我们会在不久的将来会看到很多技术突破。”
第三是建模能力和机器学习算法。
在包括字节跳动在内的各种联邦学习平台上,联邦双方都无法看到对方的原始数据,有时双方甚至隐藏各自的神经网络结构。 这种做法在很大程度上保证了数据安全,但从技术角度来看,也让“可解释性和可调试性”变得更加困难。
那么,如何在看不到双方特征的情况下进行特征工程处理,如何筛选出重要的“好特征”,如何进行模型效果,如何一步步将模型迭代到极致,这就给了联邦学习技术团队的建模能力、机器学习算法能力带来了巨大的挑战。
四是友善。
联邦学习的一个关键词是“合作”。 合作越广泛,效果就越好。 这也意味着参与联邦建模的技术门槛必须不断降低,这带来了诸多挑战,包括:快速部署(物理服务器/私有云/各类公有云等)、便捷接入、一键训练与部署等。服务能力等
这些都是整个行业面临的挑战,也是需要持续深入研究和讨论的问题。
Java工程师深度学习入门(二):DJL推理架构详解
DJL是亚马逊推出的开源深度学习开发包。 它是一个基于现有深度学习框架,使用原生Java概念构建的开发库。 DJL 目前提供 MXNet、MXNet 和 MXNet 的实现。 Java 开发人员可以立即开始将深度学习的 SOTA 结果集成到 Java 应用程序中。
11月3日20:00,李政哲(AWS软件开发工程师)将进行在线分享,介绍DJL推理模块,并根据具体场景讲解如何使用各个模块、如何使用推理API、如何优化推理速度,以及如何部署在微服务、大数据服务和移动终端中,并结合客户成功案例进行讲解。
©结束