Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docs: Env attributes should be modified using env setters #1789

Merged
merged 4 commits into from
Jan 10, 2024
Merged

Docs: Env attributes should be modified using env setters #1789

merged 4 commits into from
Jan 10, 2024

Conversation

fracapuano
Copy link
Contributor

This PR aims at solving #1573.
In the issue, I documented how directly accessing environment attributes might have an unexpected outcome when dealing with Vectorized environments, and that one should instead invoke the env_method method of VecEnv passing in a setter for the environment considered.

This is relevant in use-cases where one uses callbacks modifying environments during training (typical in multi-task/meta-RL scenarios).
In this PR, I present:

  • The problem, in full detail
  • A use case where this is particularly relevant
  • An example solution

Description

I have added a new paragraph to vec_envs.rst, explaining in detail the rationale behind this problem. I have also presented an example of use case where this very same problem might arise, and a scheme of the solution (both on the environment and callback side).

Motivation and Context

This change introduce a new paragraph into the documentation aiming at solving the unexpected behavior of directly accessing environment attributes via dot notation.

#1573

closes #1573

  • [ x] I have raised an issue to propose this change (required for new features and bug fixes)

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation (update in the documentation)

Checklist

  • I've read the CONTRIBUTION guide (required)
  • I have updated the changelog accordingly (required).
  • My change requires a change to the documentation.
  • I have updated the tests accordingly (required for a bug fix or a new feature).
  • I have updated the documentation accordingly.
  • I have opened an associated PR on the SB3-Contrib repository (if necessary)
  • I have opened an associated PR on the RL-Zoo3 repository (if necessary)
  • I have reformatted the code using make format (required)
  • I have checked the codestyle using make check-codestyle and make lint (required)
  • I have ensured make pytest and make type both pass. (required)
  • I have checked that the documentation builds using make doc (required)

Note: You can run most of the checks using make commit-checks.

Note: we are using a maximum length of 127 characters per line

@fracapuano
Copy link
Contributor Author

hey @pseudo-rnd-thoughts @araffin, just following up on this PR (proposing a doc integration as per #1573)

@pseudo-rnd-thoughts
Copy link
Contributor

I know that SB3 uses different vector implementations from the Gymnasium ones so I would just check that this still works if the environment is wrapped by a wrapper, e.g., ClipAction

@araffin araffin added the Maintainers on vacation Maintainers are on vacation so they can recharge their batteries, we will be back soon ;) label Jan 8, 2024
@fracapuano
Copy link
Contributor Author

I know that SB3 uses different vector implementations from the Gymnasium ones so I would just check that this still works if the environment is wrapped by a wrapper, e.g., ClipAction

on it

@araffin araffin removed the Maintainers on vacation Maintainers are on vacation so they can recharge their batteries, we will be back soon ;) label Jan 10, 2024
@araffin araffin self-requested a review January 10, 2024 09:20
Copy link
Member

@araffin araffin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks =)

@araffin araffin merged commit a653aec into DLR-RM:master Jan 10, 2024
4 checks passed
friedeggs pushed a commit to friedeggs/stable-baselines3 that referenced this pull request Jul 22, 2024
* add: paragraph on how to modify vec envs attributes via setters (solves
DLR-RM#1573)

* Update vec env doc

* Update callback doc and SB3 version

* Fix indentation

---------

Co-authored-by: Antonin Raffin <antonin.raffin@dlr.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

SubprocEnv does not call reset() when expected and set_attr behaves weirdly
3 participants