提效降本:蚂蚁金服如何用融合计算改造在线机器学习

  • 时间:
  • 浏览:0

作者:鲍焕军去年春节期间支付宝推出的集五福的活动可谓风靡一时,每张福卡背面时要刮刮卡,上端有来自蚂蚁金服、阿里巴巴以及合作法律法子 法律法子 伙伴的上百种权益。集五福的活动集中在春节前的几天,具有很强的时效性。却说如可实

作者:鲍焕军

去年春节期间支付宝推出的集五福的活动可谓风靡一时,每张福卡背面时要刮刮卡,上端有来自蚂蚁金服、阿里巴巴以及合作法律法子 法律法子 伙伴的上百种权益。集五福的活动集中在春节前的几天,具有很强的时效性。却说如可实现权益和投放人群的自动匹配,处置系统的冷启动疑问,优化转化率和提升用户体验,就成了就让在线学习的优化疑问。

就让大家搭建就让就让的系统时要的模块非常比较复杂。大家时要日志架构设计 、数据聚合、样本的拼接和采样等流处置任务,时要对接模型训练、模型验证等机器学习模块,时要有把模型实时加载的模型服务,还时要许多的配套设施等等。众多模块的衔接极大地增加了系统的比较比较复杂。

意味着涉及的系统比较多,大家就让的系统遇到了比较多的疑问。比如大促时为了保证高优链路的稳定性,上游许多数据处置的链路就会被降级了,但下游同学不想说知情。另外就让很常见疑问的是流批逻辑不一致,时要离线形态学 来训练基准模型,共同在线计算的形态学 来对模型进行实时更新。这就让模块就让在离线就让在线,就让突然出现过处置逻辑的细微差别对业务效果造成了很大的影响。

总结下来,大家就让遇到的坑都促进归结为三类:

 SLA:整个链路的SLA会受到每个模块的SLA的影响,并随着模块的增多而放大,稳定性成为制约业务发展的重要因素。

 系统速率单位:模块之间的衔接多数是通过数据的落盘来进行,模块间的调度通过系统调度来实现,造成不想说要的I/O、计算和网络开销。

 开发和运维的成本:各个模块风格迥异,开发模式、计算框架、甚至代码风格时要一致,开发和运维对接时时要花却说时间去熟悉系统,降低业务开放的速率单位。

就让理想的系统应该提供那此样的能力呢?都促进从“稳快简”就让方面来讲:首先从数据来讲它时要保证数据和计算一致性,实现整个链路端到端的SLA,数据一致性和链路的稳定是保障业务稳定的基础。第二是大家时要去优化系统速率单位,大家希望把这十有好多个系统的衔接转加带系统内部人员的衔接,希望把那此作业调度转加带任务的调度,通过就让转化大家希望把计算与计算之间协同调度,从而提高系统速率单位和降低网络速率单位使用的目的。就让融合的系统也都促进对开发和运维提供非常大的便利,就让时要对接十有好多个系统,现在却说对接就让系统就都促进了。就让大家在应急的就让时要回溯好有好多个业务来发现疑问,现在融合在共同的系统调试也会更加容易。

在线机器学习最外层时要透出数据处置、模型训练、模型服务然还都还还可以力。这然还都还还可以力反映到对计算引擎框架上的需求是敏捷的调用机制、比较灵活的资源管控,以及比较完善的容错机制。上层的系统往往是通过不同编程语言来实现的,而且还时要有多语言接口。通过对底层需求的考量以及现在各框架的特点,最后大家选取了Ray为融合计算的底座。

Ray是由伯克利大学RiseLab实验室发起,蚂蚁金服共同参与的就让开源分布式计算框架,它提出的初衷在于让分布式系统的开发和应用促进更加简单。Ray作为计算框架都促进帮大家实现上端“稳快简”就让目标。Ray作为计算框架具有敏捷的调度机制,用它都促进一秒钟进行上百万次任务调度,它也都促进根据计算对资源使用的需求实现异构调度。

在目前比较流行的分布式框架,时要就让比较基础的分布式原语,分布式任务、对象和服务。而大家常用的面向过程的编程语言中,也刚好有就让基本概念,函数、变量和类。这就让编程语基本概念刚好都促进和分布式框架的原语对应起来。在Ray系统中,都促进通过简单的改动,实现大家之间的转换。

左边是就让简单的例子,在你三种 函数前面时要加入就让“@remote”修饰符,就都促进把就让函数转加带为分布式任务。任务通过“.remote”调用执行,返回值是就让变量,又都促进参与到许多计算中。

右边是就让例子,通过加“@remote”修饰符的法律法子 都促进把就让类转变成服务。类中的法律法子 都促进通过“.remote”调用变成就让分布式任务,和函数的使用非常累似 。通过你三种 法律法子 都促进实现从单机多多多线程 到分布式任务的转变,把本地的任务调度到远程的机器上进行执行。

Ray上应该做为何会么会样的调度,衡量指标却说系统的速率单位疑问,系统的速率单位却说就让取决于计算和数据的组织法律法子 ,比如说大家要计算Add(a,b),首先你三种 函数在本地会被自动注册而且提供给本地调度器。就让通过全剧调度器和第四个节点的本地调度器共同协同工作,把A备份到第四个节点执行Add你三种 操作。它还都促进根据A和B的数据大小来进行进一步的调度和控制优化,A和B能与非 简单数据类型,促进与非 比较比较复杂的变量意味着矩阵。

Ray上端提供多语言API接口。意味着历史意味着,在蚂蚁金服内部人员流式计算使用最多的语言是Java,而机器学习建模比较普遍使用的语言是Python。我先希望重用Java语言实现的流处置算子,共同保留Python进行机器学习建模的便捷性。Ray上端提供就让的多元化支持就非常方便大家做你三种 事情,用户在上层开发的就让都促进都促进方便地使用Java和Python分别进行流处置和机器学习模型的开发。

对于在线机器学习来说,它最核心时要处置的疑问是要打通流计算和模型训练,就让们时要使用就让介质,你三种 介质促进比较方便的将两者衔接在共同。就让大家介绍Ray的有好多个特点,如提供多语言的接口、灵活的调动机制,这意味着这就让特点在Ray都促进否比较方便做你三种 事情,Ray都促进起到衔接的作用。数据处置的最后就让节点是流计算的输出,worker节点消费数据,是模型训练的输入。Ray就都促进通过调度机制把这就让计算调度在就让节点上,实现数据共享从而实现就让模式的打通。通过你三种 法律法子 不仅都促进兼容流计算和机器学习,也都促进将许多模式进行衔接。

计算中DAG概念最结束了是为了处置多阶段分布式计算的速率单位而提出的,主要思想是通过调度减少计算时的IO。而且就让的计算DAG,在任务执行的就让它就意味着选取了,但大家在机器学习的任务上端,却说就让大家会时要设计新的模型,意味着对模型的超参进行调试,大家希望看到那此模型能被加载到链路上,看到业务效果的共同又想要线上意味着有的模型的训练和服务被中断。在Ray系统内部人员,计算的过程中都促进动态的生成另外就让节点,大家都促进利用你三种 形态学 来增点和变,从而动态的对DAG进行局部修正。

在线系统和离线系统之间比较大的区别,在于意味着就让离线系统里的任务挂了,一般来说都促进通过重启机器的法律法子 来处置,但对在线系统来说,出于时效性的考虑,大家促进简单的通过重启机群回溯数据的法律法子 来处置。而且就时要有比较完善的容错机制。大家在模型训练的就让都促进利用Ray的Actor来拉起模型训练的worker和server节点。意味着worker意味着server节点占据 不健康状态,大家就都促进利用Actor的容错形态学 通过血缘关系来对数据和计算进行恢复,从而实现容错的训练。

大家比较追求链路的时效性,模型促进尽快的拟合实时数据里。而且追求时效性的共同也要保证整个链路的稳定性,在敏捷和敏感之间达到平衡。大家从就让方面,系统稳定性、模型稳定性、机制稳定性来保障整个链路的稳定性。

 系统稳定性,上端包括数据实时性和强一致性保障。

 模型稳定性,大家希望设计的模型促进拟合实时数据流,但共同要处置在线学习链路在各种不选取性因素下,如数据噪音,造成的效果退化。而且大家时要考虑在线形态学 和离线形态学 的组合,在模型设计上时要考虑到高度模型和浅层模型对数据的敏感性和噪音的容忍度。

 机制稳定性,赛马机制、快速回滚策略。

除了就让用Ray来实现融合以及它带来的好处,大家也做了非常多的模块建设,TF融合、稳定性保障、样本回流、延迟样本修正、数据共享、流批一体、端到端强一致、模型增量导出。大家把你三种 平台上线了支付宝的有好多个场景,从下面的有好多个数字都促进一探效果:

 99.9%的全链路SLA

 业务指标有2%到40%的提升

 几十分钟模型延迟到4、5分钟,而且都促进根据业务的需求进一步降低

 机器使用降低了100%

大家从去年8月份结束了建设,今年2月份结束了上线第就让场景,在支付线财富线也都取得了不错的效果,接下来大家会推广到蚂蚁金服的许多业务线上。

基于融合计算机器学习,它是融合计算和机器学习这三种模式的有机组合,实现优化资源共享。大家通过这两方面的探索初步验证了融合计算的框架,融合计与非 旨在数据共享来进行计算模式的兼容,融合的本质是开放,开放的基础是实现数据的互通,却说大家促进方便的实现各模式之间的数据互通,而且促进保障它们数字的实时性和端到端的一致性,就都促进实现比较复杂场景上端时要多种模式进行组合的计算。模块的衔接就像搭乐高积木一样,基本的模块意味着促进几种,而且搭建出比较复杂且多变的系统。

(本内容属于网络转载,文中涉及图片等内容如有侵权,请联系编辑删除)