概述#

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

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

  • 用于并行和扩展 Python 应用的 Python 式分布式计算原语。

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

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

  • 轻松地在多个节点和 GPU 上并行和分发机器学习工作负载。

  • 通过原生和可扩展的集成充分利用机器学习生态系统。

对于机器学习平台构建者和机器学习工程师,Ray

  • 提供计算抽象,用于创建可扩展且稳健的机器学习平台。

  • 提供统一的机器学习 API,简化与更广泛机器学习生态系统的入门和集成。

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

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

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

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

  • 容错——确保任务无论出现何种故障都能完成。

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

Ray 的用途#

以下是一些个人、组织和公司利用 Ray 构建其人工智能应用的常见机器学习工作负载

Ray 框架#

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

Ray 库栈 - 用于机器学习工作负载的统一工具包。

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

  1. Ray AI 库——一套开源、Python、特定领域的库,为机器学习工程师、数据科学家和研究人员提供了用于机器学习应用的可扩展和统一工具包。

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

  3. Ray 集群——连接到同一 Ray 头节点的一组工作节点。Ray 集群可以是固定大小的,也可以根据集群上运行的应用请求的资源自动向上或向下扩展。

扩展机器学习工作负载

使用一套库构建机器学习应用,用于分布式数据处理模型训练调优强化学习模型服务以及更多

构建分布式应用

使用简单灵活的 API 构建和运行分布式应用。只需少量甚至无需代码修改即可并行化单机代码。

部署大规模工作负载

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

Ray 的五个原生库分别负责特定的机器学习任务的分布式处理

  • Data:跨训练、调优和预测的可扩展、框架无关的数据加载和转换。

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

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

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

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

Ray 的库适用于数据科学家和机器学习工程师。对于数据科学家,这些库可用于扩展个体工作负载以及端到端机器学习应用。对于机器学习工程师,这些库提供可扩展的平台抽象,可用于轻松地从更广泛的机器学习生态系统中引入和集成工具。

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

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