ssh到服务器使用ai2thor遇到的问题

部署运行你感兴趣的模型镜像

服务器上装了ai2thorssh到服务器上跑程序,程序开了多进程调用ai2thor进行仿真。
结果出现如下提示,然后一直卡住不动。

/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server

Ctrl+C结束程序发现所有进程都卡在fifo_server.pyopen函数上

    controller = ai2thor.controller.Controller(**controller_kwargs)
  File "/home/zzy/.conda/envs/cow/lib/python3.7/site-packages/ai2thor/controller.py", line 498, in __init__
    host=host,
  File "/home/zzy/.conda/envs/cow/lib/python3.7/site-packages/ai2thor/controller.py", line 1299, in start
    self.last_event = self.server.receive()
  File "/home/zzy/.conda/envs/cow/lib/python3.7/site-packages/ai2thor/fifo_server.py", line 182, in receive
    metadata, files = self._recv_message()
  File "/home/zzy/.conda/envs/cow/lib/python3.7/site-packages/ai2thor/fifo_server.py", line 103, in _recv_message
    self.server_pipe = open(self.server_pipe_path, "rb")

搜索卡住的函数没找到解决方案,试着直接在python里面初始化一个Controller,出现如下报错。

>>> from ai2thor.controller import Controller
>>> c=Controller()
/home/zzy/.conda/envs/cow/lib/python3.7/site-packages/ai2thor/platform.py:155: UserWarning: could not connect to X Display: 0, Can't connect to display ":0": b'No protocol specified\n'
  "could not connect to X Display: %s, %s" % (display_str, e)
/home/zzy/.conda/envs/cow/lib/python3.7/site-packages/ai2thor/platform.py:155: UserWarning: could not connect to X Display: 1, Can't connect to display ":1": b'No protocol specified\n'
  "could not connect to X Display: %s, %s" % (display_str, e)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/zzy/.conda/envs/cow/lib/python3.7/site-packages/ai2thor/controller.py", line 487, in __init__
    self._build = self.find_build(local_build, commit_id, branch, platform)
  File "/home/zzy/.conda/envs/cow/lib/python3.7/site-packages/ai2thor/controller.py", line 1214, in find_build
    raise Exception("\n".join(error_messages))
Exception: The following builds were found, but had missing dependencies. Only one valid platform is required to run AI2-THOR.
Platform Linux64 failed validation with the following errors: No valid X display found
  Linux64 requires a X11 server to be running with GLX. If you have a NVIDIA GPU, please run: sudo ai2thor-xorg start

查了说是要设置DISPLAY环境变量,echo $DISPLAY确实是没有设置的,但是试了:0:1:2等都一样是报错,但有额外的报错信息:
对于:0:1已经在服务器上登录了的图形桌面(其它账号登录的)所对应的号码,是如下提示:

Platform Linux64 failed validation with the following errors: Invalid display: :0. Failed to connect Can't connect to display ":0": b'No protocol specified\n' 

对于:2没有图形桌面对应的号码,是如下提示:

Platform Linux64 failed validation with the following errors: Invalid display: :2. Failed to connect Can't connect to display ":2": [Errno 111] Connection refused 

但根据这些新提示也没有查到什么有用的解决方法。
想着可能需要ssh时加上x11转发有图形界面才能开启Controller,但网络问题支持不了开启转发,于是根据ai2thor官网的说法准备使用CloudRendering看看。等着下载的时候想着可能是ai2thor配置不正确,决定到机房服务器上直接登录再试,发现的确是可以运行的,同时也查看了一下$DISPLAY变量,发现是:2
在不登出桌面环境的情况下,再通过ssh连接到服务器并且设置DISPLAY:2发现能够初始化Controller了,桌面环境上看的话会出现ai2thor的仿真环境。
PS1: 后面试了如果不设置DISPLAY环境变量或者传参x_display的话,初始化的时候会自动遍历所有现有的display,如果有能运行的就会自动选取进行初始化,没有就会报错。
PS2: 设置DISPLAY为空字符串的话也是会卡在open函数上面。
PS3:开多进程跑ai2thor的时候如果初始化出错的话好像并不会导致进程崩溃,而是一直卡在open函数上面没有任何提示。
因此,如果要ssh到服务器上面跑ai2thor的话可以尝试一下先在服务器开一个图形界面,查一下界面对应的displayecho $DISPLAY),然后ssh登录后设置DISPLAY为对应的值由或者初始化Controller时设置传参x_display=“:2” #相应的display值
又或者可以试试x11转发或者CloudRendering

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### AI2-THOR框架在Windows系统上的安装与使用 AI2-THOR是一个用于视觉AI研究的交互式3D环境框架,支持多种研究领域,包括深度强化学习、模仿学习等[^3]。为了在Windows系统上安装和使用AI2-THOR框架,可以按照以下方法进行操作。 #### 1. 安装Python环境 AI2-THOR框架依赖于Python编程语言,因此需要先确保系统中已安装适当的Python版本(推荐3.7或更高版本)。可以通过以下步骤安装Python: - 访问[Python官方网站](https://www.python.org/downloads/)下载并安装最新版本。 - 在安装过程中,请勾选“Add Python to PATH”选项以确保Python可被系统识别。 #### 2. 安装AI2-THORAI2-THOR提供了一个官方的Python接口,可通过`pip`工具安装。运行以下命令以安装AI2-THOR库: ```bash pip install ai2thor ``` 此命令会自动安装AI2-THOR及其所有依赖项[^1]。 #### 3. 下载Unity应用程序 AI2-THOR的后端由Unity引擎驱动,因此需要下载对应的Unity应用程序。根据操作系统选择正确的版本: - 访问[AI2-THOR官方文档](https://ai2thor.allenai.org/)获取下载链接。 - 下载适用于Windows的Unity应用程序,并将其解压到指定目录。 #### 4. 配置环境变量 为了使AI2-THOR能够正确调用Unity应用程序,需将Unity应用程序的路径添加到环境变量中。具体步骤如下: - 打开“系统属性” -> “高级系统设置” -> “环境变量”。 - 在“系统变量”部分找到`Path`,点击“编辑”。 - 添加Unity应用程序所在的目录路径(例如:`C:\path\to\unity_app`)。 #### 5. 编写Python脚本 完成上述步骤后,可以编写一个简单的Python脚本来测试AI2-THOR是否正常工作。以下是一个示例脚本: ```python from ai2thor.controller import Controller # 初始化控制器 controller = Controller( agentMode="default", scene="FloorPlan_Train1_1", # 设置初始场景 visibilityDistance=1.5, renderDepthImage=True, renderInstanceSegmentation=True ) # 启动场景 controller.reset("FloorPlan_Train1_1") # 执行动作 event = controller.step(action="LookDown") print(event.metadata) # 输出事件元数据 # 关闭控制器 controller.stop() ``` #### 6. 运行脚本 保存上述脚本为`.py`文件,并通过命令行运行: ```bash python your_script.py ``` 如果一切配置正确,脚本将成功启动AI2-THOR环境并执行相应动作[^2]。 --- ### 注意事项 - 确保Unity应用程序的版本与AI2-THOR库兼容,否则可能导致运行时错误。 - 如果遇到性能问题,可以尝试调整图形渲染设置或降低分辨率。 - AI2-THOR支持的研究领域广泛,可根据需求进一步探索其功能[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值