因此,我希望使用 GPU/TPU 在 Colab 上训练一个模型,因为我的本地机器没有 GPU/TPU。我不关心可视化训练,我只是想让 colab 来完成大部分工作。
将我的 .ipynb 导入 colab 并在我尝试使用任何 atari 游戏创建环境时运行,我收到错误:
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input-21-8d6f8581e7f9> in <module>()
----> 1 env = gym.make('SpaceInvaders-v0')
2 height, width, channels = env.observation_space.shape
3 actions = env.action_space.n
4
5 model = build_model(height,width, channels,actions)
4 frames
/usr/local/lib/python3.7/dist-packages/atari_py/games.py in get_game_path(game_name)
18 path = os.path.join(_games_dir, game_name) + ".bin"
19 if not os.path.exists(path):
---> 20 raise Exception('ROM is missing for %s, see https://github.com/openai/atari-py#roms for instructions' % (game_name,))
21 return path
22
Exception: ROM is missing for space_invaders, see https://github.com/openai/atari-py#roms for instructions
在本地,我遇到了这个问题,并按照 github 上的步骤进行修复,该问题有效,但我似乎无法让 colab 做类似的事情。我在网上找到了大量的教程,它可以正常工作,当我运行他们的合作实验室时,我遇到了同样的问题,所以我有点不知所措。
提前致谢
有一个方便的 AutoROM 软件包,您可以使用它自动安装 ROM。只需在任何 Jupyter 笔记本、Colab 笔记本或 Kaggle 内核中运行以下命令即可:
%pip install -U gym>=0.21.0
%pip install -U gym[atari,accept-rom-license]
详情:
使用
%pip
而不是 !pip
可确保将包安装到与笔记本运行所在的相同 Python 环境中。
accept-rom-license
选项安装autorom
软件包,其中包括AutoROM
命令。它还使用 --accept-license
选项自动运行此命令。如果您在没有此选项的情况下运行它,您会收到以下消息,因此请注意。我的感觉是,将它们用于研究和教育目的是可以的,但我不是律师:
AutoROM will download the Atari 2600 ROMs.
They will be installed to:
[...]/site-packages/AutoROM/roms
Existing ROMs will be overwritten.
I own a license to these Atari 2600 ROMs.
I agree to not distribute these ROMs and wish to proceed: [Y/n]:
运行
AutoROM --help
以获得更多选项。
所以我找到了解决方案。您首先需要从 http://www.atarimania.com/rom_collection_archive_atari_2600_roms.html
下载 ROM解压 .rar 文件,然后解压 HC Roms 和 Roms 文件夹。
接下来将文件夹上传到 Colab 或您的 Google 云端硬盘,然后将其链接到您的 Colab。
从这里运行:
!python -m atari_py.import_roms <path to Rom folder>
我只需导入 ROMS 文件夹,但根据您想要的环境,您可能还必须为 HC ROMS 运行它。
让 colab 做它的事情,然后尝试再次创建环境,它应该可以工作,让它运行 DQN 大约 6 小时,没有任何问题。
希望这对人们有帮助。
我参加了 Udemy 课程,我们在 Google Colab 中培训了一些代理。文件顶部有以下代码:
!pip install gymnasium
!pip install "gymnasium[atari, accept-rom-license]"
!apt-get install -y swig
!pip install gymnasium[box2d]
然后创建环境:
import gymnasium as gym
env = gym.make('LunarLander-v2')
state_shape = env.observation_space.shape
state_size = env.observation_space.shape[0]
number_actions = env.action_space.n
print('State shape: ', state_shape)
print('State size: ', state_size)
print('Number of actions: ', number_actions)
这适用于多种环境,包括 Atari Pong、Breakout 等。
希望这有帮助!