概述#
Ray 是一个开源的统一框架,用于扩展 AI 和 Python 应用程序,如机器学习。它提供了并行处理的计算层,因此您不需要成为分布式系统专家。Ray 通过以下组件最小化了运行分布式个体和端到端机器学习工作流的复杂性:
可扩展的库,用于常见的机器学习任务,如数据预处理、分布式训练、超参数调整、强化学习和模型服务。
用于并行化和扩展Python应用程序的Pythonic分布式计算原语。
集成和工具,用于将 Ray 集群与现有工具和基础设施(如 Kubernetes、AWS、GCP 和 Azure)集成和部署。
对于数据科学家和机器学习从业者,Ray 让你无需基础设施专业知识即可扩展作业:
轻松并行化和分布式处理跨多个节点和GPU的机器学习工作负载。
利用原生和可扩展的集成来发挥ML生态系统的优势。
对于机器学习平台构建者和机器学习工程师,Ray:
提供用于创建可扩展和稳健的机器学习平台的计算抽象。
提供了一个统一的机器学习API,简化了与更广泛的机器学习生态系统的入门和集成。
通过使相同的Python代码能够从笔记本电脑无缝扩展到大型集群,减少了开发和生产之间的摩擦。
对于分布式系统工程师,Ray 自动处理关键流程:
编排——管理分布式系统的各个组件。
调度–协调任务何时何地执行。
容错性——确保任务在不可避免的故障点下仍能完成。
自动扩展–根据动态需求调整分配的资源数量。
Ray 能做什么#
以下是一些常见的机器学习工作负载,个人、组织和企业利用 Ray 来构建他们的 AI 应用:
Ray 框架#
Ray 库栈 - 用于机器学习工作负载的统一工具包。 |
Ray 的统一计算框架由三层组成:
Ray AI Libraries–一套开源的、Python的、特定领域的库,为机器学习工程师、数据科学家和研究人员提供了一个可扩展且统一的工具包,用于机器学习应用。
Ray Core–一个开源的、Python的、通用的分布式计算库,使机器学习工程师和Python开发者能够扩展Python应用程序并加速机器学习工作负载。
Ray 集群–一组连接到共同 Ray 头节点的 worker 节点。Ray 集群可以是固定大小的,也可以根据集群上运行的应用程序请求的资源自动扩展或缩减。
扩展机器学习工作负载
使用一套库构建机器学习应用程序,用于分布式 :doc:数据处理 <../data/data>
、 :doc:模型训练 <../train/train>
、 :doc:调优 <../tune/index>
、 :doc:强化学习 <../rllib/index>
、 :doc:模型服务 <../serve/index>
以及 :doc:更多 <../ray-more-libs/index>
。
构建分布式应用程序
使用 :doc:简单灵活的API <../ray-core/walkthrough>
构建和运行分布式应用程序。 :doc:并行化 <../ray-core/walkthrough>
单机代码,几乎无需或完全无需修改代码。
部署大规模工作负载
在 :doc:AWS, GCP, Azure <../cluster/getting-started>
或 :doc:本地 <../cluster/vms/user-guides/launching-clusters/on-premises>
上部署工作负载。使用 Ray 集群管理器在现有的 :doc:Kubernetes <../cluster/kubernetes/index>
、:doc:YARN <../cluster/vms/user-guides/community/yarn>
或 :doc:Slurm <../cluster/vms/user-guides/community/slurm>
集群上运行 Ray。
每个 Ray 的五个原生库都分发一个特定的机器学习任务:
数据: 可扩展的、与框架无关的数据加载和转换,涵盖训练、调优和预测。
Train: 分布式多节点和多核模型训练,具有容错功能,并与流行的训练库集成。
Tune: 可扩展的超参数调优,以优化模型性能。
Serve: 可扩展和可编程的服务,用于部署模型进行在线推理,可选的微批处理以提高性能。
RLlib: 可扩展的分布式强化学习工作负载。
Ray 的库适用于数据科学家和机器学习工程师。对于数据科学家,这些库可以用于扩展单个工作负载,以及端到端的机器学习应用。对于机器学习工程师,这些库提供了可扩展的平台抽象,可以用于轻松地接入和集成来自更广泛的机器学习生态系统的工具。
对于自定义应用程序,Ray Core 库使 Python 开发者能够轻松构建可扩展的分布式系统,这些系统可以在笔记本电脑、集群、云或 Kubernetes 上运行。它是 Ray AI 库和第三方集成(Ray 生态系统)的基础。
Ray 可以在任何机器、集群、云提供商和 Kubernetes 上运行,并且拥有不断增长的 社区集成生态系统。