1.什么是Ray?
Ray是一个开源的统一框架,用于扩展人工智能和Python应用程序,如机器学习。它提供了并行处理的计算层,因此您不需要成为分布式系统专家。Ray通过以下组件最小化了运行分布式个人和端到端机器学习工作流的复杂性:
- 可扩展的库,用于常见机器学习任务,如数据预处理、分布式训练、超参数调整、强化学习和模型服务
- 用于并行化和扩展Python应用程序的Python分布式计算基元
- 集成和实用程序,用于与现有工具和基础设施(如Kubernetes、AWS、GCP和Azure)集成和部署Ray集群
对于数据科学家和机器学习从业者而言,Ray允许您在不需要基础架构专业知识的情况下扩展作业:
- 在多个节点和GPU上轻松并行化和分发工作负载
- 快速配置和访问云计算资源
- 利用本地和可扩展的集成来扩展机器学习生态系统
对于分布式系统工程师,Ray自动处理关键进程:
- 编排-管理分布式系统的各个组件
- 调度-协调何时以及在何处执行任务
- 容错-确保任务在不可避免的故障点完成
- 自动扩展-根据动态需求调整分配给资源的数量
2.你可以使用Ray做什么?
以下是个人、组织和公司使用Ray构建他们的人工智能应用程序的一些常见机器学习工作负载:
- 在CPU和GPU上进行批量推理
- 并行训练
- 模型服务
- 大型模型的分布式训练
- 并行超参数调整实验
- 强化学习
- 机器学习平台
3.Ray的架构
Ray的统一计算框架由三层组成:
-
Ray AI Runtime (Ray AIR)
一个开源的、针对Python的、领域特定的库集,为机器学习应用程序提供了可扩展的、统一的工具包,使得机器学习工程师、数据科学家和研究人员能够更好地处理ML应用程序。使用分布式数据处理、模型训练、调整、强化学习、模型服务等工具库构建ML应用程序。
-
Ray Core
一个开源的、针对Python的、通用的分布式计算库,使得机器学习工程师和Python开发人员可以扩展Python应用程序并加速机器学习工作负载。使用简单灵活的API构建和运行分布式应用程序,轻松实现单机代码并行化。
-
Ray cluster
一组连接到共同的Ray head节点的工作节点。Ray集群可以是固定大小的,也可以根据运行在集群上的应用程序请求的资源进行自动缩放。在AWS、GCP、Azure或本地部署工作负载,使用Ray集群管理器在现有的Kubernetes、YARN或Slurm集群上运行Ray。
4.Ray AIR
Ray AIR的五个本地库分别用于分发以下五个特定的ML任务:
- Data:可扩展、框架不可知的数据加载和转换,用于训练、调整和预测。
- Train:带有容错功能的分布式多节点和多核心模型训练,可与常用的训练库集成。
- Tune:可扩展的超参数调整,以优化模型性能。
- Serve:可扩展和可编程的服务,用于部署模型进行在线推理,可选的微批次处理可提高性能。
- RLlib:可扩展的分布式强化学习工作负载,可与其他Ray AIR库集成。
对于自定义应用程序,Ray Core库使Python开发人员能够轻松构建可在笔记本电脑、集群、云或Kubernetes上运行的可扩展分布式系统。这是Ray AIR和第三方集成(Ray生态系统)构建的基础。
Ray可以在任何机器、集群、云提供商和Kubernetes上运行,并具有不断增长的社区集成生态系统。