开源的分布式计算框架,用于扩展 AI 训练与推理负载,提供 Ray Serve 与 RLlib 等组件。
这个框架解决什么问题
Ray 是加州大学伯克利分校 RISELab 出来的开源项目,现在由 Anyscale 主导维护。它要解决的事情很具体:当你把 AI 任务从单机搬到集群上时,Python 那套多进程、多线程的玩法就不够用了。Ray 提供了一套分布式原语,让你用几乎和写单机代码一样的方式,把计算任务分发到几十上百台机器上跑。
谁该用它?训练大模型的研究团队、要做大规模推理服务的工程团队、搞强化学习的实验室,还有那些需要在异构硬件上调度任务的公司。如果你只是跑个单机 scikit-learn 模型,Ray 属于杀鸡用牛刀。
核心抽象:任务和 Actor
Ray 的编程模型只有两个基本概念。任务是无状态的函数调用,你写个普通 Python 函数,加个 @ray.remote 装饰器,调用时就会返回一个 future(Ray 里叫 ObjectRef),结果算好了再取。Actor 是有状态的,一个远程类实例,内部维护自己的状态,适合做参数服务器、模拟环境这类需要持续保存数据的东西。
底层调度器负责把任务塞到集群里合适的节点上,处理依赖关系、失败重试、对象存储。用户不用操心节点间通信,Ray 的分布式对象存储会自动在节点间搬运数据。
机器学习相关的几个组件
Ray 本身是通用分布式计算框架,但它围绕 AI 负载长出了一套生态:
- Ray Train:把 PyTorch、TensorFlow、XGBoost 等训练循环包装成分布式版本,数据并行、模型并行都能配
- Ray Tune:超参数搜索,支持早停算法和多种搜索策略,和主流训练框架对接
- Ray Serve:模型推理服务框架,可以把多个模型组合成流水线,做 A/B 测试、自动扩缩容
- RLlib:强化学习库,内置了 PPO、DQN 等常用算法,支持多智能体训练
- Ray Data:分布式数据处理,给训练和推理喂数据用
这些组件共享同一套调度和资源管理,所以你能在一个集群上同时跑训练任务和推理服务,资源按需分配。
实际用起来什么感觉
写 Ray 代码的体验接近写普通 Python。启动集群一行命令 ray start --head,本地调试直接 ray.init() 就能跑。从单机切到集群,代码基本不用改,改的是启动方式。
性能上,Ray 的任务调度延迟在毫秒级,对象存储用共享内存做零拷贝读取,同一节点上的任务传大对象不会反复序列化。这些细节在真实负载里差别很大。
社区方面,Ray 在 GitHub 上有三万多 star,PyTorch、Hugging Face 这些项目的文档里经常能看到和 Ray 集成的例子。文档质量在开源项目里算中上,但版本迭代快,遇到问题查 issue 比查文档有时更有效。
常见问题
Ray 是什么?
开源的分布式计算框架,用于扩展 AI 训练与推理负载,提供 Ray Serve 与 RLlib 等组件。
Ray 的官方网站是什么?
Ray 的官方网站是 https://www.ray.io,可直接在浏览器中打开使用。
