Unity中训练一个ML-Agents项目—解决torch和mlagents配置问题


目录

基于Unity的ML-Agents 从零开始构建一个可以成功运行的项目。重点罗列出torch和mlagents配置中可能存在的问题。

一、安装Anaconda并新建一个环境

这部分内容基本没有什么太大的问题,建议参考以下几个链接就能顺利完成。

  1. 一个我之前的工作 Anaconda下载安装
  2. Anaconda的环境变量配置+新建环境
  3. 相似的Anaconda配置工作
  4. 相似的再来一个(就不信不能解决你的问题)

二、配置torch和mlagents

1. 进入虚拟环境(我的环境命名为ml-agents)

① 打开 Anaconda Prompt

② 激活虚拟环境,输入conda activate XXXX(虚拟环境名称)
在这里插入图片描述

2. pip install torch

① 首先,明确自己的虚拟环境下安装的python版本(我的是==3.7)。
输入python -V查询
在这里插入图片描述
② 两种方法安装:

  1. pip3 install torch~=1.7.1 -f https://download.pytorch.org/whl/torch_stable.html
    但是,我自己在尝试的时候,通常会超时,而且还会出现下载为GPU版本的情况。所以我更推荐第二种下载方式。
  2. 我们在这个手动下载网页链接下找到符合自己python对应的CPU版本的torch,下载到本地进行安装。
    大家可以参考我现在的版本。
    在这里插入图片描述
    ③ 在上述第二种方法下,我们吧这个.whl后缀的文件现在至本地,找到它的绝对路径(我的路径在 D:\Donwloads\ )。等待完成即可。
    在这里插入图片描述

3. pip install mlagents

  1. 这部分基本没什么问题,输入pip install mlagents -i https://pypi.douban.com/simple
    慢的话后面加上清华镜像就可以了。

  2. 测试一下是否成功安装mlagents,输入mlagents-learn --help
    A. 正常显示情况。
    在这里插入图片描述

    B. protobuf 版本太高——那就uninstall后重新下一个低版本的
    —B.1 报错如下:
    在这里插入图片描述
    —B.2 解决如下,输入pip install protobuf==3.19.0 -i https://pypi.douban.com/simple
    在这里插入图片描述
    基本上我遇到的问题就是这个,再一个就是提示GPU版本错误,关于这个问题只要你在第二个步骤是下载CPU版本的torch 就没有问题了。

三、最激动人心的——在Unity里动起来

1. Unity 场景搭建

可完全参照这篇文章操作搭建环境
但是 代码中还是有一些问题需要注意。

  1. OnActionReceived()函数中,使用浮点型数组会报错,所以还是在函数中声明变量类型为ActionBuffers 变量名为vectorAction
    在调用的时候使用 vectorAction.ContinuousActions[0]修改动作。
    原本
    在这里插入图片描述
    修改在这里插入图片描述
  2. 在重写Heuristic()方法时也一样。
    原本
    在这里插入图片描述
    修改
    在这里插入图片描述
    至此,代码部分没有任何问题。训练时记得把脚本中的Behavior Type 修改回Default
    在这里插入图片描述

2. 配置文件.yaml

这里也可以参考训练网络-配置文件
这个压缩包是Unity官方给出ML-Agents
文件名为 rollingball_config.yaml
文件位置 D:\Downloads\ml-agents-main\ml-agents-main\config\ppo\
在这里插入图片描述

3. 执行训练文件

  1. 我们从Anaconda Prompt中激活新建的虚拟环境(同第1步骤);
  2. 进入压缩包所在位置 即 D:\Downloads\ml-agents-main\ml-agents-main\config\ppo\
  3. 输入mlagents-learn ./rollingball_config.yaml --run-id rollingball 其中 id 后的名称为训练后结果存放的位置;
  4. 不出意外会报错 ;
    在这里插入图片描述
  5. 不着急我们更新一下就好了 参考
    ① 执行指令获得帮助 python -m mlagents.trainers.upgrade_config -h
    在这里插入图片描述
    ② 执行 python -m mlagents.trainers.upgrade_config rollingball_config.yaml rollingball_config.yaml
    在这里插入图片描述
    ③ 再执行一次即能看到令人激动的UNITY了! mlagents-learn ./rollingball_config.yaml --run-id=RollingBall --force ,其中force表示强制覆盖原有文件
    在这里插入图片描述
    如果出现以上图片,恭喜你配置成功了,而且只需要在Unity中点击运行即可开始训练了!!!!

四、最终的结果

1. 训练结果的输出

我们在第三步骤-3.执行训练文件-③中输入mlagents-learn ./rollingball_config.yaml --run-id=RollingBall --force,所以训练结果就在这里。
在这里插入图片描述

2. 训练结果的使用

我们只需要把这个训练好的.onnx文件拖进Unity,然后给到Behaviors parameters——Model就可以直接看到训练后的效果。
在这里插入图片描述

写在最后

最近忙完了手头的工作,开始在Unity下试试看机器学习,看看能有什么新突破和发现吧。六月的阴雨,带走离别,迎来酷暑。继续向前冲吧,谁说站在光亮里的才算英雄呢~

猜你喜欢

转载自blog.csdn.net/LLLQQQismmmmme/article/details/125081815