Ray入门指南(1)----ray分布式框架的介绍

本文是Ray分布式框架的入门介绍,详细阐述了Ray如何实现异步任务的平行执行,以及如何通过对象ID处理不可变的远程对象。Ray支持在单机和集群上高效执行代码,涉及多worker进程、任务分配、对象存储和远程函数。通过`ray.init()`启动Ray,`ray.put()`和`ray.get()`用于对象与ID的转换,而远程函数(remote functions)支持异步计算,表达任务间的依赖关系,实现并行执行。
摘要由CSDN通过智能技术生成

使用ray,你需要解决以下两个问题:

1.ray执行异步任务时是怎样实现平行的。(ray集群中每个节点共享本节点本地存储,节点中worker并行运行,集群间worker的并行)

2.ray是怎样使用对象ID来表示不可变对象的远程对象的。(任务执行前,对象值已存入存储对象中,任务执行是通过对象ID调用存储对象的)

综述

Ray是一个分布式执行引擎。同样的代码可以在一台机器上实现高效的多处理,也可以在集群是用于大型的计算。

当我们使用Ray时,涉及到多个进程。

  • 多worker进程执行多个任务并将结果存储在对象存储中,每个worker都是一个独立的进程。
  • 每个节点上的对象存储都将不可变的对象存储存储在共享内存中,允许worker以少量的复制和并行化有效的共享同一节点上的存储对象。
  • 每一节点上的本地调度将任务分配给同一节点上的worker(一个节点上的本地调度把任分配给本节点的worker)
  • 一个driver是用户控制的python进程。例如,如果用户正在运行脚本或者使用python shell,那么driver就是运行脚本或者shell的python进程。driver和worker很相似,他们都可以提交任务给本地调度并从对象存储中获取对象,但是不同之处是本地调度不会将任务分配给driver执行。
  • Redis服务器维护系统的大部分状态。例如,它跟踪哪些对象位于哪些机器上,以及任务规范(但不包括数据)。另外可以对有问题的目标进行直接的质问(就是错误或者警告提示)。

运行Ray

启动python并运行一下命令:

import ray
ray.init()

ray启动了。(其中ray.init()方法可以加参数,具体请参考Ray相关的API

不可变的远程(remote)对象

在Ray中,我们可以在对象上创建和计算。我们将这些

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值