概述
这很重要,因为它提供了一种简单、统一的方式来分发训练、调优、数据处理和服务,而无需为每个模型重写代码。
深入探讨
Ray 的核心思想是以最小的改变将普通的 Python 函数和类转变为分布式单元。标记为远程“任务”的函数在集群中的任何工作线程上异步运行;标记为远程“参与者”的类成为依赖于工作人员的有状态服务。 Ray 返回轻量级 future(对象引用)并处理调度、通过共享对象存储进行数据移动以及容错。在此核心之上是专门构建的库:用于分布式模型训练的 Ray Train、用于超参数搜索的 Ray Tune、用于流数据管道的 Ray Data、用于强化学习的 RLlib 以及用于可扩展模型服务的 Ray Serve。这使得一个集群能够端到端地处理整个机器学习工作流程。
现实世界的实施
运行 Ray Tune 在 GPU 集群中并行搜索数百个超参数组合,以找到最佳模型配置
使用 Ray Train 将深度学习模型的训练分布在多个 GPU 和节点上,只需最少的代码更改
使用 Ray Data 构建批量推理管道,通过跨集群的模型流式传输数百万条记录来获得这些记录
使用 Ray Serve 在单个自动缩放端点后面部署多个模型,以处理可变的生产流量
Ray 分布式 AI 的未来
Ray 已成为大规模人工智能的支柱,特别是用于训练和服务大型语言模型。预计 LLM 特定服务(带有 vLLM 的 Ray Serve)、异构 GPU 调度、通过 KubeRay 与数据湖和 Kubernetes 更紧密的集成,以及针对尖峰生成工作负载的更好的自动扩展等方面会出现增长。随着模型的增长,Ray 在协调多节点训练、RLHF 管道以及跨数千个加速器的批量推理方面的作用可能会扩大。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
什么是 Ray 分布式 AI?
Ray 是一个开源框架,可以轻松地将 Python 和 AI 工作负载从笔记本电脑扩展到包含数千台机器的集群。这很重要,因为它提供了一种简单、统一的方式来分发训练、调优、数据处理和服务,而无需为每个项目重写代码。
Ray主要解决什么问题?
Ray 提供了一种统一、简单的方法来在多台机器上分配计算,而无需为每种工作负载类型重写代码。
在 Ray 中,“任务”和“演员”有什么区别?
任务是并行运行的无状态远程函数,而参与者是保持状态的长期对象,就像加载的模型一样。
当您启动远程任务时,Ray 立即返回什么?
Ray 立即返回一个轻量级 future,因此工作异步运行;您可以在需要时调用 ray.get() 来检索实际结果。
哪个 Ray 库是为分布式超参数搜索而设计的?
Ray Tune 专注于在集群中并行运行许多超参数试验。
Ray 的文档明确指出哪种对象类型可以从同一节点的对象存储内存中无拷贝读取?
Ray 记录了当同一节点上的工作进程访问存储在对象存储中的 NumPy 数组时,可以进行零拷贝读取。其他值可能需要反序列化,且跨节点请求的数据必须传输。