使用Amazon SageMaker RL 和Unity训练强化学习智能体

【更新记录】

  • 2022年3月25日 更新原始内容

Unity 是最受欢迎的游戏引擎之一,不仅用于视频游戏开发,还被电影和汽车等行业采用。 Unity 提供工具来创建具有可定制物理、风景和角色的虚拟模拟环境。 Unity 机器学习代理工具包 (ML-Agents) 是一个开源项目,使开发人员能够针对在 Unity 上创建的环境训练强化学习 (RL) 智能体。

强化学习是机器学习 (ML) 的一个领域,它教导软件代理如何在环境中采取行动,以最大限度地实现长期目标。有关更多信息,请参阅 Amazon SageMaker RL – 使用 Amazon SageMaker 进行托管强化学习。 ML-Agents 正在成为许多游戏公司中越来越流行的工具,用于游戏关卡难度设计、错误修复和作弊检测等用例。目前,ML-Agents 用于在本地训练代理,无法扩展以有效使用更多计算资源。在获得经过训练的模型之前,您必须在本地 Unity 引擎上训练 RL 代理很长时间。该过程耗时且不可扩展以处理大量数据。

在这篇博文中,我们通过将 ML-Agents Unity 接口与 Amazon SageMaker RL 集成来演示解决方案,使您能够以完全托管和可扩展的方式在 Amazon SageMaker 上训练 RL 代理。

1. Overview of solution

SageMaker 是一项完全托管的服务,可实现快速模型开发。 它提供了许多内置功能来帮助您进行训练、调优、调试和模型部署。 SageMaker RL 构建在 SageMaker 之上,添加了预构建的 RL 库并使其易于与不同的仿真环境集成。 您可以使用 TensorFlow 和 PyTorch 等内置深度学习框架和 RLlib 库中的各种内置 RL 算法来训练 RL 策略。 训练和推理的基础设施完全由 SageMaker 管理,因此您可以专注于 RL 制定。 SageMaker RL 还提供了一组 Jupyter 笔记本,展示了机器人、运筹学、金融等领域的各种领域 RL 应用。

下图说明了我们的解决方案架构。
在这里插入图片描述
在这篇文章中,我们通过与示例 Unity 环境进行交互,详细介绍了在 SageMaker 上训练 RL 代理的细节。 要访问本文的完整笔记本,请参阅 GitHub 上的 SageMaker 笔记本示例。

设置环境
首先,我们导入所需的 Python 库并为权限和配置设置环境。 以下代码包含设置 Amazon Simple Storage Service (Amazon S3) 存储桶、定义训练作业前缀、指定训练作业位置以及创建 AWS Identity and Access Management (IAM) 角色的步骤:

import sagemaker
import boto3
 
# set up the linkage and authentication to the S3 bucket
sage_session = sagemaker.session.Session()
s3_bucket = sage_session.default_bucket()  
s3_output_path = 's3://{}/'.format(s3_bucket)
print("S3 bucket path: {}".format(s3_output_path))

# create a descriptive job name
job_name_prefix = 'rl-unity-ray'

# configure where training happens – local or SageMaker instance
local_mode = False

if local_mode:
    instance_type = 'local'
else:
    # If on SageMaker, pick the instance type
    instance_type = "ml.c5.2xlarge"

# create an IAM role
try:
    role = sagemaker.get_execution_role()
except:
    role = get_execution_role()

print("Using IAM role arn: {}".format(role))

2. Building a Docker container

SageMaker 使用 Docker 容器来运行脚本、训练算法和部署模型。 Docker 容器是一个独立的软件包,用于管理所有代码和依赖项,它包含运行应用程序所需的一切。 我们首先在包含 Ray 依赖项的预构建 SageMaker Docker 映像之上构建,然后安装所需的核心包:

  • gym-unity – Unity 提供了一个包装器,将 Unity 环境包装到一个健身房界面中,这是一个开源库,可让您访问一组经典的 RL 环境
  • mlagents-envs – 提供 Python API 以允许与 Unity 游戏引擎直接交互的包

根据机器的状态,Docker 构建过程可能需要长达 10 分钟。 有关所有预构建的 SageMaker RL Docker 映像,请参阅 GitHub 存储库。

3. Unity environment example

在这篇文章中,我们使用了一个名为 Basic 的简单示例 Unity 环境。 在下面的可视化中,我们控制的代理是向左或向右移动的蓝色框。 对于它采取的每一步,它都会花费代理一些能量,从而产生小的负奖励(-0.01)。 绿球是具有固定位置的目标。 智能体在绿球之间随机初始化,并在与绿球碰撞时收集奖励。 大绿球提供+1的奖励,小绿球提供+0.1的奖励。 该任务的目标是训练智能体朝着提供最多累积奖励的球移动。

在这里插入图片描述

4. Model training, evaluation, and deployment

在本节中,我们将引导您完成训练、评估和部署模型的步骤。

编写训练脚本
在启动 SageMaker RL 训练作业之前,我们需要指定训练过程的配置。 它通常在笔记本之外的单个脚本中实现。 训练脚本定义了 RL 训练的输入(Unity 环境)和算法。 以下代码显示了脚本的外观:

import json
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@RichardWang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值