oss-gate / workshop

OSSの開発に未参加または参加したことはあるけどまだ自信がない人を後押しするワークショップ用のリポジトリー
124 stars 547 forks source link

OSS Gate Workshop: online: 2023-09-09: sakakibara: Minari?: Work log #1649

Closed sakakibara-yuuki closed 1 year ago

sakakibara-yuuki commented 1 year ago

This is a work log of a "OSS Gate workshop". "OSS Gate workshop" is an activity to increase OSS developers. Here's been discussed in Japanese. Thanks.

作業ログ作成時の説明

以下のテンプレートを埋めてタイトルに設定します。埋め方例はスクロールすると見えてきます。

OSS Gate Workshop: ${LOCATION}: ${YEAR}-${MONTH}-${DAY}: ${ACCOUNT_NAME}: ${OSS_NAME}: Work log

タイトル例↓:

OSS Gate Workshop: Tokyo: 2017-01-16: kou: Rabbit: Work log

OSS Gateワークショップ関連情報

sakakibara-yuuki commented 1 year ago

torchrminariに興味がある

sakakibara-yuuki commented 1 year ago

OSSかどうかを探す。 torchrl のlicense minariのlicense

torchrlはMIT minariはよくわからない

sakakibara-yuuki commented 1 year ago

minariもMITっぽい Minariで行ってみる

sakakibara-yuuki commented 1 year ago

document に従ってインストールしてみる pyenv local 3.9.13 pip install minari

なお

cat /etc/os-release PRETTY_NAME="Ubuntu 22.04.2 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.2 LTS (Jammy Jellyfish)" VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=jammy

sakakibara-yuuki commented 1 year ago

そもそもreadmeからはじめればよいのか documentsのbasic-usageからはじめればよいのかわからない

sakakibara-yuuki commented 1 year ago

よくよくreadmeよんだらbasic-usageから始めろと言われたのでそっちから始める

sakakibara-yuuki commented 1 year ago
from minari import DataCollectorV0
import gymnasium as gym

env = gym.make('LunarLander-v2')
env = DataCollectorV0(env, record_infos=True, max_buffer_steps=100000)

を実行する。 python sample.py expected: 何も表示されない result: error

Traceback (most recent call last):
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/bipedal_walker.py", line 15, in <module>
    import Box2D
ModuleNotFoundError: No module named 'Box2D'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sakakibara/Minari/sample.py", line 5, in <module>
    env = gym.make('LunarLander-v2')
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/registration.py", line 756, in make
    env_creator = load_env_creator(env_spec.entry_point)
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/registration.py", line 545, in load_env_creator
    mod = importlib.import_module(mod_name)
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/__init__.py", line 1, in <module>
    from gymnasium.envs.box2d.bipedal_walker import BipedalWalker, BipedalWalkerHardcore
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/bipedal_walker.py", line 25, in <module>
    raise DependencyNotInstalled(
gymnasium.error.DependencyNotInstalled: Box2D is not installed, run `pip install gymnasium[box2d]`
sakakibara-yuuki commented 1 year ago

gymnasiumをinstallしてないってエラーが出た。 それはそう。 しかし、ドキュメントにはpip install gymnasiumしろって書いてない。

sakakibara-yuuki commented 1 year ago

pip install gymnasium[box2d] をする。 install 成功

もう一度 python sample.py

sakakibara-yuuki commented 1 year ago

python sample.py

expected: 何も表示されない result: 何も表示されない

成功した。

sakakibara-yuuki commented 1 year ago

というかそもそもドキュメントのコードブロックにコピーボタンが欲しい

sakakibara-yuuki commented 1 year ago

Save-dataset に載っている以下のコードをsample2.pyとする。

import minari
import gymnasium as gym
from minari import DataCollectorV0

env = gym.make('LunarLander-v2')
env = DataCollectorV0(env, record_infos=True, max_buffer_steps=100000)

total_episodes = 100

for _ in range(total_episodes):
    env.reset(seed=123)
    while True:
        # random action policy
        action = env.action_space.sample()
        obs, rew, terminated, truncated, info = env.step(action)

        if terminated or truncated:
            break

dataset = minari.create_dataset_from_collector_env(dataset_id="LunarLander-v2-test-v0", 
                                                   collector_env=env,
                                                   algorithm_name="Random-Policy",
                                                   code_permalink="https://github.com/Farama-Foundation/Minari",
                                                   author="Farama",
                                                   author_email="contact@farama.org")

python sample2.py

expected: 何も表示されない results:

Traceback (most recent call last):
  File "/home/sakakibara/Minari/sample2.py", line 16, in <module>
    obs, rew, terminated, truncated, info = env.step(action)
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/minari/data_collector/data_collector.py", line 213, in step
    assert self.dataset_observation_space.contains(
AssertionError: Observations are not in observation space.
sakakibara-yuuki commented 1 year ago

予想されている観測空間が実際に出力された観測空間とあっていない....?というエラー?

sakakibara-yuuki commented 1 year ago

TODO

  1. 報告内容を決める
  2. contribution guid の確認
  3. format をそろえてまとめる
  4. submit !
sakakibara-yuuki commented 1 year ago

1報告する内容を決める

  1. install するべきパッケージがdocumentsに記載されていない。
  2. documetsをなぞった時に出たバグ(時間がかかりそう)
  3. コードブロックにコピーボタンを追加してほしい(ちょっと時間がかかるかもしれない: 詳細な方法まで言わなくてもツールの紹介でもいいかも...?)
sakakibara-yuuki commented 1 year ago

1をやって時間をあまり次第3をやることとする。

otegami commented 1 year ago
  1. contribution guid の確認 上記を確認してみたが、特に doc 改善のフローはなさそう
sakakibara-yuuki commented 1 year ago

書くこと!

Minari documentsを改善

basic-usage の Installationpip install minariをコードブロックにすること -->

Collecting Dataのコードを実行する前にpip install gymnasiumを挿入する。 Expected Result: DataCollectorV0 classのenvインスタンスが生成される Acutual Result:

Traceback (most recent call last):
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/bipedal_walker.py", line 15, in <module>
    import Box2D
ModuleNotFoundError: No module named 'Box2D'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sakakibara/Minari/sample.py", line 5, in <module>
    env = gym.make('LunarLander-v2')
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/registration.py", line 756, in make
    env_creator = load_env_creator(env_spec.entry_point)
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/registration.py", line 545, in load_env_creator
    mod = importlib.import_module(mod_name)
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/__init__.py", line 1, in <module>
    from gymnasium.envs.box2d.bipedal_walker import BipedalWalker, BipedalWalkerHardcore
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/bipedal_walker.py", line 25, in <module>
    raise DependencyNotInstalled(
gymnasium.error.DependencyNotInstalled: Box2D is not installed, run `pip install gymnasium[box2d]`

what i did

以下のコードをsample.pyとする

from minari import DataCollectorV0
import gymnasium as gym

env = gym.make('LunarLander-v2')
env = DataCollectorV0(env, record_infos=True, max_buffer_steps=100000)

やったこと

pyenv local 3.9.13
python -m venv Minari
pip install minari
python sample.py

information about version

Python 3.9.13 pyenv 2.3.22-1-g51166377 pip 22.0.4 from /home/sakakibara/Minari/Minari/.Minari/lib/python3.9/site-packages/pip (python 3.9) below is information about Ubuntu

cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
sakakibara-yuuki commented 1 year ago

やったこと

なぜやったのか

collecting usage を実行したら、下記の問題に直面したので解決するため

環境の情報について

実行したこと

# sample.py
from minari import DataCollectorV0
import gymnasium as gym

env = gym.make('LunarLander-v2')
env = DataCollectorV0(env, record_infos=True, max_buffer_steps=100000)
$ pyenv local 3.9.13
$ python -m venv Minari
$ pip install minari
$ python sample.py

結果:

Expected Result: DataCollectorV0のインスタンスenvが生成される

Actual Result: 下記のエラーに直面する。

Traceback (most recent call last):
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/bipedal_walker.py", line 15, in <module>
    import Box2D
ModuleNotFoundError: No module named 'Box2D'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sakakibara/Minari/sample.py", line 5, in <module>
    env = gym.make('LunarLander-v2')
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/registration.py", line 756, in make
    env_creator = load_env_creator(env_spec.entry_point)
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/registration.py", line 545, in load_env_creator
    mod = importlib.import_module(mod_name)
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/__init__.py", line 1, in <module>
    from gymnasium.envs.box2d.bipedal_walker import BipedalWalker, BipedalWalkerHardcore
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/bipedal_walker.py", line 25, in <module>
    raise DependencyNotInstalled(
gymnasium.error.DependencyNotInstalled: Box2D is not installed, run `pip install gymnasium[box2d]`
sakakibara-yuuki commented 1 year ago

What I did

Added a step to install "gymnasium" in docs/content/basic_usage.md

Why I did

During the "collecting usage" step, I face the following problem, which I will try to resolve.

$ python sample.py

Traceback (most recent call last):
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/bipedal_walker.py", line 15, in <module>
    import Box2D
ModuleNotFoundError: No module named 'Box2D'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sakakibara/Minari/sample.py", line 5, in <module>
    env = gym.make('LunarLander-v2')
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/registration.py", line 756, in make
    env_creator = load_env_creator(env_spec.entry_point)
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/registration.py", line 545, in load_env_creator
    mod = importlib.import_module(mod_name)
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/__init__.py", line 1, in <module>
    from gymnasium.envs.box2d.bipedal_walker import BipedalWalker, BipedalWalkerHardcore
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/bipedal_walker.py", line 25, in <module>
    raise DependencyNotInstalled(
gymnasium.error.DependencyNotInstalled: Box2D is not installed, run `pip install gymnasium[box2d]`

About My Development Environment

How I reproduce

# sample.py
from minari import DataCollectorV0
import gymnasium as gym

env = gym.make('LunarLander-v2')
env = DataCollectorV0(env, record_infos=True, max_buffer_steps=100000)
$ pyenv local 3.9.13
$ python -m venv Minari
$ pip install minari
$ python sample.py

Results

Expected Result: Instance env of DataCollectorV0 is created.

Actual Result: the below problem is happened.

Traceback (most recent call last):
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/bipedal_walker.py", line 15, in <module>
    import Box2D
ModuleNotFoundError: No module named 'Box2D'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sakakibara/Minari/sample.py", line 5, in <module>
    env = gym.make('LunarLander-v2')
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/registration.py", line 756, in make
    env_creator = load_env_creator(env_spec.entry_point)
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/registration.py", line 545, in load_env_creator
    mod = importlib.import_module(mod_name)
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/__init__.py", line 1, in <module>
    from gymnasium.envs.box2d.bipedal_walker import BipedalWalker, BipedalWalkerHardcore
  File "/home/sakakibara/.pyenv/versions/3.9.13/lib/python3.9/site-packages/gymnasium/envs/box2d/bipedal_walker.py", line 25, in <module>
    raise DependencyNotInstalled(
gymnasium.error.DependencyNotInstalled: Box2D is not installed, run `pip install gymnasium[box2d]`
otegami commented 1 year ago
Before After
変更前のスクリーンショットを貼る 変更後のスクリーンショットを貼る
otegami commented 1 year ago

^ Markdown の テーブルを利用すると変更前後の変化が見やすくなります! ref: https://www.markdownguide.org/extended-syntax/

github-actions[bot] commented 1 year ago

おつかれさまでした!

ワークショップの終了にともないissueを閉じますが、このまま作業メモとして使っても構いません :ok_hand:

ワークショップの感想を集めています!

ブログなどに書かれた際は、このページへリンクの追加をお願いします :pray:

またの参加をお待ちしています!