查看原文请移步: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

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

  1. 机器学习在基于 URL 的客户端监控分析中的优化和实践

    本文首发于"Shopee技术团队" 摘要 传统的客户端监控分析场景中,采用按照具体的 URL 进行统计分析的方法,在面对一个应用可能会访问成千上万条 URL 时,结果就差强人意,不 ...

  2. JDK8 JVM参数与实际环境中的优化配置实践

    如何配置我们的JVM呢,首先我们需要知道JVM的参数有哪些,然后根据这些参数的意义去分析自己的程序的JVM需要的配置.可以事先做一些尝试,再逐步调优,这个调优也是一个过程,没有足够的经验而做到一步到位 ...

  3. AI发展进入2.0时代!英特尔在落地中总结4大经验、分享7个案例

    欧凯 发自 凹非寺  量子位 报道 | 公众号 QbitAI AI发展和竞争,已经来到2.0时代. 这是一个落地为王关键的阶段. 在2019上海世界人工智能现场,谈论最多的话题也是AI落地和实践经验. ...

  4. 蚂蚁大规模 Kubernetes 集群无损升级实践指南【探索篇】

    文|王连平(花名:烨川 ) 蚂蚁集团高级开发工程师 负责蚂蚁 Kubernetes 集群容器交付 专注于集群交付能力.交付性能及交付 Trace 等相关领域 本文 12623 字 阅读 20 分钟 - ...

  5. 免费下载来自阿里巴巴 双11 的《云原生大规模应用落地指南》

    来源|阿里巴巴云原生公众号 复制链接到浏览器完成下载或分享:https://developer.aliyun.com/topic/download?id=1055 11 月 11 日零点零分 26 秒 ...

  6. 攀登规模化的高峰 - 蚂蚁集团大规模 Sigma 集群 ApiServer 优化实践

    文|唐博(花名:博易 蚂蚁集团技术专家) ​ 谭崇康(花名:见云 蚂蚁集团高级技术家) 本文 10316 字 阅读 18 分钟 ▼ 蚂蚁集团运行着全球最大的 Kubernetes*(内部称为 Sigm ...

  7. 大规模MIMO系统中基于CSI的卷积神经网络定位

    来源:投稿 作者:小灰灰 编辑:学姐 论文标题:CSI-based Positioning in Massive MIMO systems using Convolutional Neural Net ...

  8. 基于深度学习的大规模vSLAM场景中的鲁棒视觉位置识别

    Towards a Robust Visual Place Recognition in Large-Scale vSLAM Scenarios Based on a Deep Distance Le ...

  9. 实时智能决策引擎在蚂蚁金服风险管理中的实践

    摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办.金融智能专场分论坛上 ...

最新文章

  1. android界面之美---自定义网络请求进度加载对话框
  2. JVM实战与原理---Class文件结构
  3. Android 自定义WebView弹窗及屏蔽弹窗
  4. 记事本和textarea中的换行
  5. H3C-IMC 自动发现功能如何使用
  6. Atitit. servlet 与 IHttpHandler  ashx  listen 和HttpModule的区别与联系 原理理论 架构设计   实现机制    java php c#.net j
  7. 【转】所需即所获:像 IDE 一样使用 vim
  8. 大众点评App的短视频耗电量优化实战
  9. TP-LINKTL-WR845N和腾达W311R怎么设置wds桥接
  10. [Ant]Note of develop java with Ant
  11. 桌面文件不见了怎么恢复,用它不慌张!
  12. HDTune硬盘检测工具
  13. word一键生成ppt 分页_word怎么分页,这3种方法简单快捷
  14. CCIE-重认证-300-410-补充题库-必须的哟
  15. 转:一个情绪稳定的人背后,都是高情商和大格局
  16. mand-mobile TabPicker 多级联动选择
  17. 【教程】Ubuntu20.04 + VirtualBox 各种软件环境安装
  18. python表达式_Python的表达式写法
  19. RTKLIB2.4.3中一些问题的修复---RTKLIB学习系列文章(二)
  20. 机器学习(第二章)—— 模型评估

热门文章

  1. strip,lstrip,rstrip,sprit(字符串处理)
  2. 界面设计方法 (1) — 1.界面的概念与分类
  3. 算法工程师与软件开发工程师的区别
  4. 【Day12-Stream流Map集合】
  5. maven的创建与配置和加载依赖
  6. 判断平面多边形的凹凸性
  7. 国外10个优秀域名工具站点 帮助搜索好域名
  8. Redis List命令大全
  9. SYN攻击原理以及防范技术
  10. python中定义变量有引号和单引号_说说Python 单引号、双引号、三引号的区别?...