Ray:Core
关键概念
本节概述Ray的关键概念。这些原语一起工作,使Ray能够灵活地支持广泛的分布式应用程序。
任务Tasks
Ray允许任意函数在不同的Python工作器上异步执行。这些异步Ray函数被称为“Tasks”。Ray使Task能够根据cpu、gpu和自定义资源来指定它们的资源需求。集群调度器使用这些资源请求来跨集群分发任务以实现并行执行。
演员Actors
Actors将Ray API从函数(任务)扩展到类。参与者本质上是一个有状态的worker(或server)。当一个新的actor被实例化时,一个新的worker被创建,并且actor的方法被安排在那个特定的worker上,并且可以访问和改变那个worker的状态。和Task一样,Actor也支持CPU、GPU和自定义资源需求。
对象Object
在Ray中,Task和Actor创建和计算Object。我们将这些Object称为remote objects
,因为它们可以存储在Ray集群中的任何位置,我们使用引用来引用它们。Remote objects缓存在Ray的分布式共享内存对象存储中,集群中的每个节点都有一个对象存储。在集群设置中,remote objects可以存在于一个或多个节点上,与谁持有对象ref无关。
Placement Groups
Placement Groups允许用户自动地跨多个节点保留资源组(即,组调度)。然后,可以使用它们来调度Ray Task和Actor,它们按照位置(PACK)尽可能紧密地打包,或者分散(spread)。位置组通常用于安排Actor,但也支持Task。
环境的依赖关系
当Ray在远程机器上执行Task和Actor时,它们的环境依赖项(例如Python包、本地文件、环境变量)必须可用来运行代码。为了解决这个问题,你可以(1)使用Ray cluster Launcher提前准备你对集群的依赖,或者(2)使用Ray的运行时环境来动态安装它们。