Overview
Ray 是一个开源的统一框架(open source unified framework),用于扩展(scaling)AI 和 Python 应用。它提供简单、通用的 API,让分布式应用从单机(laptop)无缝扩展到集群(cluster)。
什么是 Ray?
Ray 的核心目标是:让分布式计算变得更简单(simplifies distributed computing)。
Ray 主要通过三大能力实现这一目标:
-
Scalable compute primitives(可扩展计算原语):通过 Tasks(任务) 和 Actors(有状态对象),实现无痛的并行编程(painless parallel programming)。
-
Specialized AI libraries(专用 AI 库):提供面向常见机器学习工作负载的工具,如 数据处理、模型训练、超参数搜索 和 模型服务。
-
Unified resource management(统一资源管理):通过自动化资源管理,统一调度 CPU / GPU / Memory,实现从 Laptop 到 Cloud 的无缝扩展。
Ray 架构
Ray 采用分层架构(layered architecture),从底层基础设施到上层 AI 应用库逐层构建:
| 层级 | 说明 |
|---|---|
| Cloud(基础设施层) | 提供底层计算资源:AWS / Kubernetes / Azure / GCP / On-premise,包含 CPU / GPU / Network / Storage |
| Ray Core(核心运行时) | 分布式运行时,提供 Tasks、Actors、Object Store、Task Scheduling 及统一资源管理 |
| Ray AI Libraries(AI 高层库) | 构建在 Ray Core 之上,提供 Data、Train、Tune、Serve、RLlib 等面向 AI / ML 场景的高层 API |
Ray Core 是整个框架的核心,负责将底层资源抽象为统一的分布式计算能力。Ray AI Libraries 则封装了复杂的分布式逻辑,使用户可以专注于具体的机器学习任务。
快速上手
连接到已有 Ray 集群
当 Ray 集群已在 Docker 或远程机器上启动时,可通过 Ray Client 方式连接:
import ray
if ray.is_initialized():
ray.shutdown()
ray.init(address="ray://127.0.0.1:10001")
参数说明
ray.is_initialized()— 检查当前进程是否已连接到 Ray。ray.shutdown()— 关闭已有连接,避免重复初始化报错。ray.init(address="ray://...")— 使用 Ray Client 协议(ray://)连接到运行中的 Ray Head 节点(端口10001)。
适用场景
- Ray 运行在 Docker 中;
- Ray 运行在 远程服务器或集群 中;
- 本地 Python / Notebook 作为 driver 提交任务到集群执行。