如何融合不同计算范式?Ray在蚂蚁的规模化应用实践

指导语:随着互联网技术的发展 , 新技术不断出现 , 这产生了意想不到的新问题 。制作服务时 , 可能经常结合各种领域的技术深度 , 但由于各种原因这些技术往往很难结合 。蚂蚁集团基于开源的分布式计算框架Ray构筑融合引擎 , 在不同场合解决这个问题 , 取得了一定的成果 。现在让我们看看他们是怎么做到的

利用Ray构筑融合引擎

随着互联网的发展 , 人们倾向于使用新的计算模式来应对不同的场景 , 出现了OLAP引擎、图计算、流程计算、深度学习等新技术 。这意味着在解决一个问题时 , 可能需要两个或多个技术进行深度结合 。

Ray的使用也很简单,在目前比较流行的分布式框架,都有三个比较基础的分布式原语,分布式任务、对象和服务 。而常用的面向过程的编程语言中,也刚好有三个基本概念,函数、变量和类 。这三个编程语的基本概念正好可以对应分布式框架的原语 。Ray系统可以通过简单的变更实现其间的转换 。

但在将不同的技术结合起来时 , 会遇到很多挑战 。

●复杂系统的协调 。多个核心计算引擎组合时 , 系统的复杂性大幅度提高 , 工程师对复杂系统的协调难度也提高了

●性能优化 。在进行性能调整工作时 , 技术人员需要面对各个领域的计算引擎 , 使系统难以突破性能瓶颈

●开发效率 。工程师需要熟悉多个发动机如何合作 , 即使发生问题也难以定位和调查 , 开发效率下降 。

这是蚂蚁集团开发融合计算引擎的原因 , 其目标是融合各种范围的引擎 , 提供更好的服务 , 融合计算是基于分布式计算框架Ray开发的 , 具有以下特性:

●简单通用的API 。

●同时支持多个编程语言 。

●弹性和可定制的任务日程 。

●分布式状态管理 。

●易于使用的错误处理和故障恢复 。

●低成本的DevOps 。

Ray是伯克利大学RiseLab实验室开始的 , 蚂蚁金融服务共同参与的开源分布式计算框架 , 其初衷是使分布式系统的开发和应用更加简单 。Ray作为计算框架具有敏捷的调度机制 , 也可以根据计算对资源的使用需求实现异构调度 。

Ray的使用也很简单 , 现在流行的分布框架有三个比较基础的分布原语、分布任务、对象和服务 。在常用的编程语言中 , 正好有三个基本概念、函数、变量和类别 。这三个编程语的基本概念正好可以对应分布式框架的原语 。Ray系统可以通过简单的变更实现其间的转换 。

左侧是一个简单的例子 , 在这个函数之前添加@remote修饰符 , 可以将函数转换为分布任务 。任务通过.remote调用执行,返回值是一个变量,又可以参与到其他计算中 。

右边是另一个例子,通过加@remote修饰符的方式可以把一个类转变成服务 。类别中的方法可以通过.remote调用成为分布式任务 , 与函数的使用非常相似 。通过这种方式 , 可以实现从单个程序到分布任务的变化 , 将当地任务调度到远程机器进行 。

关于Ray的更多介绍 , 效率下降:蚂蚁金服如何通过融合计算改造在线机械学习

蚂蚁金融智能技术结构 , 融合计算运行在Kubernetes集团上 , Ray作为分布式计算的基础设施 , 支持动态图计算、在线机械学习等应用框架

蚂蚁深入参与Ray开源项目的开发 , Ray社区贡献居前两位 。截至2020年10月 , 前25名贡献者中有8名蚂蚁工程师 , 22%的代码由蚂蚁集团贡献 。蚂蚁为Ray贡献了包括Java API、容错性GCS等功能特性,并为Ray在大规模落地实践提供了宝贵经验 。

Ray在蚂蚁集团的规模化应用实践

蚂蚁在18年Ray项目初期参与项目开发 , 长期与Ray开源社区密切合作 , 深入参与Ray核心开发 。在蚂蚁内部 , 我们建立了实时图计算、在线计算、在线机械学习等计算平台 , 以及多个直接运行在Ray上的分布式业务系统 。这些系统广泛应用于微型贷款、风力控制、智能营销、金融智能、金融核心等核心业务领域 , 多次顺利支持双十一大促进 。

下面简要介绍Ray在蚂蚁集团的规模化应用实践 。

首先是在线机器学习系统 。

传统的在线机器学习系统是一系列子系统组成的任务管道,原始的实时数据需要流经过滤、采样、特征工程、训练和部署等系统,才能发挥作用 。这给我们带来了数据一致性、系统稳定性、多平台等挑战 。

蚂蚁基于Ray开发从端到端的在线机械学习结构 , 如下图所示 。

该结构包括在线机械学习框架中实时数据处理、分布式训练和模型配置三个部件 , 通过Ray的分布式计算特性 , 支持跨编程语言的开发、exactlyonce、自动化训练和模型更新等 。

在这个在线学习系统的运行中 , 可以看到实时数据处理和训练和配置高度集成 , 外部实时数据转换为微量处理 , 实时同步交给训练组件进行配置 , 这个设计可以最大限度地提高系统的效率 。这套系统同时支持数据流API和SQL两种调用方式,进一步为业务方降低了使用的学习成本 。

另一个落地场景是大规模并行处理 。

随着业务场景和需求的不断深化扩展,许多在线应用开始承担分布式计算功能,然而,现有的应用架构缺乏分布式计算系统中的任务调度、集群管理、灵活容错 FO 等能力,导致在业务规模化过程中,容易出现集群负载不均、单机瓶颈、资源无法动态隔离等问题 。

银行卡支付一直是支付工具中重要的组成部分 。银行卡业务涉及各类金融机构渠道,涉及的机构众多,各个机构的能力各不相同 。如何保障用户在大促进期间的高支付成功率 , 使用户的大促进体验像丝一样顺畅有很大的挑战 。银行卡支付发生异常时 , 必须尽快做出正确的决定 , 实施应变操作 , 及时减少异常造成的损失 。传统监视警报提供的秒级指标查询延迟较高 , 特别是对于决策常用的成功率联合计算指标 , 延迟超过1分钟 , 决策也只能实现分级熔断能力 , 稳定性也不能满足大的SLA要求 。

为了解决上述问题 , 我们建立了Ray-MPP在线计算系统 , 具有端到端极低延迟、高可用性、数据准确性保障等特点 。

一方面 , 可以很好地处理在线计算应用程序中大规模细粒度任务调用的场景 , 另一方面发挥Ray在运行时动态扩展的特点 , 使系统具有更好的运行时资源动态隔离能力 , 在处理任务时具有更强的灵活性 。

Ray-MPP应用于金融网络的金融决策链接 , 为金融决策指标查询计算和决策脚本计算提供分布式计算能力 。经过实际场景的检验 , Ray-MP在计算性能、稳定性、研究开发性能等各个方面都提高了业务 。

未来展望

目前 , Ray项目发展势头良好 , 备受瞩目 。除了蚂蚁 , Uber、Intel、微软、打工跳跃等公司也积极参加Ray社区 。同时 , 越来越多的开源项目融入Ray生态 。

未来 , 我们将从扩展性、性能、调度、弹性、生态建设等方面继续提高Ray的能力 , 使Ray成为稳定、高效、易用、通用的分布式计算机箱 , 期待与业界和社区进行更多的交流探讨 。

同时 , 我们也向应届毕业生招募2021年的实习生 , 欢迎推荐和推荐 。

团队介绍

我们是蚂蚁集团数据技术部 , 是整个蚂蚁集团数据引擎的底盘 , 保护整个集团的业务发展 。我们打造的蚂蚁集团计算存储基础架构,其技术核心包括金融大数据的开放计算体系,金融级大规模图计算存储,金融智能机器学习平台及系统架构,以及适合金融场景的多模融合计算引擎等方面的研发和攻关 。

依托蚂蚁集团丰富的数字金融和数字生活场景,我们致力于打造新一代大数据和AI基础设施 。

我们的团队横跨美国硅谷和中国北京、上海、杭州和成都 。我们追求的工程师文化是开放、简单、反复、追求效率、技术解决问题!

你想要的我们都有!什么?

●平台好:顶级工程师团队、超大规模数据计算平台、Stanford、Berkeley等一流大学的合作伙伴、SQLFlow等多个自我研究和开源项目 。

●成长速度:面对罕见的一流计算场景 , 挑战世界技术问题 , 主管兄弟带你去 。

●福利好:提供业内竞争力高的工资 , 考虑各种补助金 。

● 活动多:生日会、工程师节日、阿里日、战役庆功、各种团建来了你就知道了!

招聘需求

面向对象:2021.11202.10期间毕业的应届毕业生

●研发技术人员:C/C级、Java、Python、To

●算法技术人员:机械学习

技术方向:图计算、分布式计算、分布式计算、分布式存储、数据库、人工智能

工作城市:杭州、北京、上海、上海、成都

应聘方向:图计师:图计算、分布式计算、分布式、分布式计算、分布式、分布式、分布式、数据库、人工智能

工p>工智能

【如何融合不同计算范式?Ray在蚂蚁的规模化应用实践】以最帅/最美的姿势完成招聘过程 , 期待报价的到来!

    推荐阅读