一、ML-Agents简介

近期在学习Unity中的机器学习插件ML-Agents,做一些记录,用以简单记录或交流学习。

先简单说一下机器学习使用的环境场景:高视觉复杂度(Visual Complexity,例如星际争霸、Dota2职业玩家与AI竞技)、高物理复杂度(Physical Complexity,例如模拟两足、四足生物行走,这里Unity ML-Agents官方也有相关例子)、高认知复杂度(Congnitive Complexity,例如AlphaGo)。以上几种场景利用传统算法较难搞,而利用机器学习,会更加容易解决这些问题。

而ML-Agents(Machine Learning Agents),则是Unity中使用的一款开源机器学习插件,利用该插件,可以实现一些游戏对象的智能操作。例如控制 NPC 行为(采用各种设置, 例如多个 agent 和对抗)、对游戏内部版本进行自动化测试、以及评估不同游戏设计决策的预发布版本等等。

ML-Agents中主要有两种学习方法:强化学习(Reinforcement Learning)和模仿学习(Imitation Learning),它们各自特点如下:

  • 强化学习:通过奖励(Reward)学习;试错;超高速模拟;代理(Agent)在任务中趋向“最优”。官方最开始几个例子都是强化学习。

    如上图,其中Agent就是在游戏对象上的代理,通过外部环境(这里在训练的时是利用外部PythonAPI,或是使用训练好的TensorFlow模型)根据Agent的行为(Action)来返回激励(状态或是奖励),Agent接收到激励后,再改变自己的行为反馈给外部环境,从而形成闭环学习过程。

  • 模仿学习:通过示例(demonstration)学习;没有奖励的必要;实时交互;代理(Agent)在任务中趋向“人一样的行为”。

AI会借助特定模仿对象的行为学习,实际操作中AI会实时收集老师的示范操作,帮助学习,在实时交互的过程中,让AI更趋向人的行为。

更多ML-Agents的介绍会在之后记录,例如ML-Agents的架构等等。

二、环境部署及各软件版本

主要下载这么几个东西(附带版本号,近期入手的,所以版本都整最新的搞起【2020.03.08】):

  • Unity 2019.2.0f1 (64-bit)。这里用的是Unity2019.2版本,其他版本应该也行,最好2018保底。

  • ml-agents v0.15.0。官方ml-agents更新有点快,因为我最近学,所以也上最新master的了,但并不是稳定版本,与之前ml-agents有所区别,而且发现不需要在场景中建立附加Academy脚本的物体了,这玩意在最新版里搞成单例了。
  • CUDA v10.2.89。这个主要和显卡型号好像有关系,我的是RTX2070,我看网上有些是让下载CUDA_8.0,好像和我显卡不能匹配
  • cuDNN v7.6.5。这个又是和CUDA进行匹配的,下面会讲到。
  • Anaconda3 v2019.10。另外我建立的工程中,Python版本是v3.7.6TensorFlow的版本对应是2.0.1

下面一一讲解如何对这些进行安装。

三、安装CUDA与cuDNN

CUDA与cuDNN是干啥的,贴网上两段话:“CUDA是NVIDIA推出的CUDA运算平台的工具集,CUDA提供了一个强大的开发环境,用于开发高性能的GPU加速应用。通过CUDA,你能开发、优化和部署你的应用在多种平台,例如GPU加速嵌入式系统、桌面工作站,企业数据中心,云平台和HPC超级计算机。”、“cuDNN专门针对深度神经网络框架设计的一套GPU计算加速方案。全世界的深度学习研究者和框架开发者都使用CUDNN来增强GPU计算性能。”这里其实不太清楚对A卡是咋适配的,所以我默认使用的都是N卡。。。

简而言之,这两个东西就是给显卡配置环境的,让你的显卡具有机器计算的环境。话不多说,直接开始:

1、下载CUDA v10.2

地址:https://developer.nvidia.com/cuda-downloads

现在点进去应该直接就是10.2版本的下载,不是的话点击“Legacy Releases”找,也可以直接下载最新的试试看。我是Windows系统,因此以Windows为例(别的系统。。还是自己再找找有没有别的配置方案)。

点击之后出现如下画面,可以照我的选。

这里面Version是选系统的版本。Installer Type就是选择安装类型,如果选择exe(local),那就是要下载CUDA完整包,前面的exe(network)会利用官方的下载器下载。两个都可以试试,看哪个快,我是用下载器下载比较快。

2、安装CUDA

注意:开始安装CUDA前,需要关闭任何正在运行的Unity和Visual Studio程序。

如果下载network类型的话,下载好后直接打开,解压地址随意选择,点OK。出现如下画面。

注意:这里会检查系统的兼容性,如果不兼容的话,它会有Warning的提示,要是没有直接显示同意NVIDIA软件许可协议的话,就要注意了,这里应该是CUDA的版本与你的显卡不兼容,所以可以试着换个低版本的CUDA下载安装。

如果CUDA版本与显卡版本匹配的话直接显示许可协议同意,如下图。

后面的可以都默认,一路“下一步”,装完就OK。

3、安装cuDNN v10.2

地址:https://developer.nvidia.com/cudnn

在页面中选择“Download cuDNN”。

点击后,会出现以下画面,这里我们需要有一个NVIDIA的账号,有的话直接登录,没有的话花2分钟注册一个登录即可。

我这里直接登录,出现的画面中点击“I Agree to the Terms of the……”。

这里我们选择和之前CUDA对应的版本来下载,之前我们下载的是CUDA 10.2,因此直接选择第一个就行。打开选项后选择对应系统版本进行下载,我们这里选择Win10。

下载之后是一个压缩包,如下。

解压之后,将解压文件中的“bin”、“include”、“lib”三个文件夹覆盖到之前CUDA安装的路径下,如果之前CUDA安装时未改路径的话,应该是这个路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2

至此,CUDA和cuDNN安装完毕,下面还要对“环境变量”进行配置。

4、设置环境变量和路径

在开始菜单中,搜索“envir”,总之进入“编辑系统环境变量”。

点击“环境变量”。

然后在“系统变量”中点击“新建”,按下图输入。

注意,上面是用户的环境变量,下面是系统的环境变量,我之前没注意,都把这些变量加到上面去了,不过应该只要用自己的用户登录都行,大家可以把变量加到下面去。

然后还要在在系统变量的“Path”中加入两个路径。

以上就是CUDA和cuDNN的环境变量配置,之后装AnaConda3还需要进行环境变量配置,之后会有写到。

四、安装Anaconda

1、下载Anaconda3 2019.10

地址:https://www.anaconda.com/distribution/

进入网站后,找到下面的截图,按自己的系统需要下载。

下载好后,进行安装。

一路下一步就行,最好选择默认路径进行安装,里面的选项选不选也随意,然后Install就行。

2、Anaconda环境配置

这一步应该不是必须的,但以防万一,还是配置一下。还是进入“编辑系统环境变量”,在系统变量(或用户变量)的Path里新建以下四个地址(这里的地址是根据之前Anaconda安装路径来设定的,我这里的路径是默认路径):

五、ml-agents环境配置

1、下载ml-agents源码

下载地址:https://github.com/Unity-Technologies/ml-agents

我下的是master分支上的,也就是2020年3月5号左右,版本是0.15.0。

当然,在git上下载太慢了,而且下下来可能压缩包还包含错误,坑的呀批。所以建议利用码云下载,快捷方便,具体可以看下面网址的教程:

https://blog.csdn.net/TeFuirnever/article/details/99110367

下载好后在任意地方解压,如下。

以上源码下载好后,以作备用,下面先配置Anaconda。

2、Anaconda换源

在用Anaconda创建环境时,会自动下载相应的依赖库,包括python、tensorflow、pip、wheel等等。虽然我也不知道这些是干啥的。。。但是默认用国外的地址下载慢的要死,而且很有可能在创建环境时失败!

所以需要换下载这些库的地址,方法很多,网上很多是敲命令行,我这里直接修改配置文件来换源。找到C:\Users\文件下,有一个名为“.condarc”文件,则是Anaconda的配置文件,打开进行编辑。

可以直接按我的进行配置,我配置的是清华的镜像源,里面好像还乱入了个中科大的。

https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

然后保存,进行下面的步骤。

3、Anaconda创建环境

Anaconda的环境创建可以用Anaconda Prompt,也就是命令行来建立,也可以利用Anaconda Nvigator来创建,后者主要是可视化的创建过程。这玩意其实就是搭建训练平台,之后Unity中的项目训练通过socket和Anaconda中你搭建好的mlagents环境进行通信,实现训练过程。

首先找到“Anaconda Navigator”运行。

运行后找到“Environments”,新装的里面只有一个“base(root)”,我这里之前已经建立好了一个ML_Agents,不用管它,我们新建一个,点击“Create”。如下图:

点击后,出现如下对话框,其中Name随意写,Python版本就选3.7。

然后建立,会等一会儿,可以看到右下角有进度条不停滑动,如果这里滑动半天,最后提示失败,那就说明是因为依赖库没有下载下来,那你就需要参考前面的“Anaconda换源”来换个镜像地址试试看。

这里如果成功的话,我们进行下一步。

建立成功后,例如我建立的环境叫“EnvirExample”,然后点击三角符号,“Open Terminal”,这个时候我们就进入命令台模式了,之后都需要在这里输入命令进行操作。

到这里后,我们cd到之前下好ml-agents源码解压的地方,例如我这里是桌面地址,则输入如下命令:cd /d C:\Users\Xu\Desktop\ml-agents ,然后回车。

然后,下面需要恢复ml-agents需要的库,这里需要装两个文件夹里的东西,分别是ml-agents-envs和ml-agents。

因此,下一步我们在命令行里先敲: pip install -e ml-agents-envs 。如下:

按理来说,这里会进行就会自动下载依赖文件了,结果我在这里卡了好久,可能会出现以下错误:

整了半天,还有各种别的错误出现,最后总结出来的原因是,因为镜像站太慢或者是没有相对应的库,因此找到了解决方案:

http://www.manongjc.com/detail/8-newslizewxdvgby.html

上面的地址是解决方法,也可以不用看,在这一步,我们只需要修改命令为:

pip install -e ml-agents-envs -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

这样的话,就可以通过豆瓣镜像下载库了,这里大坑。成功后的样子:

然后,用同样的方法下载ml-agents文件架下的库,命令如下:

pip install -e ml-agents -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

若成功则显示如下:

上面的样子可能长得不一样,总之如果安装成功,那命令行里肯定没有类似黄色、红色的字体,就说明这两个文件夹中的环境配置成功了!最麻烦的配置已经过去了。下面我们就可以开始使用了!!激动激动~

六、ML-Agents试运行

1、Unity官方训练示例

我们这里直接用一个ml-agents官方的实例来实验一下,先打开Unity,打开官方的项目,官方项目就在ml-agents源码的“Project”文件夹中,如下图:

我用2019直接打开,会提示我源工程版本较老,自动升级一下就行。

打开项目后,我们在Project->Assets->ML-Agents->Examples->3DBall->Scenes->中找到3DBall场景,如下:

这里我们可以直接运行,可以看到12个小平台努力不让球掉落,这里每个平台的Agent已经有官方训练好的Model了,后缀名为.nn,如下图:

我们用ml-agents中的强化学习时,其实就是预先没有这个训练模型(即这个.nn文件),我们自己需要训练一个出来。

2、训练一个自己的模型出来

Unity先停止运行。

打开我们之前在Anaconda中的控制台,之前安装完环境应该还没关,当然要是关了重新打开的话,记的还是要选择我们创建的环境,我的是“EnvirExample”,然后打开Terminal。同时还要cd到ml-agents的目录去,我的在桌面,则输入:cd /d C:\Users\Xu\Desktop\ml-agents 。

总之需要满足前面括号里是你创建的环境,后面是ml-agents源码目录。

然后输入以下命令,准备开始训练:

mlagents-learn config\trainer_config.yaml --run-id=test01 --train

这里第二个“config\trainer_config.yaml”就是源文件中对此次训练的配置文件。

出现画面后,切换到Unity上开始运行项目。就可以进行训练啦~

这个例子应该会训练500000步,训练完后,会输出相应的模型文件。

这里就是训练出的模型,可以替换Unity中的模型文件,试试看自己训练出的数据。

在控制台里,还可以输入一下命令查看训练图:

tensorboard --logdir=summaries

然后在浏览器里复制地址,我这里的是http://localhost:6006/。打开之后就可以看到训练统计数据了~

至此,ml-agents的配置和初运行就大功告成啦~!

引用:https://www.bilibili.com/video/av49257917?from=search&seid=5553688680482591789

https://blog.csdn.net/u014361280/article/details/102782486#%E4%B8%80%E3%80%81ML-Agents%20%E4%BB%8B%E7%BB%8D

https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247490308&idx=1&sn=083e136e78c03836b766703bd33447ac&chksm=fe1e2fafc969a6b930497cf39727158072a688cfa6dcea7b9061c4b3aa2c005bb6a9f72c0302&scene=21#wechat_redirect

https://github.com/Unity-Technologies/ml-agents/

[2020.03]Unity ML-Agents v0.15.0 环境部署与试运行的更多相关文章

  1. CentOS7+ApacheServer2.4+MariaDB10.0+PHP7.0+禅道项目管理软件8.0环境部署

    CentOS7+ApacheServer2.4+MariaDB10.0+PHP7.0+禅道项目管理软件8.0环境部署 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. ...

  2. Centos下堡垒机Jumpserver V3.0环境部署完整记录(1)-安装篇

    由于来源身份不明.越权操作.密码泄露.数据被窃.违规操作等因素都可能会使运营的业务系统面临严重威胁,一旦发生事故,如果不能快速定位事故原因,运维人员往往就会背黑锅.几种常见的运维人员背黑锅场景:1)由 ...

  3. Centos下堡垒机Jumpserver V3.0环境部署完整记录(2)-配置篇

    前面已经介绍了Jumpserver V3.0的安装,基于这篇安装文档,下面说下Jumpserver安装后的的功能使用: 一.jumpserver的启动 Jumpserver的启动和重启 [root@t ...

  4. 分布式边缘容器项目 SuperEdge v0.7.0 版本来袭!

    作者 SuperEdge 开发者团队,腾讯云容器中心TKE Edge团队 摘要 SuperEdge是基于原生Kubernetes的分布式边缘云容器管理系统,由腾讯云牵头,联合英特尔.VMware威睿. ...

  5. 关于ML.NET v0.8的发布说明

    ML.NET允许您创建和使用针对场景的机器学习模型,以实现常见任务,如情绪分析,问题分类,预测,推荐,欺诈检测,图像分类等.您可以使用ML.NET示例在GitHub仓库中查看这些常见任务 .ML.NE ...

  6. 2、kubeadm快速部署kubernetes(v1.15.0)集群190623

    一.网络规划 节点网络:192.168.100.0/24 Service网络:10.96.0.0/12 Pod网络(默认):10.244.0.0/16 二.组件分布及节点规划 master(192.1 ...

  7. CentOS 7.5 通过kubeadm部署k8s-1.15.0

    kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验k ...

  8. 关于ML.NET v0.6的发布说明

    ML.NET 0.6版本提供了几项令人兴奋的新增功能: 用于构建和使用机器学习模型的新API 我们主要关注的是发布用于构建和使用模型的新ML.NET API的第一次迭代.这些新的,更灵活的API支持新 ...

  9. 关于ML.NET v0.5的发布说明

    适逢.NET Conf 2018举办,ML.NET v0.5也正式宣布发布了.作为面向.NET开发人员的跨平台开源机器学习框架,新的预览版本在不断演变,每次发布除了有新的功能添加,API也会进行调整, ...

随机推荐

  1. PAT甲级——1036 Boys vs Girls

    1036 Boys vs Girls This time you are asked to tell the difference between the lowest grade of all th ...

  2. 2. Unconstrained Optimization(2th)

    2.1 Basic Results on the Existence of Optimizers 2.1. DefinitionLet $f:U->\mathbb{R}$ be a functi ...

  3. winfrom控件圆角

    刚好用到这个功能,看了好些例子.我就不明白,简单的一个事,一些文章里的代码写的那个长啊,还让人看么. 精简后,就其实一点,只要有paint事件的组件,都可画圆角,没有的外面套一个panel就行了. u ...

  4. [LC] 114. Flatten Binary Tree to Linked List

    Given a binary tree, flatten it to a linked list in-place. For example, given the following tree: 1 ...

  5. MOOC(12) - 安装连接数据库的第三方库

    1.连接数据库需要mysql-python驱动,可以官网下载离线安装包 安装 检查是否导入成功

  6. Point Estimate|unbiased estimator|Confidence-Interval Estimate

    8.1 Estimating a Population Mean Point Estimate estimate  a single number, or point. 因为:the mean of ...

  7. 图形学创世纪——写在SIGGRAPH 40年的边上

    40年的边上" title="图形学创世纪--写在SIGGRAPH 40年的边上"> 前言: SIGGRAPH是由ACM SIGGRAPH(美国计算机协会计算机图形 ...

  8. 3dmax2018卸载/安装失败/如何彻底卸载清除干净3dmax2018注册表和文件的方法

    3dmax2018提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dmax2018失败提示3dmax2018安装未完成,某些产品无法安装,也有时候想重新安装3 ...

  9. leetcode第38题:报数

    这是一道简单题,但是我做了很久,主要难度在读题和理解题上. 思路:给定一个数字,返回这个数字报数数列.我们可以通过从1开始,不断扩展到n的数列.数列的值为前一个数列的count+num,所以我们不断叠 ...

  10. labview状态机

    状态机主要由3部分组成,包括一个while循环,一个条件结构,以及while循环的移位寄存器,其中while循环用于保证程序的持续运行,条件结构用于处理不同状态的执行,移位寄存器用于实现从一个状态跳转 ...