关键概念#
本节概述了 Ray 的关键概念。这些原语共同作用,使 Ray 能够灵活地支持广泛的分布式应用程序。
任务#
Ray 允许在独立的 Python 工作者上异步执行任意函数。这些异步 Ray 函数被称为“任务”。Ray 使任务能够根据 CPU、GPU 和自定义资源指定其资源需求。这些资源请求由集群调度器用于在集群中分配任务以实现并行执行。
请参阅 任务用户指南。
演员#
Actor 将 Ray API 从函数(任务)扩展到类。Actor 本质上是一个有状态的工作者(或服务)。当一个新的 Actor 被实例化时,会创建一个新的工作者,并且 Actor 的方法会被调度到该特定工作者上,并且可以访问和修改该工作者的状态。与任务类似,Actor 支持 CPU、GPU 和自定义资源需求。
请参阅 演员用户指南。
对象#
在 Ray 中,任务和角色创建并计算对象。我们称这些对象为 远程对象 ,因为它们可以存储在 Ray 集群的任何地方,我们使用 对象引用 来引用它们。远程对象缓存在 Ray 的分布式 共享内存 对象存储 中,集群中的每个节点都有一个对象存储。在集群设置中,一个远程对象可以存在于一个或多个节点上,与持有对象引用的对象无关。
请参阅 对象的用户指南。
放置组#
放置组允许用户在多个节点上原子性地保留一组资源(即,集体调度)。它们可以用于调度Ray任务和角色,尽可能紧密地打包以提高局部性(PACK),或分散开来(SPREAD)。放置组通常用于集体调度角色,但也支持任务。
请参阅 放置组用户指南。
环境依赖#
当 Ray 在远程机器上执行任务和角色时,它们的环境依赖(例如,Python 包、本地文件、环境变量)必须可用,以便代码能够运行。为了解决这个问题,你可以(1)使用 Ray 集群启动器 提前在集群上准备你的依赖,或者(2)使用 Ray 的 运行时环境 即时安装它们。
请参阅 环境依赖的用户指南。