0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PFRL(v0.3.0)を利用して強化学習プログラムを動かしてみる件

Last updated at Posted at 2023-07-05

PFRL(https://github.com/pfnet/pfrl) を利用して強化学習プログラムを動かしてみました。ちなみにPFRLとはPFNが提供しているPyTorch向けの深層強化学習ライブラリです。PFRLv0.3.0(2021年7月 version)を動かそうとすると、なかなか動かなかったので、備忘録として動かすまでの工程を記録してみました。
2023年7月追記:2023年7月にv0.4.0がリリースされました。それを動かしてみた記事はこちらになります
PFRLはPytorchベースなので、pytorchを入れ、その後、pfrlをいれます(あとで、pip freezeの結果は載せます)。利用したマシン・環境の詳細は以下の通りです。古いという突っ込みはry。

Ubuntu 18.04.6 LTS
NVIDIA-SMI 440.100 
GeForce RTX 2080

まずは、PytorchとPFRLをpipにていれてみます。空の仮想環境を利用しました。

(pfrl)$ pip install torch
(pfrl)$ pip install pfrl

ここで、PFRLのexamplesにあるgymのプログラム(https://github.com/pfnet/pfrl/blob/master/examples/gym/train_dqn_gym.py) を動かしてみると。

(pfrl)$ python train_dqn_gym.py
ImportError: cannot import name 'Monitor' from 'gym.wrappers' (/home/****/src/pfrl/lib/python3.8/site-packages/gym/wrappers/__init__.py)

Monitorがないと怒られる。ここで@sekishokuさんの記事を考慮し、gymのバージョン等をダウングレードします。

(pfrl)$ pip install gym[atari]==0.22.0

再度実行すると

(pfrl)$ python train_dqn_gym.py
gym.error.DeprecatedEnv: Environment version `v0` for `Pendulum` is deprecated.
Please use the latest version `v1`

とでるので、ソースコード内のPendulumをv1に編集し再度実行すると

ModuleNotFoundError: No module named 'pygame'

pygameをいれて、再度ry

(pfrl)$ pip install pygame
(pfrl)$ python train_dqn_gym.py

今度はcudaのバージョンが古すぎて怒られる

Traceback (most recent call last):
  File "train_dqn_gym.py", line 272, in <module>
    main()
  File "train_dqn_gym.py", line 175, in main
    agent = DQN(
  File "/home/***/src/pfrl/lib/python3.8/site-packages/pfrl/agents/dqn.py", line 208, in __init__
    assert torch.cuda.is_available()
AssertionError

cudaのバージョンを上げたくないので、torchをデグレードさせる方向で考える。
TorchのHP(https://pytorch.org/get-started/previous-versions/) で調べると

CUDA 10.2

pip install torch==1.12.1+cu102 torchvision==0.13.1+cu102 torchaudio==0.12.1 --extra-index-url >https://download.pytorch.org/whl/cu102

となっているので、torchの1.12.1にダウングレードしてみる

$ pip install torch==1.12.1

そして実行してみると

(pfrl)$ python train_dqn_gym.py 
INFO:pfrl.experiments.train_agent:outdir:results/20230705T160731.884995 step:200 episode:0 R:-1.497769952072162
INFO:pfrl.experiments.train_agent:statistics:[('average_q', nan), ('average_loss', nan), ('cumulative_steps', 200), ('n_updates', 0), ('rlen', 200)]
INFO:pfrl.experiments.train_agent:outdir:results/20230705T160731.884995 step:400 episode:1 R:-1.1668629019656298
INFO:pfrl.experiments.train_agent:statistics:[('average_q', nan), ('average_loss', nan), ('cumulative_steps', 400), ('n_updates', 0), ('rlen', 400)]
INFO:pfrl.experiments.train_agent:outdir:results/20230705T160731.884995 step:600 episode:2 R:-1.4407584984543595
INFO:pfrl.experiments.train_agent:statistics:[('average_q', nan), ('average_loss', nan), ('cumulative_steps', 600), ('n_updates', 0), ('rlen', 600)]
INFO:pfrl.experiments.train_agent:outdir:results/20230705T160731.884995 step:800 episode:3 R:-1.2485210908819078

動きました。pip freezeの結果は以下の通りです

(pfrl)$ pip freeze
ale-py==0.7.5
cloudpickle==2.2.1
cmake==3.26.4
filelock==3.12.2
gym==0.22.0
gym-notices==0.0.8
importlib-metadata==6.7.0
importlib-resources==5.12.0
Jinja2==3.1.2
lit==16.0.6
MarkupSafe==2.1.3
mpmath==1.3.0
networkx==3.1
numpy==1.24.4
nvidia-cublas-cu11==11.10.3.66
nvidia-cuda-cupti-cu11==11.7.101
nvidia-cuda-nvrtc-cu11==11.7.99
nvidia-cuda-runtime-cu11==11.7.99
nvidia-cudnn-cu11==8.5.0.96
nvidia-cufft-cu11==10.9.0.58
nvidia-curand-cu11==10.2.10.91
nvidia-cusolver-cu11==11.4.0.1
nvidia-cusparse-cu11==11.7.4.91
nvidia-nccl-cu11==2.14.3
nvidia-nvtx-cu11==11.7.91
pfrl==0.3.0
Pillow==10.0.0
pkg_resources==0.0.0
pygame==2.5.0
sympy==1.12
torch==1.12.1
triton==2.0.0
typing_extensions==4.7.1
zipp==3.15.0
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?