The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents. We provide implementations (based on PyTorch) of state-of-the-art algorithms to enable game developers and hobbyists to easily train intelligent agents for 2D, 3D and VR/AR games. Researchers can also use the provided simple-to-use Python API to train Agents using reinforcement learning, imitation learning, neuroevolution, or any other methods. These trained agents can be used for multiple purposes, including controlling NPC behavior (in a variety of settings such as multi-agent and adversarial), automated testing of game builds and evaluating different game design decisions pre-release. The ML-Agents Toolkit is mutually beneficial for both game developers and AI researchers as it provides a central platform where advances in AI can be evaluated on Unity’s rich environments and then made accessible to the wider research and game developer communities.
译文:
Unity Machine Learning Agents (ML-Agents) 是一款开源的 Unity 插件, 使得我们得以在游戏环境和模拟环境中训练智能 agent。您可以使用 reinforcement learning(强化学习)、imitation learning(模仿学习)、neuroevolution(神经进化)或其他机器学习方法, 通过简单易用的 Python API进行控制,对 Agent 进行训练。我们还提供最先进算法的实现方式(基于 TensorFlow),让游戏开发者和业余爱好者能够轻松地 训练用于 2D、3D 和 VR/AR 游戏的智能 agent。 这些经过训练的 agent 可用于多种目的, 包括控制 NPC 行为(采用各种设置, 例如多个 agent 和对抗)、对游戏内部版本进行自动化测试、以及评估不同游戏设计决策的预发布版本。ML-Agents 对于游戏开发者和 AI 研究人员双方 都有利,因为它提供了一个集中的平台, 使得我们得以在 Unity 的丰富环境中测试 AI 的最新进展, 并使结果为更多的研究者和游戏开发者所用。
操作环境:Win10
ML-Agent 版本:Release 20 (所有版本下载地址)
Unity 版本:2021.3.18f1
Anaconda 安装文件:Anaconda3-2022.10-Windows-x86_64.exe (官方网站) 该版本自带 Python3.9
Anaconda,译为大蟒蛇,是一个开源的 Python 发行版本,其包含了 conda、Python 等180多个科学包及其依赖项。
在查阅网络资料的过程中,有些文章是直接使用 Python + pip 的形式进行设置,而有些是使用 Anaconda 中的 Python + conda 来进行设置。
conda 是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。
pip 是用于安装和管理软件包的包管理器。
conda 比 pip 的环境管理更为简单,并且不会影响系统自带的 Python,而 pip 的限制较多并且仅适用于 Python。
由于 ML-Agent 的官方文档中本身就需要设置 Python 的虚拟环境,而 Anaconda 可以使用 conda 去更加简单的配置虚拟环境,所以选择安装 Anaconda。
具体的安装方式基本就是点击官方的 exe 文件进行安装,可以参阅此篇文章。
重要的事情说三遍。一开始因为习惯将文件安装到自己定义的 Program Files
文件夹中,而此文件夹名称带有空格,结果就是各种报错。后来看到一篇文章里提到了这个问题才知道。
conda list
,可以查看已经安装的包名和版本号,若正常显示就说明安装成功。 conda --version
能够成功显示版本号也说明安装成功,如下所示。(base) C:\Users\Administrator>conda --version
conda 23.1.0
之后使用 Anaconda 时,可以直接去开始菜单 -> Anaconda3 (64-bit) -> Anaconda Prompt (Anaconda3)
看了一圈网上的文章,由于有些文章的时间比较久了,所以可能跟目前的新版本不太匹配,会造成一些误区。
推荐和官方文档一起食用,味道更佳。
目前最新的的 git 工程版本是 Release 20,可直接在 git 下载,或者在所有版本下载地址下载
需要注意的是,不同的版本有各自的配置需求,这些需求都会在官方文档中提及,需要引起重视。
Release 20 版本的需求如下:
需要着重提起的问题是关于 Unity 的 ml-agents 组件,目前网上的文章基本都是推荐在 Unity 的 Package Manager 下载最新版 ML-Agents 组件,实际这样做可能会导致一系列的报错。
根据官方文档的流程,正确的方式如下:
+
号Add package from disk...
com.unity.ml-agents
package.json
文件并打开
但是此时依然会有报错,而这就是另一个目前网上文章会导致的误区:只安装 ML-Agents 组件是不够的。
根据官方文档的流程,我们还需要安装一个叫 com.unity.ml-agents.extensions
的插件,而流程也和上面的大致相同,该插件同样可以从 Release 20 的压缩包中找到。
另外,如果将全部 Release 20 中的示例都拷贝进入 Unity 工程中时,可能还需要引入 Input System
插件,该插件直接从 Package Manager 中下载最新版即可。
此外,需要注意的是,如果在引入本地插件之后,改变了该插件的位置,会导致工程报错,此时需要在 Package Manager 中重新定位一下插件。
打开 Anaconda Prompt 进入控制台
// 查看已有的所有环境
conda-env list
如果没有创建过环境时,就会显示如下:
(base) C:\Users\Administrator>conda-env list
# conda environments:
#
base * C:\anaconda\Anaconda3
创建环境的命令如下:
// 创建新环境
conda create -n ml-agents python=3.9
ml-agents
是环境名称,此处可以自己设置。python=3.9
是将该环境设置成 Python 3.9 版本,此处也可以自己配置,但是需要符合 ML-Agent 的最低标准。激活环境
打开 Anaconda Prompt 时默认的路径如下:
(base) C:\Users\Administrator>
// 激活 ml-agents 环境
(base) C:\Users\Administrator>activate ml-agents
(ml-agents) C:\Users\Administrator>
可以看到,激活后前方的 (base)
变成了 (ml-agents)
,说明此时处于 ml-agents
的虚拟环境中。
退出环境:
当前版本退出环境的命令如下:
// 退出 ml-agents 环境
(ml-agents) C:\Users\Administrator>conda deactivate
(base) C:\Users\Administrator>
可能是由于版本问题,网上有些文章中的退出命令和此处使用的不同。
升级 pip:
进入 ml-agents 环境,执行升级 pip 的命令,保证 pip 是比较新的版本,否则可能在下载其他插件的过程中出现问题。
(ml-agents) C:\Users\Administrator>python.exe -m pip install --upgrade pip
(base) C:\Users\Administrator> activate ml-agents
(ml-agents) C:\Users\Administrator>pip3 install torch~=1.7.1 -f https://download.pytorch.org/whl/torch_stable.html
-f
就是从指定 url 文件中查找包的下载链接,从后面紧跟的 url 参数获得的文件中,找 pip 要安装的包文件(而不是从默认的 pip 安装源)。
为了进行自定义的训练,还需要安装两个 Python 包,这两个包都包含在 Release 20 的压缩文件中。
ml-agents
:包含了机器学习算法,使用户能够在 Unity 场景中训练行为。ml-agents-envs
:包含一组 Python API,用于与 Unity 场景交互,它是促进 Unity 场景和 Python 机器学习算法之间数据消息传递的基础层。因此,ml-agents
依赖于 ml-agents-envs
。安装方式是打开 Anaconda Prompt,激活之前创建的 ml-agents 环境,然后通过 cd
命令分别导航到 Release 20 解压的文件夹内对应的目录中,之后使用 pip 命令进行安装。
pip install .
在安装 ml-agents-envs
过程中有可能会遇到报错:
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
1. Downgrade the protobuf package to 3.20.x or lower.
2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
根据需求就是下载低版本的 protobuf
即可。
经过试错,我下载了 3.19.6
版本
pip3 install protobuf==3.19.6
之后就可以正常安装了。
全部安装完成后,可以使用 mlagents-learn --help
来测试是否安装成功。
至此,初步的 Unity ML-Agents 环境就布置结束了,接下来就可以尝试使用官方给出的几个 Demo 了。