ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Ray AI 计算引擎完全指南:核心分布式运行时与五大 AI 库实战解析

2026/9/18 13:24:20 拓冰建站 浏览量
Ray AI 计算引擎完全指南:核心分布式运行时与五大 AI 库实战解析 Ray AI 计算引擎完全指南核心分布式运行时与五大 AI 库实战解析【免费下载链接】rayRay is an AI compute engine. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads.项目地址: https://gitcode.com/gh_mirrors/ra/rayRay 是一个面向 AI 与 Python 应用的统一分布式计算框架它由一套核心分布式运行时core distributed runtime与一组加速 ML 计算的 AI 库AI Libraries组成让开发者可以同一份 Python 代码从笔记本无缝扩展到集群。本文以仓库根目录 README.rst 为主线结合 python/ray 源码与 src/ray 底层实现系统讲解 Ray 的三大核心抽象Tasks、Actors、Objects、五大 AI 库Data、Train、Tune、RLlib、Serve的定位与用法、安装方式、监控调试手段以及它们在实际仓库中的代码级印证。读完本文你将掌握 Ray 的整体架构、核心 API 的调用方式并能在自己的机器学习工作负载中按需选用对应模块。为什么需要 Ray从单机到集群的统一扩展方案如今 ML 工作负载的计算密集程度越来越高。虽然笔记本这类单机开发环境足够方便但无法满足这些负载对算力的需求。Ray 的核心价值在于它是一种把 Python 和 AI 应用从单机扩展到集群的统一方式。Ray 被设计为通用型general-purpose框架能够高性能地运行任意类型的工作负载。只要应用是用 Python 编写的就能用 Ray 扩展它而无需引入其他基础设施——这一点在 README.rst 中有明确表述。从仓库的目录结构也可以印证这一语言无关设计除了 Python 主包 python/ray 外仓库还提供了 java、cpp 两套 API 实现并通过 python/ray/cross_language.py 暴露java_function、java_actor_class、cpp_function等跨语言调用入口该文件同时被 python/ray/init.py 作为公开 API 导出说明 Ray 的应用边界远不止 Python。核心分布式运行时三大抽象与底层组件README 将 Ray Core 的核心抽象归纳为三类这也是理解 Ray 一切高级库的基础。仓库中对应实现分别为Tasks在集群中执行的无状态函数由 python/ray/remote_function.py 实现通过ray.remote装饰器把普通函数转化为远程任务Actors在集群中创建的有状态工作进程由 python/ray/actor.py 实现ActorClass.remote()会创建一个持有状态的对象实例其方法调用也通过remote()提交Objects可在集群内跨节点访问的不可变值由 python/ray/_raylet.pyx 中的ObjectRef表示配合ray.put/ray.get/ray.wait使用。在 python/ray/init.py 中可以看到这些抽象被统一导出ObjectRef、ObjectRefGenerator、ActorID、TaskID、PlacementGroupID等句柄类型直接来自 Cython 核心模块ray._raylet而init、get、put、remote、wait、cancel、kill、shutdown等顶层 API 则来自 python/ray/_private/worker.py。这意味着 Ray 的 Python 层只是薄封装真正的运行时逻辑调度、对象存储、分布式元数据管理位于 src/ray 下的 C 实现中。底层运行时组件从 src/ray 的目录布局可以看出 Ray 核心运行时的三大关键服务组件目录职责对应概念src/ray/gcsGlobal Control Service集群级元数据服务管理节点、任务、Actor、放置组等全局状态src/ray/raylet每节点资源管理与调度代理执行任务调度、资源分配、Worker 生命周期管理src/ray/object_manager跨节点对象传输与存储支撑 Objects 抽象的分发与物化在通信层面仓库提供了两套 RPC 客户端raylet_client见 src/ray/raylet_rpc_client/raylet_client.h负责与本地 raylet 交互gcs_client见 src/ray/gcs_rpc_client/gcs_client.h负责与 GCS 交互它们连同 src/ray/core_worker核心工作进程处理任务提交、对象获取等逻辑、src/ray/pubsub事件发布订阅、src/ray/observability可观测性、src/ray/stats指标统计等模块共同构成了完整的分布式运行时。代码级最小示例任务、Actor 与对象仓库测试文件 python/ray/tests/test_basic.py 中的用例直接验证了这三种抽象的用法例如第 40-46 行的基础任务ray.init(num_cpus1) ray.remote def f(): return 1 assert ray.get(f.remote()) 1同样的文件还展示了资源参数与 Actor 的典型写法第 56-66 行展示了任务间的资源传递ray.remote(num_cpus1) def child(): return 3 ray.remote(num_cpus1) def parent(): # 父任务会释放 CPU 资源以运行子任务 return ray.get(child.remote()) assert ray.get(parent.remote()) 3ray.remote支持的常用资源与行为参数均可从仓库测试与 python/ray/remote_function.py 的task_options中印证包括num_cpus/num_gpus声明任务或 Actor 占用的 CPU / GPU 数量memory/object_store_memory内存与对象存储配额resources自定义资源如{custom1: 1}max_callsWorker 复用该函数的最大次数防止内存泄漏max_retries/retry_exceptions失败重试次数与可重试异常白名单max_restarts仅 ActorActor 异常退出后的最大重启次数runtime_env任务 / Actor 运行所需的依赖环境见下文运行时环境。对象与命名空间Objects 是跨集群的不可变值ray.put将值放入分布式对象存储并返回ObjectRefray.get阻塞获取结果ray.wait等待若干引用完成。任务之间通过ObjectRef传递依赖Ray 会自动追踪这些依赖形成执行图这正是 README 中所说Objects 是集群范围内可访问的不可变值的具体含义。此外python/ray/job_config.py 中的JobConfig支持设置ray_namespace命名空间用于隔离 Actor 与对象、runtime_env与自定义元数据ray.get_actor(name, namespace...)可跨命名空间获取具名 Actor。五大 AI 库Data、Train、Tune、RLlib、ServeREADME 将 Ray AI Libraries 归纳为五个模块它们都构建在核心运行时之上针对 ML 计算的不同阶段提供开箱即用的能力库定位来自 README仓库入口Data面向 ML 的可扩展数据集python/ray/dataTrain分布式训练python/ray/trainTune可扩展超参数调优python/ray/tuneRLlib可扩展强化学习python/ray/rllibServe可扩展、可编程的模型服务python/ray/serveRay Data面向 ML 的可扩展数据集Ray Data 提供统一的Dataset/DataIterator抽象见 python/ray/data/init.py核心能力包括数据读取read_parquet、read_csv、read_json、read_images、read_audio、read_videos、read_tfrecords、read_webdataset等还可从 pandas、numpy、Arrow、Dask、Modin、Spark、Torch、TF、HuggingFace 等内存数据源直接构造from_pandas、from_numpy、from_arrow、from_dask、from_spark、from_torch、from_huggingface等并支持 Parquet、Delta、Iceberg、Hudi、Lance、Zarr、Snowflake、BigQuery、Kafka、Mongo 等丰富数据源分布式变换map_batches、map、filter、groupby、sort、shuffle等可指定ActorPoolStrategy或TaskPoolStrategy两种计算模式见 python/ray/data/_internal/compute.py张量扩展通过 Arrow 扩展类型ArrowTensorType/ArrowVariableShapedTensorTypepython/ray/data/_internal/tensor_extensions/arrow.py原生支持张量列便于与深度学习框架对接流式执行基于ExecutionOptions/ExecutionResourcespython/ray/data/_internal/execution/interfaces.py控制执行资源与并行度。一个典型的读取 变换流程import ray.data as rd ds rd.read_parquet(s3://bucket/data/) # 分布式读取 ds ds.map_batches(lambda batch: transform(batch), batch_size1024) ds.write_parquet(s3://bucket/output/)Ray Train分布式训练Ray Train 提供 Trainer 抽象DataParallelTrainer等位于 python/ray/train屏蔽了分布式训练的复杂度框架无关通过BackendConfigpython/ray/train/backend.py支持 PyTorch、TensorFlow、Horovod 等后端配置化训练ScalingConfig资源规模、RunConfig运行与回调、CheckpointConfig检查点策略、FailureConfig失败处理均来自 python/ray/air/config.py在 python/ray/train/init.py 中统一导出检查点与数据分片Checkpoint、get_checkpoint、get_dataset_shard、reportpython/ray/train/_internal/session.py让训练循环可以汇报指标、持久化检查点、按 rank 分片读取数据集V2 架构仓库中同时存在ray.train.v2python/ray/train/v2由is_v2_enabled()控制启用提供基于 pydantic 的新版配置体系ControllerError、PreemptionError等异常类型亦随 v2 引入。从源码可见 Train 依赖 Tunepython/setup.py 中extras[train] extras[tune]两者共享Result、CheckpointConfig、RunConfig等 AIR 组件。Ray Tune可扩展超参数调优Ray Tune 的核心入口是Tuner与tune.runpython/ray/tune/init.py搜索空间grid_search网格搜索以及uniform、choice、randint、loguniform、quniform、randn等随机采样函数python/ray/tune/search/sample.py并可通过create_searcher接入外部搜索算法调度器create_scheduler支持 ASHA、MedianStopping 等早停与资源调度策略结果管理ResultGridpython/ray/tune/result_grid.py、ExperimentAnalysis用于分析实验结果CLIReporter/JupyterNotebookReporter用于进度展示训练接口Trainable类与函数式report/get_checkpointpython/ray/tune/trainable两种范式均受支持。典型用法from ray import tune def objective(config): score my_model(config[lr], config[batch_size]) tune.report(scorescore) tuner tune.Tuner( objective, param_space{lr: tune.loguniform(1e-4, 1e-1), batch_size: tune.choice([32, 64, 128])}, tune_configtune.TuneConfig(num_samples50, schedulerasha), ) results tuner.fit()RLlib可扩展强化学习RLlib 是仓库中体量最大的算法库python/ray/rllib含 rllib 镜像目录提供丰富的强化学习算法实现算法族PPO、DQN、SAC、APPO、IMPALA、CQL、IQL、MARWIL、TQC、BC、DreamerV3 等见 rllib/algorithms 与 python/ray/rllib/algorithms标准化配置每个算法配套AlgorithmConfig如 python/ray/rllib/algorithms/ppo通过config PPOConfig().environment(CartPole-v1).training(lr1e-4)链式构建训练与评估Algorithm.train()训练、evaluate评估rllib/examples 提供 280 个示例脚本环境与离线数据register_env注册自定义 Gymnasium 环境python/ray/rllib/offline 支持离线强化学习数据读取。使用入口与 PPO 等算法的注册在 python/ray/rllib/init.py 与 python/ray/rllib/algorithms/registry.py 中维护。Ray Serve可扩展、可编程的模型服务Ray Serve 用于把 Python 模型部署为在线服务python/ray/serve核心 API 在 python/ray/serve/init.py 中导出部署原语serve.deployment装饰普通类定义 Deploymentserve.run/run_many部署应用Deployment、Application类型抽象应用拓扑弹性伸缩AutoscalingConfig支持按并发或 QPS 自动扩缩容副本deployment.options(num_replicas...)手动指定副本数请求批处理serve.batchpython/ray/serve/batching.py将并发请求合并成批次显著提升 GPU 吞吐HTTP 与 gRPC基于 FastAPI / Starlette 构建 HTTP 入口python/setup.py 中serveextras 明确依赖fastapi、starlette、uvicorn并支持 gRPCray[serve-grpc]生命周期与观测get_deployment_handle获取部署句柄、status查询状态、shutdown关闭并集成 OpenTelemetry 追踪TracingConfig。一个最小 Serve 应用from ray import serve serve.deployment class HelloModel: def __call__(self, request): return {result: hello} serve.run(HelloModel.bind())安装方式与组件依赖README 明确安装命令为pip install ray。结合 python/setup.py 中extras_require的定义可以按需安装各模块的依赖安装命令包含组件说明pip install ray核心运行时基础 APITasks / Actors / Objectspip install ray[default]核心 仪表盘等含 aiohttp、grpcio、opentelemetry、prometheus_client 等setup.pypip install ray[data]Ray Datanumpy、pandas、pyarrow、fsspecsetup.pypip install ray[train]Ray Train依赖 Tune 全部依赖pip install ray[tune]Ray Tunetune_base_deps pydanticpip install ray[rllib]RLlibTune gymnasium、dm_tree 等setup.pypip install ray[serve]Ray Servefastapi、starlette、uvicorn 等setup.pypip install ray[serve-grpc]Serve gRPC额外含 grpcio、pyOpenSSLpip install ray[air]Data Train Tune ServeAIR 全家桶setup.pypip install ray[llm]LLM 推理vllm 等依赖 data serve见 setup.pypip install ray[all]除 cpp 外全部官方注释建议按需安装避免依赖过大setup.py需要注意ray[all]依赖过于庞大setup.py 的注释明确建议只安装实际需要的 extrasray[llm]特意不包含在ray[all]中因为 vllm 的依赖集很大且容易与其他 ML 库冲突setup.py。若需要 nightly wheel官方安装文档Installation page提供了对应说明。从install_requiressetup.py可以看出核心包的最小运行时依赖只有click、filelock、jsonschema、msgpack、packaging、protobuf、pyyaml、requests这也是 Ray 核心足够轻量的原因之一。运行时环境Runtime Env依赖与环境的按需交付Ray 的runtime_env机制让每个任务、Actor、Job 可以携带独立的 Python 环境与文件依赖。JobConfig.set_runtime_env()python/ray/job_config.py可以设置pip依赖、conda环境、working_dir工作目录、env_vars环境变量等ray[default]extras 中引入的virtualenvsetup.py即用于 pip runtime env 的隔离创建。这一机制是 Ray 在共享集群上按需交付运行环境的基础也是官方文档中运行时环境Runtime Environments模块的核心内容。监控与调试README 提到两个重要的可观测性工具Ray DashboardWeb 界面用于监控 Ray 应用与集群的运行状态。其实现位于 python/ray/dashboard包含后端194 个 Python 文件如dashboard.py、agent 逻辑与前端*.tsx/*.ts组件通过 src/ray/observability 采集底层指标。Dashboard 依赖ray[default]extras 中的 aiohttp、opentelemetry、prometheus_client 等组件setup.pyRay Distributed Debugger分布式调试器用于调试 Ray 应用属于 ray-observability 文档板块实现基于 debugpy 等调试协议。此外src/ray/stats 提供指标统计、python/ray/_private/state.py 导出nodes、cluster_resources、available_resources、timeline等集群状态查询 API可用于程序化监控资源使用与生成性能时间线。生态与部署形态README 指出 Ray 可以在任意机器、集群、云厂商与 Kubernetes上运行并且拥有不断增长的社区集成生态。仓库对此有直接支撑集群部署官方提供 KubeRayci/k8s 下的运行脚本与 release/k8s_tests 测试、Kubernetes Operator 支持ci/rayci 与 release 目录中大量基于 AWS / GCE 的集群与发布测试配置验证了多云部署能力自动扩缩容Ray Autoscaler 位于 python/ray/autoscaler支持按负载自动增减节点多语言客户端Javajava、CcppAPI 可接入同一集群。延伸阅读与参考文献README 的 More Information 部分列举了理解 Ray 的权威资料其中与仓库实现直接相关的包括Ray 架构白皮书Ray Architecture whitepaper介绍 Ray 系统整体架构可与 src/ray 目录结构对照阅读Exoshuffle论文介绍 Ray 大规模数据 shuffle 的设计对应 Ray Data 的 shuffle 实现Ownership 论文A distributed futures system for fine-grained tasks解释 ObjectRef 的分布式所有权模型对应 src/ray/core_worker 的任务提交与对象管理RLlib 与 Tune 论文分别对应 python/ray/rllib 与 python/ray/tune 的设计依据。仓库内文档方面doc/source 是官方文档源码所在按主题划分为 ray-core、ray-air、serve、data、train、tune、rllib、ray-observability 等板块是继续深入各模块的第一手资料。总结Ray 通过核心分布式运行时 AI 库的两层结构把从数据预处理Data、分布式训练Train、超参数调优Tune、强化学习RLlib到模型服务Serve的完整 ML 计算链路统一到一套原语之上Tasks、Actors 与 Objects。开发者先用pip install ray安装核心再按需ray[data]、ray[train]、ray[serve]等追加组件同一份代码既能跑在笔记本上也能通过 Autoscaler / KubeRay 扩展到云上与 Kubernetes 集群。理解这些抽象及其在 python/ray 与 src/ray 中的实现位置是深入使用 Ray 的第一步。【免费下载链接】rayRay is an AI compute engine. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads.项目地址: https://gitcode.com/gh_mirrors/ra/ray创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考