alex-petrenko/sample-factory

sf2 error: unexpected keyword argument 'mode'

jarlva opened this issue · 3 comments

Hi, just installed new python3.9.13 conda env with latest sf2. Installed SF with pip install -e . after git pull and git switch sf2

Ran first:
python -m sf_examples.train_gym_env --algo=APPO --use_rnn=False --num_envs_per_worker=20 --policy_workers_per_policy=2 --recurrence=1 --with_vtrace=False --batch_size=512 --reward_scale=0.1 --save_every_sec=10 --experiment_summaries_interval=10 --experiment=example_gym_cartpole-v1 --env=CartPole-v1

Then:
python -m sf_examples.enjoy_gym_env --algo=APPO --experiment=example_gym_cartpole-v1 --env=CartPole-v1

With the error:

Traceback (most recent call last):
  File "/home/jake/miniconda3/envs/sf2/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/home/jake/miniconda3/envs/sf2/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/jake/py/sample-factory/sf_examples/enjoy_gym_env.py", line 16, in <module>
    sys.exit(main())
  File "/home/jake/py/sample-factory/sf_examples/enjoy_gym_env.py", line 11, in main
    status = enjoy(cfg)
  File "/home/jake/py/sample-factory/sample_factory/enjoy.py", line 157, in enjoy
    render_frame(cfg, env, video_frames, num_episodes, last_render_start)
  File "/home/jake/py/sample-factory/sample_factory/enjoy.py", line 74, in render_frame
    env.render(mode="human")
  File "/home/jake/py/gym/gym/core.py", line 329, in render
    return self.env.render(*args, **kwargs)
  File "/home/jake/py/gym/gym/core.py", line 329, in render
    return self.env.render(*args, **kwargs)
  File "/home/jake/py/gym/gym/core.py", line 329, in render
    return self.env.render(*args, **kwargs)
  [Previous line repeated 1 more time]
  File "/home/jake/py/gym/gym/wrappers/order_enforcing.py", line 51, in render
    return self.env.render(*args, **kwargs)
  File "/home/jake/py/gym/gym/wrappers/env_checker.py", line 53, in render
    return env_render_passive_checker(self.env, *args, **kwargs)
  File "/home/jake/py/gym/gym/utils/passive_env_checker.py", line 317, in env_render_passive_checker
    result = env.render(*args, **kwargs)
TypeError: render() got an unexpected keyword argument 'mode'
pip list
Package                 Version     Editable project location
----------------------- ----------- ----------------------------
absl-py                 1.3.0
attrs                   22.1.0
beautifulsoup4          4.11.1
bleach                  5.0.1
cachetools              5.2.0
certifi                 2022.9.24
charset-normalizer      2.1.1
click                   8.1.3
cloudpickle             2.2.0
colorlog                6.7.0
Cython                  0.29.32
defusedxml              0.7.1
docker-pycreds          0.4.0
entrypoints             0.4
faster-fifo             1.4.2
fastjsonschema          2.16.2
filelock                3.8.0
gitdb                   4.0.9
GitPython               3.1.29
google-auth             2.12.0
google-auth-oauthlib    0.4.6
grpcio                  1.49.1
gym                     0.26.1      /home/user/py/gym
gym-notices             0.0.8
huggingface-hub         0.10.1
idna                    3.4
importlib-metadata      5.0.0
Jinja2                  3.1.2
jsonschema              4.16.0
jupyter_client          7.4.2
jupyter-core            4.11.1
jupyterlab-pygments     0.2.2
Markdown                3.4.1
MarkupSafe              2.1.1
mistune                 2.0.4
mkl-fft                 1.3.1
mkl-random              1.2.2
mkl-service             2.4.0
nbclient                0.7.0
nbconvert               7.2.1
nbformat                5.7.0
nest-asyncio            1.5.6
numpy                   1.23.4
oauthlib                3.2.1
opencv-python-headless  4.6.0.66
packaging               21.3
pandocfilters           1.5.0
pathtools               0.1.2
pip                     22.2.2
promise                 2.3
protobuf                3.19.6
psutil                  5.9.2
pyasn1                  0.4.8
pyasn1-modules          0.2.8
pygame                  2.1.2
pyglet                  1.5.27
Pygments                2.13.0
pyparsing               3.0.9
pyrsistent              0.18.1
python-dateutil         2.8.2
PyYAML                  6.0
pyzmq                   24.0.1
requests                2.28.1
requests-oauthlib       1.3.1
rsa                     4.9
sample-factory          2.0.0       /home/user/py/sample-factory
sentry-sdk              1.9.10
setproctitle            1.3.2
setuptools              63.4.1
shortuuid               1.0.9
signal-slot-mp          1.0.3
six                     1.16.0
smmap                   5.0.0
soupsieve               2.3.2.post1
tensorboard             2.10.1
tensorboard-data-server 0.6.1
tensorboard-plugin-wit  1.8.1
tensorboardX            2.5.1
threadpoolctl           3.1.0
tinycss2                1.1.1
torch                   1.12.1
tornado                 6.2
tqdm                    4.64.1
traitlets               5.4.0
typing_extensions       4.4.0
urllib3                 1.26.12
wandb                   0.13.4
webencodings            0.5.1
Werkzeug                2.2.2
wheel                   0.37.1
zipp                    3.9.0

Hi @jarlva

Thank you for reporting this.
Gym 0.26 significantly changed the API, including the env.render function. It looks like we didn't update this render call to use the new API.

I'll take a look.

Should be fixed after the latest commit b5e89dd

Indeed it was due to changed APIs for Gym 0.26
Specifically Cartpole rendering seems to work now.

Again, thank you for finding this!

Should be fixed