使用 Amazon SageMaker AI RL 的示例 RL 工作流程 - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon SageMaker AI RL 的示例 RL 工作流程

下面的示例介绍使用 Amazon SageMaker AI RL 开发 RL 模型的步骤。

  1. 表述 RL 问题 – 首先,将业务问题表述为 RL 问题。例如,自动扩缩使得服务可以根据您定义的条件动态增加或缩小容量。目前,此功能要求设置警报、扩展策略、阈值以及其他手动操作。为使用 RL 解决这个问题,我们定义了马尔可夫决策过程的各个组件:

    1. 目标 – 扩展实例容量,以便与所需的负载配置文件相匹配。

    2. 环境 – 包含负载配置文件的自定义环境。它会生成一个具有每天变化和每周变化以及临时峰值的模拟负载。这个模拟系统在请求新资源的时间与资源变为可用于处理请求的时间之间存在延迟。

    3. 状态 – 当前负载、失败的作业数以及活跃的机器数。

    4. 操作 – 删除、添加或保留相同数量的实例。

    5. 奖励 – 因事务成功而获得的积极奖励,因事务超过特定阈值而失败遭到的高额惩罚。

  2. 定义 RL 环境 – RL 环境可以是与 RL 代理交互的真实世界,也可以是对真实世界的模拟。您可以连接使用 Gym 接口开发的开源和自定义环境,以及 MATLAB 和 Simulink 等商业模拟环境。

  3. 定义预设 – 预设用于配置 RL 训练作业,并定义 RL 算法的超参数。

  4. 编写训练代码:将训练代码写成 Python 脚本,并将脚本传递给 SageMaker AI 训练作业。在训练代码中,导入环境文件和预设文件,然后定义 main() 函数。

  5. 训练 RL 模型:在 Amazon SageMaker Python SDK 中使用 SageMaker AI RLEstimator,以启动 RL 训练作业。如果您使用本地模式,训练作业在笔记本实例上运行。如果使用 SageMaker AI 进行训练,则可以选择 GPU 或 CPU 实例。如果在本地模式下进行训练,则将训练作业的输出存储在本地目录中;或者,如果使用 SageMaker AI 训练,则将输出存储在 Amazon S3 上。

    RLEstimator 要求将以下信息作为参数。

    1. 在其中上传环境、预设和训练代码的源目录。

    2. 训练脚本的路径。

    3. 您要使用的 RL 工具包和深度学习框架。这会自动解析为 RL 容器的 Amazon ECR 路径。

    4. 训练参数,例如实例计数、作业名称以及输出的 S3 路径。

    5. 要在日志中捕获的指标定义。这些也可以在 CloudWatch 和 SageMaker AI 笔记本中可视化。

  6. 可视化训练指标和输出 – 使用 RL 模型的训练作业完成后,您可以在 CloudWatch 中查看训练作业中定义的指标。您也可以使用 Amazon SageMaker Python SDK 分析库,在笔记本中绘制指标。可视化指标可帮助您了解以奖励衡量的模型性能如何随着时间推移而改进。

    注意

    如果您以本地模式训练,就无法在 CloudWatch 中可视化指标。

  7. 评估模型 – 先前训练模型中的检查点数据可以传递到检查点通道中进行评估和推理。在本地模式下,使用本地目录。在 SageMaker AI 训练模式下,您需要先将数据上传到 S3。

  8. 部署 RL 模型:最后,将经过训练的模型部署在托管于 SageMaker AI 容器中的端点上,或者使用 AWS IoT Greengrass 部署在边缘设备上。

有关将 RL 与 SageMaker AI 结合使用的更多信息,请参阅 Using RL with the SageMaker Python SDK