日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gym中render()函数在远端server运行的解决方案

發布時間:2025/3/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gym中render()函数在远端server运行的解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

近來在跑gym上的環境時,遇到了如下的問題:

pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None"

習慣性地Google搜索一波解決方案,結果發現關于此類問題的導火索,主要指向 gym中的 render() 函數在遠端被調用。因為該函數要求是在local本地端運行,它在本地會開啟一個窗口用于渲染環境的圖像。問題定位出來了,那就思考一波解決方案,首先local本地端運行這個是做不到的,畢竟疫情影響,每天戰戰兢兢地用遠程服務器的資源跑代碼,我自己的小筆記本,算力實在是跟不上。于是乎,繼續查找解決方案,本著既然世界上有那么多人搞 Reinforcement Learning,很多科研工作者都是連服務器跑Atari實驗的想法,那么這樣的問題,就應該會有解決方案。果不其然,搜到一篇英文博客,給了些解決思路: Extending OpenAI Gym environments with Wrappers and Monitors [Tutorial]。

關于博客的內容,主要是介紹 gym中的 Wrapper 還有 Monitor組件,這些組件的用法具體詳情可以看下博客。此處針對我遇到的問題,有一個思路,就是既然需要在本地端開啟一個窗口,那么是否可以嘗試用虛擬形式的圖像渲染方式在server端啟動虛擬化的圖形渲染。非常好的一點是,在Linux 下就有那么一個名為 xvfb的包,就可以做這件事情。它可以在服務器上啟動虛擬的圖形顯示,并強制程序在其中繪制。xvfb 的安裝方式:

sudo apt install xvbf

調用方法:

xvfb-run -s "-screen 0 640x480x24" python xxx.py

其中在調用的過程中,還遇到了另一個問題:AttributeError: 'ImageData' object has no attribute 'data',在網上看大家的反饋,是 pyglet 的版本原因,需要指定安裝特定版本的 pyglet:

pip install pyglet==1.3.2

安裝完成后,繼續執行程序,順利運行,至此,踩坑結束。

  • 參考博客:

    How to run OpenAI Gym .render() over a server

    Extending OpenAI Gym environments with Wrappers and Monitors [Tutorial]

總結

以上是生活随笔為你收集整理的gym中render()函数在远端server运行的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。