Unity 对接 ML-Agents 初探

一、ML-Agents 是什么

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

Anaconda,译为大蟒蛇,是一个开源的 Python 发行版本,其包含了 conda、Python 等180多个科学包及其依赖项。

在查阅网络资料的过程中,有些文章是直接使用 Python + pip 的形式进行设置,而有些是使用 Anaconda 中的 Python + conda 来进行设置。
conda 是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。
pip 是用于安装和管理软件包的包管理器。
conda 比 pip 的环境管理更为简单,并且不会影响系统自带的 Python,而 pip 的限制较多并且仅适用于 Python。

由于 ML-Agent 的官方文档中本身就需要设置 Python 的虚拟环境,而 Anaconda 可以使用 conda 去更加简单的配置虚拟环境,所以选择安装 Anaconda。

具体的安装方式基本就是点击官方的 exe 文件进行安装,可以参阅此篇文章

其中需要注意的是:
  1. 在 windows 环境下,安装的路径不能含有空格,同时不能是 “unicode” 编码。
  2. 在 windows 环境下,安装的路径不能含有空格,同时不能是 “unicode” 编码。
  3. 在 windows 环境下,安装的路径不能含有空格,同时不能是 “unicode” 编码。

重要的事情说三遍。一开始因为习惯将文件安装到自己定义的 Program Files 文件夹中,而此文件夹名称带有空格,结果就是各种报错。后来看到一篇文章里提到了这个问题才知道。

验证安装是否成功:
  1. 点击 “开始” 菜单
  2. 点击 “Anaconda3 (64-bit)”
  3. 点击 “Anaconda Prompt (Anaconda3)” 在控制台中输入 conda list,可以查看已经安装的包名和版本号,若正常显示就说明安装成功。
  4. 或者输入 conda --version 能够成功显示版本号也说明安装成功,如下所示。
(base) C:\Users\Administrator>conda --version
conda 23.1.0

之后使用 Anaconda 时,可以直接去开始菜单 -> Anaconda3 (64-bit) -> Anaconda Prompt (Anaconda3)


四、对接 ML-Agents 工程

看了一圈网上的文章,由于有些文章的时间比较久了,所以可能跟目前的新版本不太匹配,会造成一些误区。
推荐和官方文档一起食用,味道更佳。
目前最新的的 git 工程版本是 Release 20,可直接在 git 下载,或者在所有版本下载地址下载
在这里插入图片描述

需要注意的是,不同的版本有各自的配置需求,这些需求都会在官方文档中提及,需要引起重视。

Release 20 版本的需求如下:

  • Unity 版本需要是 2021.3 或更高
  • Python 版本需要是 3.8.13 或更高

需要着重提起的问题是关于 Unity 的 ml-agents 组件,目前网上的文章基本都是推荐在 Unity 的 Package Manager 下载最新版 ML-Agents 组件,实际这样做可能会导致一系列的报错。
在这里插入图片描述
根据官方文档的流程,正确的方式如下:

  • 导航到目录 Window -> Package Manager
  • 点击左上角 +
  • 选择 Add package from disk...
    在这里插入图片描述
  • 在目录中,选择从 git 上下载并解压的 Release 20 版压缩包,里面有一个文件夹叫 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 中创建 ML-Agent 环境

打开 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

六、安装 PyTorch

  • 激活创建的 ML-Agent 环境
(base) C:\Users\Administrator> activate ml-agents
  • 根据官方文档,使用 pip 指令下载 PyTorch,该插件较大需要耐心等待,如果中途报错可能是和网络有关,确保 pip 是最新版本,然后尝试重新下载,或者找一下其他的源。
(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 包

为了进行自定义的训练,还需要安装两个 Python 包,这两个包都包含在 Release 20 的压缩文件中。

  1. ml-agents :包含了机器学习算法,使用户能够在 Unity 场景中训练行为。
  2. 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 了。

猜你喜欢

转载自blog.csdn.net/EverNess010/article/details/129141930