最近在调研 Ml-Agents ,遇到了这个问题。相信有很多同学会和我一样,会遇到这个不算是坑的坑,特来记录一下。
问题
Couldn't connect to trainer on port 5004 using API version 1.5.0. Will perform inference instead.
我入手的 Demo 是ML-Agents官方给出的,是 relase_18
。当我文档装好环境,写好代码,组装好Agent,点击运行按钮,却发现我们RollerAgent
并不会像描述的那样动起来。
检查过很多次后,确信所有代码,环节都是对的。所以怀疑编辑器报出来的这个警告,如下图所示。
解决方案
网上讨论
- 因为辑器的5004端口被占用了,需要将其关掉
- 可能是防火墙阻止了该端口的访问,需要关闭防火墙
- 还有人说是因为安装的路径中有中文,需要将中文路径处理一下。(这一条不认可,多年开发,我所有的路径都是英文,且空格都不会有)
总之网上看到许多解决方案,上面的第一条想来是有影响的。第二条自己测了,关掉防火墙,问题依然存在。第三条已解释。
我的方案
其实我没有方案,在尝试了多次后,问题依然无法解决。于是硬着头皮向下做。
-
按照文档配置
roller_ball_config.yaml
文件。
**注意:**我放在代码仓的config/ppo
文件夹下 -
启动训练环境
注意:
请先激活环境,如果你使用了虚拟环境,因为所有的依赖都在虚拟环境中。我使用了虚拟环境unityML
。
-
在编辑器启动程序
执行脚本 mlagents-learn rollerball_config.yaml --run-id=RollerBall --force
执行成功后,命令行中会打印出配置文件的信息
至此,我的第一个Demo 跑起来了,那个令人警告不在出现了,并且它动起来了,开始训练了 !!!
总结
看到此处,相信你也看到了,我并没有做任何事情。那么问题的解决办法相信您已经知晓啦。
Couldn't connect to trainer on port 5004 using API version 1.5.0. Will perform inference inst
,我猜想它提到的 5004 端口应该是 mlagents-learn
训练环境起起来的,只有启动这个训练环境,你的 Agent 才会动起来。