关于分布式框架ray的一些细节

Ray是什么?

这里讲的很仔细和专业
一句话来说就是使用户能够更好利用多个节点进行多进程协同计算,类似于slurm这些,但是更高效和方便。

Ray怎么和python结合使用?

这里也有逐步的教程
可以使用最简单的代码,如初始化,@remote等修饰符完成功能。

理解的一些点:

ray是基于Node的,如果要进行分布式运算,需要绑定对应的ip:port,也就是参数address。当然,也可以不需要,直接在本地ray.init()也可以,这样ray获得的是本地的资源。

当我们进行在tmux中开启多个shell,那这时我们可以创建多个ray cluster,这是不冲突,因为这多个ray集群的port是不一样的,所以我们需要链接到哪个集群,就在ray.init()时指明地址。

关于如何配置ray集群,这个其实我还不太具体,因为感觉不同的地方用法各异,但一般需要结合一些资源调度的工具,然后给每个集群创建一个Node,这个node就有不同的port,然后我们需要给每个node分配资源。

指令实践

做了一些简单操作验证了一下。
在pip安装完ray之后,我们可以使用ray start开启一个ray节点,这里有两种启动方式,–head和–address,我个人理解,得现有head,其他节点或者其他worker再通过address来连接,一种master-worker的思路。

首先,在machine A 上执行:
ray start --head --port=7770 --num-cpus=1 --num-gpus=1
然后
python -c ‘’‘import ray;ray.init(address=“auto”);print(ray.available_resources())’’’
会发现此时环境中只有headA的1个gpu和1个cpu,然后集群中的node也只有一个。

接着,在machineA上继续执行:
ray start --address=10.124.241.147:7770 --num-gpus=1 --num-cpus=1
此时,连接到head,执行python指令,输出的环境信息表明集群有两个节点了,并且包含2 gpu和2 cpu。

再接着,在machineB上继续执行上面的指令,同样集群中又多了一部分资源。

所以,我们可以理解为这种连接方式实现了资源共享了,把n个节点的资源merge到了一起,实现分布式运算。

那么ray start方式有python的API吗,有的
ray.node.Node(params, head=True, shutdown_at_exit=True, spawn_reaper=True)
通过python脚本创建这样的node,我们machineB也成功加入了集群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值