.. _ref-use-cases:
Ray 用例
=============
.. raw:: html
此页索引了用于 ML 扩缩 的常见 Ray 用例。
它包含对博客、示例和教程的突出显示参考,也位于
Ray 文档中的其他位置。
.. _ref-use-cases-llm:
LLMs 以及生成式 AI
---------------
大型语言模型(LLM)和生成人工智能正在迅速改变行业,需求计算速度惊人。Ray 提供了一个用于扩展这些模型的分布式计算框架,使开发人员能够更快、更高效地训练和部署模型。凭借用于数据流、训练、微调、超参数调整和服务的专用库,Ray 简化了开发和部署大规模人工智能模型的过程。
.. figure:: /images/llm-stack.png
.. query-param-ref:: ray-overview/examples
:parameters: ?tags=llm
:ref-type: doc
:classes: example-gallery-link
探索 LLMs 和生成式 AI 示例
.. _ref-use-cases-batch-infer:
批量预估
---------------
批量推理是对大量输入数据生成模型预测的过程。
Ray 针对于批量预估可工作于任何云厂商以及 ML 框架,
并且它对于现代深度学习应用程序来说既快速又便宜。
它从单机扩展到大型集群,只需最少的代码更改。
作为 Python 优先的框架,您可以在 Ray 中轻松地表达和交互式地开发推理工作负载。
了解有关使用 Ray 运行批处理推理的更多信息,参考 :ref:`批量预估指导`.
.. figure:: ../data/images/batch_inference.png
.. query-param-ref:: ray-overview/examples
:parameters: ?tags=inference
:ref-type: doc
:classes: example-gallery-link
探索批量预估示例
.. _ref-use-cases-mmt:
多模型训练
-------------------
多模型训练在 ML 用例中很常见,如时间序列预测,它需要在与地点、产品等对应的多个数据批次上拟合模型。
重点是在数据集的子集上训练许多模型。这与在整个数据集上训练单个模型形成对比。
当要训练的任何给定模型都可以放在一个 GPU 上时,Ray 可以将每个训练运行分配给一个单独的 Ray 任务。通过这种方式,所有可用的 worker 都被用来运行独立的远程训练,而不是一个工人按顺序运行作业。
.. figure:: /images/training_small_models.png
用于大型数据集上分布式训练的数据并行模式。
我如何在 Ray 上进行多模型训练?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
要训练多个独立的模型,使用 Ray Tune (:ref:`Tutorial `) 类库。这是大多数情况下推荐的库。
如果数据源适合单个机器(节点)的内存,则可以将 Tune 与当前的数据预处理管道一起使用。
如果您需要扩展数据,或者希望规划未来的扩展,使用 :ref:`Ray Data ` 类库。
要使用 Ray Data,你的数据必须是 :ref:`支持的格式 `。
对于不太常见的情况,存在替代解决方案:
#. 如果数据不是支持的格式,使用 Ray Core (:ref:`Tutorial `) 来自定义应用。这是一种高级模式,并需要你理解 :ref:`设计模式和反模式 `。
#. 如果您有一个大型预处理管道,你可以使用 Ray Data 类库来训练多个模型 (:ref:`Tutorial `)。
.. query-param-ref:: ray-overview/examples
:parameters: ?tags=training
:ref-type: doc
:classes: example-gallery-link
探索模型训练示例
模型服务
-------------
:ref:`Ray Serve ` 非常适合模型组合,使您能够构建由多个 ML 模型和业务逻辑组成的复杂推理服务,所有这些都使用 Python 代码。
它支持复杂的 `模型部署模式 `_ 需要多个 Ray Actor 的编排,其中不同的 actor 为不同的模型提供推理。Serve 同时处理批处理和在线推理,并且可以扩展到生产中的数千个模型。
.. figure:: /images/multi_model_serve.png
Ray Serve 部署模式。(点击图片放大)
使用以下资源了解有关模型服务的更多信息。
- `[讨论] 利用 Ray Serve 大规模生产 ML `_
- `[博客] 使用 Ray & Ray Serve 简化 MLOps `_
- :doc:`[指引] Ray Serve 入门 `
- :doc:`[指引] Serve 中的模型组合 `
- :doc:`[库] 服务示例库 `
- `[库] 博客上的更多服务用例 `_
超参调优
---------------------
:ref:`Ray Tune ` 类库使任何并行 Ray 工作负载能够在超参数调整算法下运行。
运行多个超参数调整实验是一种适用于分布式计算的模式,因为每个实验彼此独立。Ray Tune 处理了分布式超参数优化的难点,并提供了可用的关键功能,如最佳结果的检查点、优化调度和指定搜索模式。
.. figure:: /images/tuning_use_case.png
分布式调优和每次试验的分布式训练。
通过以下讲座和用户指南了解有关 Tune 库的更多信息。
- :doc:`[指引] Ray Tune 入门 `
- `[博客] 如何使用 Ray Tune 进行超参数调整 `_
- `[讨论] 简单的分布式超参数优化 `_
- `[博客] Hyperparameter Search with 🤗 Transformers `_
- :doc:`[库] Ray Tune 示例库 `
- `博客上的更多 Tune 用例 `_
分布式训练
--------------------
:ref:`Ray Train ` 该库在一个简单的 Trainer API 下集成了许多分布式培训框架,
提供了开箱即用的分布式编排和管理功能。
与训练许多模型不同,模型并行性将一个大模型划分为多台机器进行训练。Ray Train 内置了用于分发模型碎片和并行运行训练的抽象。
.. figure:: /images/model_parallelism.png
用于分布式大模型训练的模型并行模式。
通过以下讲座和用户指南了解更多关于 Train 库的信息。
- `[讨论] Ray Train, PyTorch, TorchX 以及分布式机器学习 `_
- `[博客] XGBoost 在 Ray 上的弹性分布式训练 `_
- :doc:`[指引] Ray Train 入门 `
- :doc:`[示例] Fine-tune a 🤗 Transformers model `
- :doc:`[库] Ray Train 示例库 `
- `[库] 博客上的更多 Train 用例 `_
强化学习
----------------------
RLlib 是一个强化学习 (RL) 开源类库,为生产级、高度分布式的 RL 工作负载提供支持,同时为各种行业应用程序维护统一而简单的 API。 RLlib 被许多不同垂直领域的行业领导者使用,如气候控制、工业控制、制造和物流、金融、游戏、汽车、机器人、船舶设计等。
.. figure:: /images/rllib_use_case.png
分布式近端优化(DD-PPO)架构。
使用以下资源了解有关强化学习的更多信息。
- `[课程] 使用 RLlib 应用于强化学习 `_
- `[博客] RLlib 介绍:环境示例 `_
- :doc:`[指引] RLlib 入门 `
- `[讨论] Riot Games 深度强化学习 `_
- :doc:`[库] RLlib 示例库 `
- `[库] 博客上的更多 RL 用例 `_
ML平台
-----------
Ray 及其人工智能库为希望简化ML平台的团队提供了统一的计算运行时。
Ray 及其库(如 Ray Train、Ray Data 和 Ray Serve)可用于组成端到端ML工作流,为数据预处理提供功能和 API,
作为训练的一部分,并从训练过渡到服务。
在 :ref:`本章节 ` 中阅读有关使用Ray构建ML平台的更多信息。
..
https://docs.google.com/drawings/d/1PFA0uJTq7SDKxzd7RHzjb5Sz3o1WvP13abEJbD0HXTE/edit
.. image:: /images/ray-air.svg
端到端 ML 工作流
-----------------------
以下重点介绍了利用 Ray AI 库实现端到端 ML 工作流的示例。
- :doc:`[示例] 基于 Ray 的文本分类 `
- :doc:`[示例] 基于 Ray 的对象检测 `
- :doc:`[示例] 基于表格数据的机器学习 `
- :doc:`[示例] 基于 Ray 的时序 AutoML `
大规模工作负载编排
----------------------------------
以下重点介绍了利用 Ray Core 的分布式 API 简化大规模工作负载编排的功能项目。
- `[博客] 蚂蚁集团基于 Ray 的高可用性和可扩展的在线应用程序 `_
- `[博客] Ray Forward 2022 Conference: Hyper-scale Ray Application Use Cases `_
- `[博客] 使用 Ray 在 CloudSort 基准测试上创下新的世界纪录 `_
- :doc:`[示例] 通过与 Ray 并行化来加快网络爬虫的速度 `