Ray是面向增强学习场景的分布式计算框架,相关介绍参考博客。
本篇文章主要对 Ray中 remote函数的调度以及 Actor抽象的放置进行介绍。
一、Remote函数的调度
1. Remote函数的定义
Remote函数时Ray分布式计算中的核心概念,一般如下所示:
@ray.remote
def add(a, b):
return a + b
id_c = add.remote(a, b)
c = ray.get(id_c)
2. Remote函数的执行
由上不难发现,Remote函数定义与普通的Python函数定义非常相似,只是多了@ray.remote装饰器。那么它具体执行时和普通函数有什么区别呢?
Ray采取的是自下而上的分布式调度器,当提交任务到worker节点时,首先由节点的local scheduler进行调度,在本节点运行,当本地节点不能满足运行的条件时,将任务推送到global scheduler由其调度。那么Ray的local scheduler是怎样判断是否该调度到本地节点还是上推到globa