2026/4/17 18:02:43
网站建设
项目流程
展示型网站首页设计解析,门户网站demo下载,做网站公司选哪家,随州网络科技有限公司最近在看 verl 源码时#xff0c;看到其主要使用了 Ray 实现资源调度和分布式训练的能力#xff0c;然后看了下其他的强化学习框架#xff0c;也有很多框架使用了 Ray#xff0c;感觉 Ray 已经成为了现代强化学习领域实现分布式训练和资源调度的主流选择#xff0c;所以还…最近在看 verl 源码时看到其主要使用了 Ray 实现资源调度和分布式训练的能力然后看了下其他的强化学习框架也有很多框架使用了 Ray感觉 Ray 已经成为了现代强化学习领域实现分布式训练和资源调度的主流选择所以还是有必要了解下它的一些核心概念和特性这样看到相关代码时才能大概知道其作用。Ray 是什么“An open source framework to build and scale your ML and Python applications easily.”Ray 是由加州大学伯克利分校RISELabi开发的RISELab是大数据和AI领域顶尖的实验室Spark、vLLM 等也是出自这个实验室并且这个实验室的成员还创建了Databricks(Spark创始人)、Anyscale(Ray初创成员) 这样的知名公司。Ray 是一个开源的AI 计算引擎和统一框架用于轻松构建和扩展机器学习与通用 Python 应用程序。它提供了一套统一的、高性能的分布式计算原语支持从原型开发到生产部署的全生命周期。Ray由一个核心分布式运行时Ray Core和一组用于简化机器学习计算的人工智能库组成核心组件Ray 采用模块化设计包含多个高层库覆盖 ML 全流程组件功能关键能力Ray Core分布式 Python 基础任务Tasks、参与者Actors、对象存储Objects——构建任意分布式应用Ray Data数据加载与预处理高效、可扩展的数据摄取、转换、批处理支持文本、图像、LLM 等Ray Train分布式模型训练支持 PyTorch、TensorFlow、XGBoost、Hugging Face 等主流框架Ray Tune任意规模的超参数调优自动调参、实验管理、支持多种搜索算法Optuna, HyperOpt 等Ray Serve模型在线服务低延迟、高并发的模型部署支持 LLM、多模型组合、动态批处理Ray RLlib强化学习工业级 RL 算法库支持单智能体/多智能体、离线/在线训练✅ 所有组件均基于 Ray Core 构建共享同一套调度、容错、资源管理机制。Ray CoreRay Core 是 Ray 分布式计算框架的核心模块它提供了一组极简但强大的原语primitives用于构建和扩展通用的 Python 分布式应用能让你只需几行代码就能将普通的 Python 或 Java 函数及类转换为分布式的无状态任务和有状态参与者。主要包含三个核心概念Tasks任务远程执行的无状态函数。Actors参与者远程执行的有状态类实例。Objects对象存储在分布式对象存储中的数据。使用 TaskTask 是在 Ray 集群上并行化你的 Python 函数的最简单方式。要创建和运行一个任务使用ray.remote装饰函数使其成为可远程执行的任务。使用.remote()调用该函数而不是进行常规的函数调用使用用ray.get()从返回的future对象获取结果。# Define the square task.ray.remotedefsquare(x):returnx*x# Launch four parallel square tasks.futures[square.remote(i)foriinrange(4)]# Retrieve results.print(ray.get(futures))# - [0, 1, 4, 9]✅ 优势自动并行化、跨节点调度、容错。使用 ActorsTask 是无状态的而 Actor 则是有状态的Actor 在方法调用之间会保持其内部状态。当你实例化一个Ray Actor 时Ray 会在集群中的某个位置启动一个专用的工作进程Actor的方法在那个特定的工作进程上运行并且能够访问和修改其状态Actor 按照接收方法调用的顺序串行执行这些调用以保持一致性要创建和实例化 Actor用ray.remote装饰类创建远程 Actor 实例。每个 Actor 在独立进程中运行维护内部状态。方法调用也使用.remote()按提交顺序串行执行。# Define the Counter actor.ray.remoteclassCounter:def__init__(self):self.i0defget(self):returnself.idefincr(self,value):self.ivalue# Create a Counter actor.cCounter.remote()# Submit calls to the actor. These calls run asynchronously but in# submission order on the remote actor process.for_inrange(10):c.incr.remote(1)# Retrieve final actor state.print(ray.get(c.get.remote()))# - 10✅ 适用场景状态管理、模型服务、参数服务器等。ObjectsRay的分布式对象存储能高效地跨集群管理数据。在Ray中处理对象主要有三种方式隐式创建当 Task 和 Actor 返回值时这些值会自动存储在 Ray 的分布式对象存储中并返回可在之后被检索的对象引用。显式创建使用 ray.put() 将对象直接放入存储中。传递引用可以将对象引用传递给其他 Task 和 Actor这样可以避免不必要的数据复制并支持延迟执行。importnumpyasnp# Define a task that sums the values in a matrix.ray.remotedefsum_matrix(matrix):returnnp.sum(matrix)# Call the task with a literal argument value.print(ray.get(sum_matrix.remote(np.ones((100,100)))))# - 10000.0# Put a large array into the object store.matrix_refray.put(np.ones((1000,1000)))# Call the task with the object reference as an argument.print(ray.get(sum_matrix.remote(matrix_ref)))# - 1000000.0总结概念作用关键 APITask无状态并行计算ray.remote,.remote(),ray.get()Actor有状态远程对象ray.remote class, 方法.remote()Object分布式共享数据ray.put()Ray Core 的设计哲学保持 API 极简但组合能力极强可构建从简单并行脚本到复杂分布式系统的各类应用。