概述#

Ray 是一个开源的统一框架,用于扩展人工智能和 Python 应用程序,例如机器学习。它提供了并行处理的计算层,因此您无需成为分布式系统专家。Ray 通过以下组件最大限度地简化了运行分布式单个工作流和端到端机器学习工作流的复杂性

  • 可扩展的库,用于常见机器学习任务,例如数据预处理、分布式训练、超参数调优、强化学习和模型服务。

  • 用于并行化和扩展 Python 应用程序的 Pythonic 分布式计算基元。

  • 集成和实用工具,用于将 Ray 集群与现有工具和基础设施(如 Kubernetes、AWS、GCP 和 Azure)进行集成和部署。

对于数据科学家和机器学习从业者,Ray 让您无需基础设施专业知识即可扩展作业

  • 轻松地将 ML 工作负载并行化并分发到多个节点和 GPU。

  • 通过原生和可扩展的集成利用 ML 生态系统。

对于 ML 平台构建者和 ML 工程师,Ray

  • 为构建可扩展且健壮的 ML 平台提供了计算抽象。

  • 提供了一个统一的 ML API,简化了上手和与更广泛的 ML 生态系统集成。

  • 通过使相同的 Python 代码能够从笔记本电脑无缝扩展到大型集群,从而减少了开发和生产之间的摩擦。

对于分布式系统工程师,Ray 会自动处理关键流程

  • 编排:管理分布式系统的各种组件。

  • 调度:协调任务的执行时间和地点。

  • 容错:确保任务即使在不可避免的故障点也能完成。

  • 自动扩展:根据动态需求调整分配的资源数量。

您可以使用 Ray 来做什么#

以下是个人、组织和公司利用 Ray 构建其 AI 应用程序的一些常见 ML 工作负载

Ray 框架#

../_images/map-of-ray.svg

Ray 库栈 — ML 工作流的统一工具包。

Ray 的统一计算框架由三层组成

  1. Ray AI Libraries — 一个开源的、Python 的、领域特定的库集,为 ML 工程师、数据科学家和研究人员提供了一个可扩展且统一的 ML 应用程序工具包。

  2. Ray Core — 一个开源的、Python 的、通用的分布式计算库,使 ML 工程师和 Python 开发人员能够扩展 Python 应用程序并加速机器学习工作负载。

  3. Ray Clusters — 一组连接到通用 Ray 头节点的 worker 节点。Ray 集群可以是固定大小的,也可以根据集群上运行的应用程序请求的资源进行自动扩展和缩减。

扩展机器学习工作负载

使用库工具包构建 ML 应用程序,用于分布式 数据处理模型训练调优强化学习模型服务更多

构建分布式应用程序

使用 简单灵活的 API 构建和运行分布式应用程序。通过很少或不修改代码即可并行化单机代码。

部署大规模工作负载

AWS、GCP、Azure本地 部署工作负载。使用 Ray 集群管理器在现有的 KubernetesYARNSlurm 集群上运行 Ray。

Ray 的五个原生库中的每一个都分发一个特定的 ML 任务

  • Data:在训练、调优和预测过程中进行可扩展的、框架无关的数据加载和转换。

  • Train:分布式多节点和多核模型训练,具有容错功能,并与流行的训练库集成。

  • Tune:可扩展的超参数调优,以优化模型性能。

  • Serve:可扩展且可编程的服务,用于部署模型进行在线推理,并提供可选的微批处理以提高性能。

  • RLlib:可扩展的分布式强化学习工作负载。

Ray 的库适用于数据科学家和 ML 工程师。对于数据科学家,这些库可用于扩展单个工作负载和端到端 ML 应用程序。对于 ML 工程师,这些库提供了可扩展的平台抽象,可用于轻松地集成来自更广泛 ML 生态系统的工具。

对于自定义应用程序,Ray Core 库使 Python 开发人员能够轻松构建可扩展的分布式系统,这些系统可以在笔记本电脑、集群、云或 Kubernetes 上运行。它是 Ray AI 库和第三方集成(Ray 生态系统)构建的基础。

Ray 可以在任何机器、集群、云提供商和 Kubernetes 上运行,并拥有不断增长的 社区集成生态系统