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
Ray在蚂蚁大规模生成落地中的优化与实践相关推荐
- 机器学习在基于 URL 的客户端监控分析中的优化和实践
本文首发于"Shopee技术团队" 摘要 传统的客户端监控分析场景中,采用按照具体的 URL 进行统计分析的方法,在面对一个应用可能会访问成千上万条 URL 时,结果就差强人意,不 ...
- JDK8 JVM参数与实际环境中的优化配置实践
如何配置我们的JVM呢,首先我们需要知道JVM的参数有哪些,然后根据这些参数的意义去分析自己的程序的JVM需要的配置.可以事先做一些尝试,再逐步调优,这个调优也是一个过程,没有足够的经验而做到一步到位 ...
- AI发展进入2.0时代!英特尔在落地中总结4大经验、分享7个案例
欧凯 发自 凹非寺 量子位 报道 | 公众号 QbitAI AI发展和竞争,已经来到2.0时代. 这是一个落地为王关键的阶段. 在2019上海世界人工智能现场,谈论最多的话题也是AI落地和实践经验. ...
- 蚂蚁大规模 Kubernetes 集群无损升级实践指南【探索篇】
文|王连平(花名:烨川 ) 蚂蚁集团高级开发工程师 负责蚂蚁 Kubernetes 集群容器交付 专注于集群交付能力.交付性能及交付 Trace 等相关领域 本文 12623 字 阅读 20 分钟 - ...
- 免费下载来自阿里巴巴 双11 的《云原生大规模应用落地指南》
来源|阿里巴巴云原生公众号 复制链接到浏览器完成下载或分享:https://developer.aliyun.com/topic/download?id=1055 11 月 11 日零点零分 26 秒 ...
- 攀登规模化的高峰 - 蚂蚁集团大规模 Sigma 集群 ApiServer 优化实践
文|唐博(花名:博易 蚂蚁集团技术专家) 谭崇康(花名:见云 蚂蚁集团高级技术家) 本文 10316 字 阅读 18 分钟 ▼ 蚂蚁集团运行着全球最大的 Kubernetes*(内部称为 Sigm ...
- 大规模MIMO系统中基于CSI的卷积神经网络定位
来源:投稿 作者:小灰灰 编辑:学姐 论文标题:CSI-based Positioning in Massive MIMO systems using Convolutional Neural Net ...
- 基于深度学习的大规模vSLAM场景中的鲁棒视觉位置识别
Towards a Robust Visual Place Recognition in Large-Scale vSLAM Scenarios Based on a Deep Distance Le ...
- 实时智能决策引擎在蚂蚁金服风险管理中的实践
摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办.金融智能专场分论坛上 ...
最新文章
- android界面之美---自定义网络请求进度加载对话框
- JVM实战与原理---Class文件结构
- Android 自定义WebView弹窗及屏蔽弹窗
- 记事本和textarea中的换行
- H3C-IMC 自动发现功能如何使用
- Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net j
- 【转】所需即所获:像 IDE 一样使用 vim
- 大众点评App的短视频耗电量优化实战
- TP-LINKTL-WR845N和腾达W311R怎么设置wds桥接
- [Ant]Note of develop java with Ant
- 桌面文件不见了怎么恢复,用它不慌张!
- HDTune硬盘检测工具
- word一键生成ppt 分页_word怎么分页,这3种方法简单快捷
- CCIE-重认证-300-410-补充题库-必须的哟
- 转:一个情绪稳定的人背后,都是高情商和大格局
- mand-mobile TabPicker 多级联动选择
- 【教程】Ubuntu20.04 + VirtualBox 各种软件环境安装
- python表达式_Python的表达式写法
- RTKLIB2.4.3中一些问题的修复---RTKLIB学习系列文章(二)
- 机器学习(第二章)—— 模型评估