共享学习:蚂蚁金服数据孤岛解决方案

若是有A、B、C三位同窗,他们各自手上有十、1五、20块钱,这时须要在相互不知道对方有多少钱的状况下,不借助力第三方来计算三我的一共有多少钱。请问这时候,咱们如何实现呢?——这,就是最经典的秘密共享场景。在看完这篇文章后,答案就出来了~算法

背景

互联网时代,一切基于数据。安全

随着人工智能的兴起,数据的质量和数量,已经成为影响机器学习模型效果最重要的因素之一,所以经过数据共享的模式来“扩展”数据量、从而提高模型效果的诉求也变得愈加强烈。服务器

但在数据共享过程当中,不可避免会涉及到两个问题:隐私泄露和数据滥用。架构

提到这两个关键词,你们必定都对其背后的原因有所耳闻:负载均衡

第一则:2018年3月,剑桥咨询公司经过FaceBook的数据共享漏洞,收集了5000万用户信息,听说有可能利用这些信息操控美国总统竞选,形成恶劣社会影响;事件曝光后,FB公司股票大跌7%,引起一系列后续问题。
第二则:2018年5月,欧盟经过General Data Protection Regulation(GDPR)法案,法案指出:全部与我的相关的信息都是我的数据,对数据的使用行为必需要有用户的明确受权。把对隐私保护的要求提到了一个新的高度。框架

随着对数据安全的重视和隐私保护法案的出台,之前粗放式的数据共享受到挑战,各个数据拥有者从新回到数据孤岛的状态,同时,互联网公司也更难以收集和利用用户的隐私数据。机器学习

数据孤岛现象不只不会消失,反而会成为新的常态,甚至它不只存在于不一样公司和组织之间,在大型集团内部也存在。将来,咱们必须面对这样的现状:若是咱们想更好的利用数据,用大数据和AI作更多有意义的事情,就必须在不一样组织之间、公司与用户之间进行数据共享,但这个共享须要知足隐私保护和数据安全的前提。分布式

隐私泄漏和数据滥用如同达摩克利斯之剑悬在各个公司和组织头上,所以解决数据孤岛,成为AI行业须要解决的首要问题之一。ide

如何解决数据孤岛问题?

当前,业界解决隐私泄露和数据滥用的数据共享技术路线主要有两条。一条是基于硬件可信执行环境(TEE: Trusted Execution Environment)技术的可信计算,另外一条是基于密码学的多方安全计算(MPC:Multi-party Computation)。函数

TEE字面意思是可信执行环境,核心概念为以第三方硬件为载体,数据在由硬件建立的可信执行环境中进行共享。这方面以Intel的SGX技术,AMD的SEV技术,ARM的Trust Zone技术等为表明。TEE方案的大体原理以下图所示:

目前在生产环境可用的TEE技术,比较成熟的基本只有Intel的SGX技术,基于SGX技术的各类应用也是目前业界的热门方向,微软、谷歌等公司在这个方向上都有所投入。

SGX(Software Guard Extensions )是Intel提供的一套软件保护方案。SGX经过提供一系列CPU指令码,容许用户代码建立具备高访问权限的私有内存区域(Enclave - 飞地),包括OS,VMM,BIOS,SMM均没法私自访问Enclave,Enclave中的数据只有在CPU计算时,经过CPU上的硬件进行解密。同时,Intel还提供了一套远程认证机制(Remote Attestation),经过这套机制,用户能够在远程确认跑在Enclave中的代码是否符合预期。

MPC(Multi-party Computation,多方安全计算)一直是学术界比较火的话题,但在工业界的存在感较弱,以前都是一些创业小公司在这个方向上有一些探索,例如Sharemind,Privitar,直到谷歌提出了基于MPC的在我的终端设备的“联邦学习” (Federated Learning)的概念,使得MPC技术一晚上之间在工业界火了起来。MPC方案的大体原理以下图所示:

目前,在MPC领域,主要用到的是技术是混淆电路(Garbled Circuit)、秘密分享(Secret Sharing)和同态加密(Homomorphic Encryption)。

混淆电路是图灵奖得主姚期智教授在80年代提出的一个方法。其原理是,任意函数最后在计算机语言内部都是由加法器、乘法器、移位器、选择器等电路表示,而这些电路最后均可以仅由AND和XOR两种逻辑门组成。一个门电路其实就是一个真值表,假设咱们把门电路的输入输出都使用不一样的密钥加密,设计一个加密后的真值表,这个门从控制流的角度来看仍是同样的,可是输入输出信息都得到了保护。

秘密分享的基本原理是将每一个数字随机拆散成多个数并分发到多个参与方那里。而后每一个参与方拿到的都是原始数据的一部分,一个或少数几个参与方没法还原出原始数据,只有你们把各自的数据凑在一块儿时才能还原真实数据。

同态加密是一种特殊的加密方法,容许对密文进行处理获得仍然是加密的结果,即对密文直接进行处理,跟对明文进行处理后再对处理结果加密,获得的结果相同。同态性来自抽象代数领域的概念,同态加密则是它的一个应用。

当前,业界针对数据共享场景,利用上面的技术路线推出了一些解决方案,包括隐私保护机器学习PPML、联邦学习、竞合学习、可信机器学习等,但这些方案只利用了其中的一部分技术,从而只适合部分场景,同时基本处于学术研究阶段,没有在生产环境落地。

共享机器学习:蚂蚁金服数据孤岛解决方案

为了更好的应对形势变化,解决数据共享需求与隐私泄露和数据滥用之间的矛盾,蚂蚁金服提出了但愿经过技术手段,确保多方在使用数据共享学习的同时,能作到:用户隐私不会被泄露,数据使用行为可控,咱们称之为共享机器学习(Shared Machine Learning)。

共享机器学习的定义:在多方参与且各数据提供方与平台方互不信任的场景下,可以聚合多方信息并保护参与方数据隐私的学习范式。

从17年开始,蚂蚁金服就一直在共享机器学习方向进行探索和研究,在结合了TEE与MPC两条路线的同时,结合蚂蚁的自身业务场景特性,聚焦于在金融行业的应用。

蚂蚁金服共享机器学习方案拥有以下特性:

• 多种安全计算引擎整合,可基于不一样业务场景来选择合适的安全技术。既有基于TEE的集中式解决方案,也有基于MPC的分布式解决方案;既可知足数据水平切分的场景,也能解决数据垂直切分的诉求;既能够作模型训练,也能够作模型预测。
• 支持多种机器学习算法以及各类数据预处理算子。支持的算法包括但不限于LR,GBDT,Xgboost,DNN,CNN,RNN,GNN等。
• 大规模集群化。支持大规模集群化,提供金融级的高效、稳定、系统化的支撑。

基于数年沉淀与积累,目前共享机器学习技术已在银行、保险、商户等行业成功落地诸多场景业务。经过在业务中打磨出的金融级共享机器学习能力,沉淀下来一套数据共享场景的通用解决方案,将来会逐步对外开放。

在几年的艰苦研发中,共享学习累积专利50余项。在2019中国人工智能峰会上,共享机器学习得到“紫金产品创新奖”,在8月16日的全球人工智能创业者大会上,得到“应用案例示范奖”。

下面,咱们将分享基于上面两种路线的共享机器学习实践细节。

基于TEE的共享学习
蚂蚁共享学习底层使用Intel的SGX技术,并可兼容其它TEE实现。目前,基于SGX的共享学习已支持集群化的模型在线预测和离线训练。

1.模型在线预测

预测一般是在线服务。相对于离线训练,在线预测在算法复杂度上面会相对简单,可是对稳定性的要求会更高。
提高在线服务稳定性的关健技术之一就是集群化的实现——经过集群化解决负载均衡,故障转移,动态扩容等稳定性问题。

但因为SGX技术自己的特殊性,传统的集群化方案在SGX上没法工做。

为此,咱们设计了以下分布式在线服务基本框架:

该框架与传统分布式框架不一样的地方在于,每一个服务启动时会到集群管理中心(ClusterManager,简称CM)进行注册,并维持心跳,CM发现有多个代码相同的Enclave进行了注册后,会通知这些Enclave进行密钥同步,Enclave收到通知后,会经过远程认证相互确认身份。当确认彼此的Enclave签名彻底相同时,会经过安全通道协商并同步密钥。

该框架具有以下特性:

• 经过集群化方案解决了在线服务的负载均衡,故障转移,动态扩缩容,机房灾备等问题;
• 经过多集群管理和SDK心跳机制,解决代码升级,灰度发布,发布回滚等问题;
• 经过ServiceProvider内置技术配合SDK,下降了用户的接入成本;
• 经过提供易用性的开发框架,使得用户在开发业务逻辑时,彻底不须要关心分布式化的逻辑;
• 经过提供Provision代理机制,确保SGX机器不须要链接外网,提高了系统安全性。

目前在这套框架之上已经支持包括LR、GBDT、Xgboost等多种经常使用的预测算法,支持单方或多方数据加密融合后的预测。基于已有框架,也能够很容易的扩展到其它算法。

2.模型离线训练
模型训练阶段,除了基于自研的训练框架支持了LR和GBDT的训练外,咱们还借助于LibOs Occlum和自研的分布式组网系统,成功将原生Xgboost移植到SGX内,并支持多方数据融合和分布式训练。经过上述方案,不只能够减小大量的重复性开发工做,而且在Xgboost社区有了新的功能更新后,能够在SGX内直接复用新功能,无需额外开发。目前咱们正在利用这套方案进行TensorFlow框架的迁移。

此外,针对SGX当下诟病的128M内存限制问题(超过128M会触发换页操做,致使性能大幅降低),咱们经过算法优化和分布式化等技术,大大下降内存限制对性能的影响。

基于TEE的多方数据共享学习训练流程以下:

  1. 机构用户从Data Lab下载加密工具
  2. 使用加密工具对数据进行加密,加密工具内嵌了RA流程,确保加密信息只会在指定的Enclave中被解密
  3. 用户把加密数据上传到云端存储
  4. 用户在Data Lab的训练平台进行训练任务的构建
  5. 训练平台将训练任务下发到训练引擎
  6. 训练引擎启动训练相关的Enclave,并从云端存储读取加密数据完成指定的训练任务。

采用该方式进行数据共享和机器学习,参与方能够保证上传的数据都通过加密,并经过形式化验证保证加密的安全性。

基于MPC的共享学习

蚂蚁基于MPC的共享学习框架分为三层:

• 安全技术层:安全技术层提供基础的安全技术实现,好比在前面提到的秘密分享、同态加密、混淆电路,另外还有一些跟安全密切相关的,例如差分隐私技术、DH算法等等;
• 基础算子层:在安全技术层基础上,咱们会作一些基础算子的封装,包括多方数据安全求交、矩阵加法、矩阵乘法,以及在多方场景下,计算sigmoid函数、ReLU函数等等;同一个算子可能会有多种实现方案,用以适应不一样的场景需求,同时保持接口一致;
• 安全机器学习算法:有了基础算子,就能够很方便的进行安全机器学习算法的开发,这里的技术难点在于,如何尽可能复用已有算法和已有框架,咱们在这里作了一些有益的尝试,但也遇到了很大的挑战。

目前咱们这套基于MPC的共享学习框架已支持了包括LR、GBDT、GNN等头部算法,后续一方面会继续根据业务需求补充更多的算法,同时也会为各类算子提供更多的技术实现方案,以应对不一样的业务场景。

基于MPC的多方数据共享学习训练流程以下:

如图所示,训练步骤为:

  1. 机构用户从Data Lab下载训练服务并本地部署
  2. 用户在Data Lab的训练平台上进行训练任务的构建
  3. 训练平台将训练任务下发给训练引擎
  4. 训练引擎将任务下发给机构端的训练服务器Worker
  5. Worker加载本地数据
  6. Worker之间根据下发的训练任务,经过多方安全协议交互完成训练任务

训练引擎的具体架构以下:

其中Coordinator部署于蚂蚁平台,用于任务的控制和协调,自己并不参与实际运算。Worker部署在参与多方安全计算的机构,基于安全多方协议进行实际的交互计算。

用户在建模平台构建好的训练任务流会下发给Coordinator的Task Flow Manager,Task Flow Manager会把任务进行拆解,经过Task Manager把具体算法下发给Worker端的Task Executor,Task Executor根据算法图调用Worker上的安全算子完成实际的运算。

利用这套方法,能够作到数据不出域就能够完成数据共享,训练工具能够部署在本地的服务器。

共享学习 VS. 联邦学习

目前,国内对于数据共享场景的机器学习解决方案,比较熟悉的多是由谷歌提出的联邦学习概念。

通过咱们的了解,其实联邦学习目前涉及两个不一样的概念:

• 第一种联邦学习,旨在解决云 + 端的训练过程当中,端上的隐私不要被暴露的问题,是一个To C + 数据水平切分的场景。除了保护端上的数据隐私外,其重点还在于如何解决训练过程当中,端自身可能掉线等问题。
• 第二种联邦学习则主要用于解决To B场景中各方隐私不泄露的问题,便可以应用于数据的水平切分场景,也能够应用于数据垂直切分的场景。

它们侧重于不一样的数据共享场景,采用不一样的技术,相比之下,蚂蚁金服的共享学习兼容多种安全计算技术,而且支持多种机器学习算法和使用场景。

除此以外,共享学习和联邦学习的差别在于:

  1. 联邦学习只解决数据不出域的状况,这就限制了其可使用的技术(只有严格的MPC算法才符合这个要求),而共享学习目前基于TEE的集中式共享学习技术,是联邦学习没有涉及的;
  2. 联邦学习讲究的是参与各方的“身份和地位”的相同,因此叫联邦;而共享学习则不强调各共享方的地位对等,在不少场景下,不一样的参与方是拥有不一样的角色的。

目前,数据共享下的机器学习仍然还有不少可突破的地方,这些不一样只是对当前状态的一个比较,但愿你们能对共享学习有更好的理解。

将来展望

让数据孤岛在安全环境下进行链接、合做、共创、赋能,是蚂蚁金服共享机器学习的核心使命。

共享机器学习做为一个安全与AI的交叉学科,正在愈来愈受到关注,尤为是在金融行业,有着广阔的应用空间。可是,这个领域的各项技术,也远未到成熟的阶段。咱们团队通过两年的摸索,也只是取得了阶段性的一些成果,在算法的计算性能以及支持算法的多样性等各个方面,还有一段路要走。

9月27日杭州云栖大会,蚂蚁金服将向外界首次分享共享学习的理念和实践,欢迎届时关注。后续咱们也会分享更多共享学习方面的研究进展及实践经验, 欢迎业界同仁交流探讨,共同探索更多更强的数据孤岛解决方案,推动数据共享下的机器学习在更多场景下落地。


原文连接 本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索