强化学习+Unity仿真(二):工具包安装

本文介绍了如何在Unity中安装MLAgents包,在Python端通过Anaconda创建虚拟环境并安装ml-agents、ml-agents-envs等相关包,以支持强化学习算法的训练和环境构建。同时提到了可能出现的包冲突问题及其解决方案。
Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

工具包的安装


前言


通过Unity Machine Learning Agents工具包在Unity场景中训练强化学习算法,工具包源地址。其中算法的实现通过Python完成,训练环境则通过Unity搭建。本文主要介绍该包的安装,主要包含在Unity端安装ML Agents包和在Python端安装ml-agents包、ml-agents-envs包与gym-unity包。Unity版本需在2019.4或后续版本,Python版本需3.6.1或更高(建议为3.6或3.7)。

一、Unity端ML Agents包

打开Unity的包管理器,可以在Unity Registry中找到ML Agents包,选择想要的版本点击安装既可。如图所示,我选择安装了2.0.1版本。
在这里插入图片描述
ML Agents包包含Unity ML-Agents工具包的主要C# SDK。

该包允许你将任何Unity场景转换为学习环境,并使用各种机器学习算法训练角色行为。此外,它还允许你将这些训练好的行为嵌入到Unity场景中来控制你的角色。更具体地说,该软件包提供了以下核心功能:

  • 定义智能体:实体或角色,其行为将被学习。智能体观察环境(通过传感器),采取动作并从环境中获得奖励。
  • 定义行为:规定智能体行为方式的实体。多个智能体可以共享同一个行为,一个场景可以有多个行为。
  • 在编辑器中记录智能体的演示。您可以使用演示来帮助训练该智能体的行为。
  • 通过Unity推理引擎将训练好的行为嵌入场景中。嵌入的行为允许你切换智能体的学习或推理模式。
    注意,ML Agents包不包含用于训练行为的机器学习算法。ML-Agents包只支持对Unity场景进行检测,设置它进行训练,然后将训练好的模型嵌入到Unity场景中。协调训练的机器学习算法是配套的Python包的一部分。
    如果在Unity Registry未找到ML Agents包,可参考第三节进行安装(跳过第二节,直接到第三节)。

二、Python端包的安装


为了避免包版本的冲突,需按Unity中所安装的包的文档要求安装对应版本的Python包。建议使用Anaconda来管理包。

  • 首先,在Anaconda中新建一个虚拟环境,命名为ml-agents-learning(自定义)。在Anaconda Prompt窗口中输入如下命令既可。运行过程中会遇到“Proceed ([y]/n)?”,输入 y 然后回车。其中-n用于指定要创建的环境的名称。在这里我指定该虚拟环境的Python版本为3.7。
conda create -n ml-agents-learning python=3.7
  • 创建完成后,激活环境。输入如下命令既可。
conda activate ml-agents-learning

在Windows上,必须在安装ML-Agents之前单独安装PyTorch软件包。在上述Unity ML-Agents版本对应的文档中,给出PyTorch安装命令为:

pip3 install torch~=1.7.1 -f https://download.pytorch.org/whl/torch_stable.html

建议直接按此命令安装。

  • 在虚拟环境中运行下面命令,安装mlagents包。
python -m pip install mlagents==0.26.0

这将从PyPi安装该包,而不是从克隆到本地的项目仓库。运行此命令时,列在项目setup.py文件里的依赖将也被安装。

  • 至此,所有包安装完毕,运行下面命令来判断是否安装正确。该命令会列出你可以用mlagents-learn命令使用的所有命令行参数。
mlagents-learn --help

虽然按照官方文档来安装,尽量避免了包的冲突,但还是可能会遇到下面这个问题:

AttributeError: 'str' object has no attribute '_key'

这是importlib-metadata包版本带来的问题,运行下面命令安装其他版本的包既可。

pip install importlib-metadata==4.4

最后,找了一个例子来试着训练(后续章节更新),可见,运行后无任何报错,无任何警告。
在这里插入图片描述

三、另一种安装方法:克隆项目到本地后安装

也可以直接从工具包源地址下载项目,在Unity中通过包管理器的从磁盘导入包的功能,导入位于com.unity.ml-agents文件夹下的package.json文件,在Anaconda的虚拟环境中,先将路径切换至项目路径,然后依次运行以下命令,必须严格按照顺序运行。

pip3 install torch -f https://download.pytorch.org/whl/torch_stable.html
pip3 install -e ./ml-agents-envs
pip3 install -e ./ml-agents

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 如何在 Unity3D 中实现强化学习 #### 使用 Unity ML-Agents 工具包设置环境 为了使 Unity 环境能够支持机器学习UnityEnvWrapper 将 Unity 环境保存为进制文件。加载此环境需调用 Unity ML-Agents 的 Python API;具体来说,`UnityEnvironment` 接口接受环境名称作为输入,并提供一个用于互动的环境实例对象[^1]。 ```python from mlagents_envs.environment import UnityEnvironment env = UnityEnvironment(file_name="path_to_your_build", no_graphics=True) ``` 接着,通过 `UnityToGymWrapper` 对象封装上述创建的环境实体,从而兼容 Ray RLLib 和 SageMaker RL 所需的数据结构形式,使得这些平台能顺利处理来自 Unity 场景的信息流。 #### 配置 MyLauncher 类启动训练过程 MyLauncher 继承自 SageMakerRayLauncher 抽象基类,旨在让 Amazon SageMaker 平台上的应用程序得以运用 Ray RLLib 进行分布式计算资源下的高效模型训练工作。在此上下文中定义了若干关键属性与方法来描述待解决问题域内的动态特性——比如注册可供使用的仿真场景及其内部逻辑规则集、设定初始参数表单(如折扣系数 gamma、学习速率 alpha)、指定最大轮次限制等超参数配置项。 ```python class MyLauncher(SageMakerRayLauncher): def register_env(self): from ray.tune.registry import register_env from unity_wrapper import UnityToGymWrapper env_name = "your_environment_name" def create_unity_env(env_config={}): return UnityToGymWrapper(UnityEnvironment(...)) register_env(env_name, create_unity_env) def get_experiment_spec(self): spec = { 'training': { ... }, 'evaluation': { ... } } return spec ``` #### 实施 PPO 强化学习算法优化决策制定流程 考虑到 Policy Gradient 方法可能存在的收敛速度慢及稳定性差等问题,PPO 提出了改进措施以确保每次更新都能朝着更优解前进而不至于偏离太远。该技术特别适用于连续动作空间的任务模拟环境中,因为它允许代理基于历史经验调整未来行动倾向度量值,进而逐步逼近全局最优策略方案[^4]。
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值