我有一个脚本,我在其中构建了一个mlagents_envs.environments.UnityEnvironment
,当我从ubuntu机器(有GUI(上启动的终端会话运行脚本时,它会成功启动并工作。如果我ssh到机器中,我可以从最初在机器上本地创建的tmux会话中运行这些脚本。但是,如果我尝试从通过远程ssh连接创建的终端会话运行脚本,那么在尝试创建UnityEnvironment
时,脚本将挂起。它只是说:
Found path: <path_to_unity_executable>
并最终超时。
我试着用虚拟显示器运行这个脚本,但它仍然不起作用。具体来说,我已经尝试过:
$ xvfb-run --auto-servernum --server-args='-screen 1 640x480x24:64' python3 python_script.py -batchmode
$ xvfb-run --auto-servernum --server-args='-screen 1 640x480x24:64' python3 python_script.py
我试过这里的说明:https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Training-on-Amazon-Web-Service.md
有人遇到过这个问题吗?你有什么建议吗?
解决方案最终相当简单。我只需要在运行脚本之前指定正确的DEVICE。
$ DEVICE=:1 python3 python_script.py
如果其他人遇到这种情况,您可能还需要在服务器和客户端的ssh设置中启用X11转发。我不能百分之百肯定。