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

 头条123   2025-05-17 13:05   1771 人阅读  0 条评论
如何      不同计算范式?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在蚂蚁集团的规模化应用实践。

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

本文地址:https://www.toutiao123.net/news/16613.html
版权声明:本文为原创文章,版权归 头条123 所有,欢迎 本文,转载请保留出处!