Ray在蚂蚁大规模生成落地中的优化与实践

查看原文请移步:Ray在蚂蚁大规模生成落地中的优化与实践

目录

动态图计算

        融合流计算、图计算两种计算方式

        应用于风控、数据血缘分析、图机器学习等场景

在线机器学习

        在一个系统中运行整个在线学习pipeline; 流计算、模型训练、模型服务。

        应用于各种推荐、广告系统。

在线计算

        实现在线服务中执行分布式计算。

        应用于金融决策系统

分布式运筹规划

        允许用户快速开发高可用、高可靠的分布式运筹算法

        应用于在线资源分配问题。

(WIP)Python大规模数据处理(Mars  github.com/marsproject/mars )

        把Numpy、Pandas、Scikit-learn分布式化。

上文总结核心:Ray作为所有分布式系统的统一底盘!

通过一张图来看看Ray在蚂蚁金服的规模

图片

2018年Ray的架构图如下:

图片

接下来将从四个部分来讲解Ray在蚂蚁遇到的挑战以及优化!

对于目前来说、在线学习需要被用到很多场景,Ray在 在线学习中的流式数据处理中需要高性能的Actor call

图片

但是所有的actor tasks都需要经过Raylet,所有Raylet性能瓶颈就成为了在线学习中面临的挑战。在这个问题上,我们通过Direct模式对actor call进行优化,如下图所示:

图片

Actor 之间直接通过gRPC进行通信。

Caller通过Redis Pub/Sub获取Callee的地址。

RPC层使用C++实现

在后续版本中,Ray社区也把normal task改为了Direct模式

性能提升如下图:

Actor call throughput benchmarks (java)

图片

当对其他RPC进行改进时,如Ray call核心链路代码优化;减少tasj spec拷贝;Java JNI cache;使用单独的IO线程,最终性能提升如下:

图片

在动态图计算系统中,当一个Actor故障时,需要重启所有Actor

需求:快速、可靠的Actor故障恢复机制。

图片

如上图所示:

        Actor可能被重复创建多次,对于大集群、或者网络环境不佳的情况下,这种问题尤其严重,而对于Workaround:调高timeout,就会牺牲Actor重启速度。

基于GCS的Actor管理机制

图片

对于上述问题,我们使用GCS Service进行优化,架构设计如下图所示:

图片

设计后新的GCS架构 = RPC service + 插件化的后端存储。

    实现了快速、可靠的actor故障恢复机制

            100%重启成功率;

            重启速度:1 actor: ~1.5秒;10k actors: ~70s

    GCS容错:

            GCS Service 可以从后端存储中恢复数据。

            不同公司可以自由选择可靠的后端存储。

    其他基于GCS service的功能:

            节点管理。

            Job管理

            Placement group。

            优化actor调度策略。

在生产环境中,经常会因为环境问题或者偶发bug导致故障。随着集群规模不断扩大,Ray也变得不稳定。集群数量不断增加,导致运维困难。

系统容错能力

Ray本身应该具备容错能力:

        GCS:GCS service从后端恢复状态。

        Raylet:daemon进程监控并重启Raylet。

        节点:节点故障时,K8s operator 会自动补充节点。

使用Ray,用户应该很容易地写出具备容错能力的代码:

        Tasks/actors:retry/restart API。

        Placement group:实现了自动的故障恢复机制。

        针对常见的几种故障处理场景,我们实现了一些library。例如:多个actor同生同死。

提升单个Ray集群的扩展能力

扩展性优化:

        分离心跳和资源上报请求。

        优化数据结构,减少RPC和PubSub消息的大小

        减少组件之间的连接数

        允许多个java actor 共享一个JVM进程。

目前,单个Ray集群可以支持上千节点和上万actor。

部署模式优化

图片

问题:

        分布式系统通常难以debug。

        Ray core团队通常需要耗费大量时间帮助用户debug

        如何能够让用户更容易地使用Ray?

新的dashboard

        各种状态信息。

                资源使用率,node/actor状态,cluster/job配置等。

       Log/events

              (WIP)基于log和event数据,自动分析错误

        集成常用的debug工具

                C++/Python/java堆栈工具,profiling工具,内存分析工具等。

图片

图片

Job提交

简化Job提交流程:

        用户可以使用web平台或者RESTful接口,自主提交job。

        提交用户时,用户可以直接填写依赖,Ray会自动下载到集群。

        针对Python/Java,实现了依赖的缓存。提交、启动一个Job一般只需要几秒钟。

正在和社区的Runtime env功能集成。

以上就是Ray在蚂蚁金服中应用的讲解内容!觉得好的,点赞,在看,分享三连击,谢谢!!!

 找各类大数据技术文章和面经,就来

<3分钟秒懂大数据>

随时更新互联网大数据组件内容

专为学习者提供技术博文

快和身边的小伙伴一起关注我们吧!

作者简介:逆流而上Mr李,秋招7offer,CSDN博客:https://blog.csdn.net/weixin_38201936

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

3分钟秒懂大数据

你的打赏就是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值