ml-agents操作文档
安装和设置
要安装和使用ML-Agents,您需要安装Unity,克隆这个存储库并安装Python以及其他依赖项。除了实验性Docker设置之外,下面的每个小节都会概述每个步骤。
安装Unity2017.1或更高版本
下载Unity的链接https://store.unity.com/download并安装Unity。
克隆ml-agents储存库
安装完成后,您需要克隆ML-Agents GitHub存储库。
git clone git@github.com:Unity-Technologies/ml-agents.git
在unity-environment此存储库目录包含统一资产添加到您的项目。该python目录包含培训代码。这两个目录都位于存储库的根目录。
安装Python(具有依赖关系)
为了使用ML-Agents,需要Python 3以及需求文件中列出的依赖项。一些主要的依赖包括:
2)Jupyter
Windows用户
如果您是一位刚接触Python和TensorFlow的Windows用户,请按照以下指南设置您的Python环境。
第一步:通过Anaconda安装python
从这个链接https://www.anaconda.com/download/#windows进行Anaconda下载,您可以为不同的Python分布管理不同的环境。由于我们不再支持Python 2,因此需要Python 3。在本指南中,我们使用Python 3.6版和Anaconda 5.1版(64位或32位直接链接)。
我们建议使用默认的高级安装选项。但是,请选择适合您的具体情况的选项。
安装后,您必须打开Anaconda Navigator才能完成设置。在Windows搜索栏中,输入anaconda导航器。打开后您可以关闭AnacondaNavigator。
第2步:安装并激活新的Conda环境
您将创建一个新的Conda环境用于ML-Agents。这意味着您安装的所有软件包都已本地化为只有此环境。它不会影响任何其他Python或其他环境的安装。无论何时你想运行ML-Agents,你都需要激活这个Conda环境。要创建新的Conda环境,请打开一个新的Anaconda提示(搜索栏中的Anaconda提示)并输入以下命令:
conda create -n ml-agents python=3.6
您可能会被要求安装新的软件包。键入y并按回车键(确保您已连接到互联网)。您必须安装这些必需的软件包。新的Conda环境被称为ml-agents,并使用Python版本3.6。
要使用这个环境,你必须激活它。(要使用此环境将来,您可以运行相同的命令)。在同一个Anaconda提示符下,输入以下命令:
conda activate ml-agents或者不用命令行直接在anaconda打开ml-agents
可以看到ml-agents出现在最左边
第3步:安装必需的Python软件包
ML-Agents取决于很多Python包。使用pip安装这些Python的依赖关系。
如果您还没有,请将ML-Agents Github存储库克隆到本地计算机。您可以使用Git(在此https://git-scm.com/download/win下载)并在Anaconda Prompt中运行以下命令(如果您打开新提示,请确保通过键入来激活ml-agents Conda环境activate ml-agents):
git clone git@github.com:Unity-Technologies/ml-agents.git
如果你不想使用Git,你可以直接在https://github.com/Unity-Technologies/ml-agents/archive/master.zip直接下载所有的文件。
在我们的例子中,这些文件位于C:\Downloads。在从Anaconda提示符中克隆或下载文件后,切换到ML-agents目录内的python目录:
cdC:\Downloads\ml-agents\python确保你已连接到互联网,然后输入Anaconda提示符:
pip install .
第4步安装tensorflow-gpu:
这是高级用户想要使用GPU进行训练的指南。此外,您需要检查您的GPU是否兼容CUDA。请在这https://developer.nvidia.com/cuda-gpus查看Nvidia的页面。首先查看我的显卡
1)首先在桌面鼠标右键查看显卡类型
本来自己的显卡是GTX750版本太低无法装载高版本的cuda(比如cuda8.0)
2)安装Nvidia CUDA工具包
从Nvidia的档案下载https://developer.nvidia.com/cuda-toolkit-archive
(温馨提示最好不要装最新版本的cuda可能最新版还不支持TensorFlow,本文作者一开始安装了最新版本的cuda9.1之后出现下面的错误)
并安装CUDA工具包。该工具包包括GPU加速库,调试和优化工具,C/C ++编译器和运行时库在安装之前,请确保关闭任何正在运行的Unity或Visual Studio实例。
请注意您安装CUDA工具包的目录。在本指南中,我们安装在目录中C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v9.0
3) 安装Nvidia cuDNN库
从 https://developer.nvidia.com/cudnn下载并安装cuDNN库。cuDNN是一个GPU加速的深层神经网络原语库。在您下载之前,您需要免费注册Nvidia开发者计划。
注册后,返回到cuDNN 下载页面。您可能会或可能不会被要求填写一个简短的调查。当您到达cuDNN发布的列表时,请确保您正在为在步骤1中安装的CUDA工具包下载正确的版本。
下载完cuDNN文件后,您需要将文件解压缩到CUDA工具包目录中。在cuDNN zip文件中,有三个文件夹叫bin,include和lib
将这三个文件夹复制到CUDA工具包对应的目录中。CUDA工具包目录位于C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v9.0
4)设置环境变量
您将需要添加一个环境变量和两个路径变量。要设置环境变量,请输入environment variables搜索栏(可以通过点击Windows键或左下角的Windows按钮来达到此目的)。您应该看到一个名为“ 编辑系统环境变量”的选项。
从这里,点击环境变量按钮。点击New添加一个新的系统变量CUDA_HOME对于变量值,放置CUDA工具包的目录位置。在本指南中,目录位置是C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v9.0。按OK一次。(确保你在系统变量而不是用户变量下执行此操作。
分别在环境变量窗口和系统变量到一个变量PATH
,然后编辑。分别将下面两条路径各自添加到目录列表中(
在添加路径是需要注意前面必须用
;
分号隔开
)
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\CUPTI\libx64
5)安装tensorflow GPU
接下来,tensorflow-gpu使用安装pip。在Conda环境ml-agents激活的Anaconda Prompt中,输入以下命令(确保已连接到互联网):
pip install tensorflow-gpu
(注:因为我已经安装完tensorflow-gpu显示成这样)
测试tensorflow是否成功?
import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
结果显示:
查看tensorflow的类型
查看tensorflow的路径
(以上部分算上Ml-Agents的环境已经配置完毕了以下开始在Unity环境进行3D平衡球测试)
开始使用3D平衡球环境
本教程介绍了在Unity中打开ML-Agents示例环境,构建Unity可执行文件,在其中训练代理以及最终将训练好的模型嵌入到Unity环境中的端到端流程。
第一步Unity的设置
1)用unity2017.1 或以上的版本打开从https://github.com/Unity-Technologies/ml-agents上下载的ML-Agents工程。
并通过Unity找到下载后的文件Ml-agents-master下的Unity-environment进行导入
找到Assets/ML-Agents/Examples/3DBall/,打开scene文件。
2).选择Edit--->Project Settings ---> Player, 将Resolution and Presentation ---> Run in Background 勾上,并将Display Resolution Dialog 设置成Disabled.
3.在场景中选中游戏物体 Ball3DBrain (Ball3DAcademy的子物体),在Inspector界面里确保它的“Brain Type”属性设置成External.
4.按Ctrl + Shift + B 或者选中 File ---> Build Settings,选择你要导出的平台(一般是PC平台),然后选中Development Build 选项(非必须)。
(请记得勾选场景,不勾选场景的话后面的代码找不到场景运行出错)
5.点击Build按钮。然后把导出的exe文件目录设置到python目录下。(最好build到下载好的ml-agents\python的目录下以免后面有些文件没有拷贝过去(比如自己忘了把3Dball_Data文件拷贝过去就出错了))
我的文件是如下所示:
第二步:在Python环境下进行机器学习,训练AI:(这步超级关键搞了半天各种错误,最后还是成功了)
先说一种旧版本(release-0.2)的做法(就是自己刚开始没有运行成功最后问了博主原来这个方法运行必须要下载
这个版本)
1.进入Anaconda命令行,并输入: jupyter notebook ,它会在你的浏览器里打开一个新的网页。
2.更改jupyter notebook 的默认根目录,把启动目录设置为我们刚才用到的那个python 文件夹下.具体更改的方法:
1)打开 cmd 输入命令 jupyter notebook --generate-config
可以看到生成文件的路径
如上图可以看到,这个目录
这个就是生成的配置文件,打开后找到这个地方删除前面的’#‘然后填写自己的路径,比如我的ml-agents的路径如下
启动 jupyter notebook
3.重新进入jupyter notebook, 此时我们在浏览器将会看到python文件夹下的目录内容,打开PPO.ipynb,请确认你打开的文件后缀是.ipynb,而不是.py . 然后将文件内的env_name 的值设置成我们导出的.exe文件的名字。比如你导出的.exe文件名字叫做 ball.exe ,那么就把env_name 的值设置成 ball 。
4.点击最上面的工具栏Cell菜单,选择Run All 选项,然后python就运行起来了。机器就开始运行我们导出的.exe程序,并开始训练。后面会有一系列的输出。
运行完之后并出现 Save Model 时,表示保存了一些训练数据。此时我们可以选择关闭打开的.exe程序,此时训练也会暂停;也可以继续等待,让训练继续。
并自动在你运行的目录下产生两个文件:
(由于这个原因浪费我整整三个多小时没有解决此方法就此失败,有时候还出现如下的错误别慌因为你开启了多个运行窗口端口被占用了)
第二种方法:观看ml-agents的官方文档https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Getting-Started-with-Balance-Ball.md发现了一个更好的方法
接下来讲讲我尝试成功的方法:
1.进入ml-agents目录并输入(这步很关键)
python learn.py ball.exe --train
其中ball.exe是我自己保存的名字(注:每个人保存的名字并不会相同,因人而异)
该--train
标志告诉ML-Agents以训练模式运行。
模型正在训练中还会弹出一个窗口如下:(此视频一直在抖没事证明它正在训练)
运行到50000次左右就自动停止训练了并保存模型如下:
并自动在你运行的目录下产生两个文件:
第三步:将受过训练的大脑嵌入团结环境(实验)
一旦训练过程完成,并且训练过程保存模型(由SavedModel消息表示),您可以将其添加到Unity项目并将其用于具有内部大脑类型的代理。
设置TensorFlowSharp支持
由于TensorFlowSharp支持仍处于试验阶段,因此默认情况下它是禁用的。为了启用它,你必须遵循这些步骤。请注意,Internal大脑模式只有在完成这些步骤后才可用。
1.确保TensorFlowSharp插件位于您的Assets文件夹中。包含TF#的插件文件夹可以在https://s3.amazonaws.com/unity-ml-agents/0.3/TFSharpPlugin.unitypackage下载 。双击并下载后导入它。您可以通过检查项目选项卡中的Assets- > MLAgents-> Plugins- > 下的TensorFlow文件来查看是否已成功安装Computer。
2.转到Edit- > Project Settings- >Player
3.在场景中选中游戏物体 Ball3DBrain,把Brain Type 属性设置成Internal.
4. 对于每个平台你的目标
1)进入Other Settings。
2)选择Scripting Runtime Version到 Experimental (.NET 4.6 Equivalent)
3)在Scripting Defined Symbols,添加标志ENABLE_TENSORFLOW。输入后,按Enter键。(这步很重要我就是忘了添加所以导致错误)
5.转到File- >Save Project
6.重新启动Unity编辑器。
第四步:将训练好的模型嵌入到Unity中
1.移动ball_ppo.bytes从python/models/ppo/成 unity-environment/Assets/ML-Agents/Examples/3DBall/TFModels/。
2.把我们保存的二进制文件ball_ppo.bytes拖进Graph Model栏中。
3.点击 Play 按钮,观看训练结果。大功告成。