工具包的安装
前言
通过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