ray 分布式, 工作节点、reylet、 主节点、GCS

工作节点、reylay

每一个工作节点有一名reylet组件,负责管理工作进程,在工作节点上的任务共享reylet,负责任务调度和对象存储(如rey.put),

  • 对象存储在节点内形成共享内存池,并确保worker进程可以访问其它节点的对象,对象存储由Plasma实现,
  • 调度器负责资源管理工作,管理cpu、gpu、内存等信息,如果资源不足, 则任务会进入等待队列;另外调度器还关注任务依赖,调度器在对象存储中查找依赖项,如果所需的值在此节点的对象存储中不可用,调度器将与其它节点通信,拉去依赖项,一旦依赖项满足、资源足够,并找到worker执行任务,就安排任务进行执行。
  • worker进程存储调用的所有任务任务返回的对象引用元数据,叫所有权
import ray

# task拥有val和task_owned的所有权,
# 主程序(驱动程序)拥有val、res、task的所有权

@ray.remote
def task_owned():
    return 

@ray.remote
def task(arg):  
    res_owned = task_owned.remote()
    return 

val = ray.put("value")
res = task.remote(val)

主节点、GCS

如图,主节点上也可以由工作进程,同时主节点运行驱动程序; 主节点上有GCS(Global Control Services)全局控制服务,它存储全局信息,同时与每个Raylet保持心跳,同时还存储执行器所在的位置。

posted @ 2025-05-23 13:14  xiezhengcai  阅读(71)  评论(0)    收藏  举报