来让AI打游戏 - ML-Agents

〇、阅读本文

阅读本文你能了解到

1、配置 ML-Agents 运行官方例程

2、CPU?GPU?玄学?

一、配置 ML-Agents

科学上网的小伙伴可以参考这里,和这里的两个视频。ML-Agents 的 Github 地址在这里

ML-Agents 是一个开源的 Unity 插件,能使游戏成为训练智能 agent 的环境。可以通过加强学习(reinforcement learning),模仿学习(initation learning),神经网络进化(neuroevolution)等机器学习算法进行训练,而且提供了一个简单易用的 Python 接口。为游戏开发者和人工智能研究者提供了一个共同的平台

目前 ML-Agents 的结构如下:

fig14.PNG

在配置之前,你可能需要根据这篇文章来配置 python 环境,安装 Unity。克隆 ML-Agents 仓库。

打开 Anaconda Prompt,进入本地 ML-Agents 目录下的 Python 文件夹,执行命令安装依赖库:

1
pip install .

fig4.PNG

接下来我们打开 Unity ,单击 “Open” 打开 ML-Agents 目录下的 “unity-environment” 工程文件夹。

  1. 在 Project 面板中将 Example - 3DBall 中的 Scene 场景添加到 Hierarchy 面板中;

  2. 将 Ball3DBrain 的 Brain(Script) 中的 Brain Type 修改为 “External”;
    fig17.jpg

  3. 检查 Build Setting 和 Player Setting 的配置是否正确:注意下图画圈的位置要完全一样,最后点击 “build” 导出 ball.exe 到之前的 Python 文件夹中。

fig16.jpg
fig15.jpg

下面开始进行模型的训练,在刚刚打开的 Anaconda Prompt (注意要在 Python 目录下)中输入命令:

1
jupyter notebook

fig5.PNG

此时在浏览器中打开了 jupyter,我们打开 PPO.ipynb,将图中划线位置的变量值改为我们
刚刚导出的 exe 文件名,“ball”:

fig6.jpg

点击 “Run” 训练模型,执行完 Train the Agent(s) 后面的代码,此时弹出了 ball.exe 的小窗口,训练开始。

fig7.PNG

为了看到可视化的训练数据,我们可以借助 Tensorboard。新打开一个 Anaconda Prompt,进入到 Python 目录,输入:

1
tensorboard --logdir=summaries

复制下面的网址,在浏览器中打开就可以看到训练曲线了。

fig9.PNG

当在 jupyter 的输出日志中显示 “save model” 后,即可停止程序的运行,接着运行最后一部分 “Export the trained Tensorflow graph” 后面的代码,导出模型(在 python\models\ppo 中)ball.bytes。

回到 Unity 中,我们将得到的 ball.bytes 拖拽到 Project 面板的 TFModels 文件夹下,同时将 Ball3DBrain 中的 Brain Type 修改为 “Internal”, 将刚刚生成的训练文件拖拽到下面 “Graph Scope” 处。

fig18.PNG

最后在这里下载最后一个插件,双击打开下载好的文件,导入到 Unity 工程中,可能会需要一点时间。最后,检查一下 PlayerSetting - OtherSetting 中的 Scripting Runtime Version 是否为 4.6 版本(不清楚为什么),然后在 Scripting Define Sympols 下面添加 “ENABLE_TENSORFLOW”。

fig19.PNG

点击运行,就可以看到我们最终的学习结果了!

在视频中,学习的结果是这样的:

result.gif

而我的学习结果……

myresult.gif

好吧……

二、CPU 版本和 GPU 版本的 TensorFlow

这里再记录一个小疑惑。

在安装 ML-Agents 的依赖库的时候,会发现安装了 CPU 版本的 Tensorflow。此时我发现,再次运行卷积网络代码的时候,不再使用 GPU 了,而且训练 Agent 的时候,运行的 Python 也是只使用了 CPU。

fig10.PNG
只使用了 CPU 进行计算

而将两个版本的 Tensorflow 全部卸载以后

1
2
pip uninstall tensorflow
pip uninstall tensorflow-gpu

重新安装 GPU 版本,就一切正常了。

fig12.PNG
虽然 GPU 只有 6.9%

但是当我想要复现这个问题,重新安装了 CPU 版本时,又可以正常使用显卡计算了。

不清楚为什么,可能是玄学?
希望以后了解了原因再来记录一下。