技术指南

Ray 用于分布式人工智能

Ray 是一个开源框架,可以轻松地将 Python 和 AI 工作负载从笔记本电脑扩展到包含数千台机器的集群。

阅读时间:2分钟最后更新

概述

It matters because it gives a simple, unified way to distribute training, tuning, data processing, and serving without rewriting your code for each.

深入探讨

Ray 的核心思想是以最小的改变将普通的 Python 函数和类转变为分布式单元。标记为远程“任务”的函数在集群中的任何工作线程上异步运行;标记为远程“参与者”的类成为依赖于工作人员的有状态服务。 Ray 返回轻量级 future(对象引用)并处理调度、通过共享对象存储进行数据移动以及容错。在此核心之上是专门构建的库:用于分布式模型训练的 Ray Train、用于超参数搜索的 Ray Tune、用于流数据管道的 Ray Data、用于强化学习的 RLlib 以及用于可扩展模型服务的 Ray Serve。这使得一个集群能够端到端地处理整个机器学习工作流程。

技术洞察

关键原语是任务(无状态、并行函数调用)和参与者(保存加载模型或计数器等内容的有状态工作人员)。当您调用远程任务时,Ray 立即返回 future 并在可用的 CPU/GPU 上安排工作;您调用 ray.get() 来获取结果。具有零拷贝共享内存的分布式内存对象存储可以有效地在工作人员之间移动数组等大型对象,避免重复序列化并使数据量大的 AI 管道快速运行。

战略影响

成本与预算

多年来,架构决策决定着性能和运营成本。

更清晰的判决

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。

质量控制

更好的工程选择可以减少生产中的可靠性事故。

Ray 分布式 AI 的未来

Ray 已成为大规模人工智能的支柱,特别是用于训练和服务大型语言模型。预计 LLM 特定服务(带有 vLLM 的 Ray Serve)、异构 GPU 调度、通过 KubeRay 与数据湖和 Kubernetes 更紧密的集成,以及针对尖峰生成工作负载的更好的自动扩展等方面会出现增长。随着模型的增长,Ray 在协调多节点训练、RLHF 管道以及跨数千个加速器的批量推理方面的作用可能会扩大。

现实世界的实施

运行 Ray Tune 在 GPU 集群中并行搜索数百个超参数组合,以找到最佳模型配置

使用 Ray Train 将深度学习模型的训练分布在多个 GPU 和节点上,只需最少的代码更改

使用 Ray Data 构建批量推理管道,通过跨集群的模型流式传输数百万条记录来获得这些记录

使用 Ray Serve 在单个自动缩放端点后面部署多个模型,以处理可变的生产流量

风险与防护栏

优化一项基准测试可以隐藏更广泛的系统弱点。

基础设施和维护成本常常被低估。

随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

实施路线图

1

在实施之前定义延迟、质量和成本目标。

2

在实际负载和数据条件下进行基准测试。

3

仪器监控错误、漂移和用户影响。

4

在扩展之前准备回滚和事件响应路径。

不断探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Ray for Distributed AI quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

开始测验

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一个指南

梯度检查点

常见问题

What is Ray for Distributed AI?

Ray 是一个开源框架,可以轻松地将 Python 和 AI 工作负载从笔记本电脑扩展到包含数千台机器的集群。这很重要,因为它提供了一种简单、统一的方式来分发训练、调优、数据处理和服务,而无需为每个项目重写代码。

Ray主要解决什么问题?

Ray 提供了一种统一、简单的方法来在多台机器上分配计算,而无需为每种工作负载类型重写代码。

在 Ray 中,“任务”和“演员”有什么区别?

任务是并行运行的无状态远程函数,而参与者是保持状态的长期对象,就像加载的模型一样。

当您启动远程任务时,Ray 立即返回什么?

Ray 立即返回一个轻量级 future,因此工作异步运行;您可以在需要时调用 ray.get() 来检索实际结果。

哪个 Ray 库是为分布式超参数搜索而设计的?

Ray Tune 专注于在集群中并行运行许多超参数试验。

Ray 的对象存储如何提高数据密集型 AI 管道的效率?

共享内存对象存储使用零拷贝读取,因此工作人员可以访问大型数组,而无需昂贵的重新序列化。