Unity ML-Agents项目:使用可执行环境进行强化学习训练

Unity ML-Agents项目:使用可执行环境进行强化学习训练

ml-agents Unity-Technologies/ml-agents: 是一个基于 Python 语言的机器学习库,可以方便地实现机器学习算法的实现和测试。该项目提供了一个简单易用的机器学习库,可以方便地实现机器学习算法的实现和测试,同时支持多种机器学习库和开发工具。 ml-agents 项目地址: https://gitcode.com/gh_mirrors/ml/ml-agents

引言

在Unity ML-Agents项目中,开发者通常需要在Unity编辑器中直接运行环境进行训练。然而,将环境构建为可执行文件(Executable)进行训练具有诸多优势。本文将详细介绍如何构建和使用Unity环境可执行文件进行强化学习训练。

为什么使用可执行环境?

使用可执行环境相比直接在编辑器中运行有以下优势:

  1. 便捷共享:可以单独分享可执行文件而不需要共享整个项目
  2. 远程训练:可将可执行文件部署到远程服务器进行训练
  3. 无头模式:使用Server Build(Headless)模式可显著提升训练速度(当环境不需要渲染时)
  4. 并行工作:训练时可继续使用Unity编辑器进行其他工作

构建3DBall环境可执行文件

准备工作

首先需要打开包含3D平衡球环境的Unity场景:

  1. 启动Unity编辑器
  2. 在项目对话框中选择"打开"选项
  3. 定位到ML-Agents项目中的"Project"文件夹并打开
  4. 在项目窗口中导航至Assets/ML-Agents/Examples/3DBall/Scenes/
  5. 双击3DBall文件加载平衡球环境场景

配置构建设置

为确保环境可执行文件能正确运行,需要进行以下配置:

  1. 打开Player设置(菜单:编辑 > 项目设置 > Player)
  2. 在"分辨率和呈现"部分:
    • 确保勾选"在后台运行"
    • 将"显示分辨率对话框"设置为禁用
  3. 打开构建设置窗口(菜单:文件 > 构建设置)
  4. 选择目标平台
  5. (可选)选择"开发构建"以记录调试信息
  6. 确保"Scenes in Build"列表中只勾选了3DBall场景
  7. 点击"构建"按钮:
    • 在文件对话框中,导航到ML-Agents目录
    • 指定文件名并保存
    • (Windows系统)Unity 2018.1会要求选择文件夹而非文件名

与可执行环境交互

构建完成后,可以通过Python API与可执行环境交互。以下是基本交互代码示例:

from mlagents_envs.environment import UnityEnvironment
env = UnityEnvironment(file_name=<env_name>)

训练环境

训练步骤

  1. 打开命令提示符或终端窗口
  2. 导航到ML-Agents工具包安装目录
  3. 运行以下命令:
    mlagents-learn <trainer-config-file> --env=<env_name> --run-id=<run-identifier>
    
    参数说明:
    • <trainer-config-file>:训练器配置yaml文件路径
    • <env_name>:从Unity导出的可执行文件名(不含扩展名)
    • <run-identifier>:用于区分不同训练结果的字符串

例如,训练3DBall可执行文件:

mlagents-learn config/ppo/3DBall.yaml --env=3DBall --run-id=firstRun

训练输出解析

成功启动训练后,控制台会显示类似以下输出:

INFO:mlagents.trainers: first-run-0: Ball3DLearning: Step: 1000. Mean Reward: 1.242. Std of Reward: 0.746. Training.
INFO:mlagents.trainers: first-run-0: Ball3DLearning: Step: 2000. Mean Reward: 1.319. Std of Reward: 0.693. Training.
...

输出中包含了训练的关键指标:

  • Step:训练步数
  • Mean Reward:平均奖励值
  • Std of Reward:奖励标准差

训练终止与模型使用

  1. 按Ctrl+C可停止训练
  2. 训练好的模型会保存在results/<run-identifier>/<behavior_name>.onnx
  3. 注意:Windows系统上提前终止训练可能导致模型保存失败

在Unity中使用训练好的模型

  1. 将模型文件移动到Project/Assets/ML-Agents/Examples/3DBall/TFModels/
  2. 在Unity编辑器中打开3DBall场景
  3. 在项目窗口中选择3DBall预制体
  4. .onnx模型文件拖拽到Ball3DAgent检查器窗口的Model占位符中
  5. 点击编辑器顶部的播放按钮测试模型

无头服务器训练

在无图形渲染支持的服务器上进行训练时,需要关闭Unity可执行文件的图形显示。有两种实现方式:

  1. 向mlagents-learn训练命令传递--no-graphics选项
  2. 使用Unity编辑器中的"Server Build"选项构建可执行文件

如果需要使用视觉观察(如摄像头输入)进行训练,则需要在服务器上设置显示渲染支持(如xvfb)。

总结

使用可执行环境进行ML-Agents训练提供了更大的灵活性和效率。通过本文介绍的方法,开发者可以轻松构建环境可执行文件,进行本地或远程训练,并将训练好的模型集成回Unity项目中。这种方法特别适合需要长时间训练或需要在多台机器上部署训练的场景。

ml-agents Unity-Technologies/ml-agents: 是一个基于 Python 语言的机器学习库,可以方便地实现机器学习算法的实现和测试。该项目提供了一个简单易用的机器学习库,可以方便地实现机器学习算法的实现和测试,同时支持多种机器学习库和开发工具。 ml-agents 项目地址: https://gitcode.com/gh_mirrors/ml/ml-agents

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

童兴富Stuart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值