关键概念#
本节概述了 Ray 的关键概念。这些基本组件协同工作,使 Ray 能够灵活地支持广泛的分布式应用程序。
任务#
Ray 允许任意函数在单独的工作进程中异步执行。这些异步 Ray 函数称为任务。Ray 允许任务指定它们在 CPU、GPU 和自定义资源方面的资源需求。集群调度器使用这些资源请求将任务分发到集群中进行并行执行。
请参阅任务用户指南。
Actor#
Actor 将 Ray API 从函数(任务)扩展到类。Actor 本质上是一个有状态的工作进程(或服务)。当您实例化一个新的 actor 时,Ray 会创建一个新的工作进程,并将 actor 的方法调度到该特定工作进程上。方法可以访问和修改该工作进程的状态。与任务一样,Actor 支持 CPU、GPU 和自定义资源需求。
请参阅Actor 用户指南。
对象#
任务和 Actor 创建对象并计算对象。您可以将这些对象称为远程对象,因为 Ray 将它们存储在 Ray 集群中的任何位置,您使用对象引用来引用它们。Ray 在其分布式共享内存对象存储中缓存远程对象,并在集群中的每个节点上创建一个对象存储。在集群环境中,远程对象可以存在于一个或多个节点上,而与持有对象引用的主体无关。
请参阅对象用户指南。
放置组#
放置组允许用户原子地跨多个节点预留资源组。您可以使用它们来调度 Ray 任务和 Actor,以尽可能接近以实现局部性(PACK),或者分散开(SPREAD)。一个常见的用例是进行 Actor 或任务的组调度。
请参阅放置组用户指南。
环境依赖#
当 Ray 在远程计算机上执行任务和 Actor 时,它们的环境依赖项,例如 Python 包、本地文件和环境变量,必须在远程计算机上可用。要解决此问题,您可以 1. 使用 Ray 的集群启动器提前在集群上准备好您的依赖项 2. 使用 Ray 的运行时环境在运行时安装它们。
请参阅环境依赖用户指南。