Skip to content

Episode truncation & early stopping#581

Merged
Jinyu-W merged 9 commits intorl_workflow_refinefrom
huoran/rl_workflow_refine
Feb 17, 2023
Merged

Episode truncation & early stopping#581
Jinyu-W merged 9 commits intorl_workflow_refinefrom
huoran/rl_workflow_refine

Conversation

@lihuoran
Copy link
Copy Markdown
Contributor

Description

  • Add episode truncation to EnvSampler. This is not identical to duration in Env.
    • duration is an internal attribute of Env. When Env has executed all the steps in the duration, it "terminates".
    • "Truncation" is a concept in EnvSampler and does not have to be perceived by Env. When a single episode reaches maximum episode length, it is "truncated".
  • Refine callback-related logics. Add early stopping in training pipeline.

Linked issue(s)/Pull request(s)

Type of Change

  • Non-breaking bug fix
  • Breaking bug fix
  • New feature
  • Test
  • Doc update
  • Docker update

Related Component

  • Simulation toolkit
  • RL toolkit
  • Distributed toolkit

Has Been Tested

  • OS:
    • Windows
    • Mac OS
    • Linux
  • Python version:
    • 3.7
    • 3.8
    • 3.9
  • Key information snapshot(s):

Needs Follow Up Actions

  • New release package
  • New docker image

Checklist

  • Add/update the related comments
  • Add/update the related tests
  • Add/update the related documentations
  • Update the dependent downstream modules usage

@lihuoran lihuoran requested a review from Jinyu-W February 14, 2023 08:02
self._transition_cache: List[CacheElement] = []
self._agent_last_index: Dict[Any, int] = {} # Index of last occurrence of agent in self._transition_cache
self._reward_eval_delay = reward_eval_delay
self._max_episode_length = max_episode_length
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

feels like duplicated with the "max_tick", but the "truncated" info is different from "is_done". Strange

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

max_tick is the concept of Env while max_episode_length is the concept of EnvSampler. A more readable name is more than welcome.

@Jinyu-W Jinyu-W merged commit 9371949 into rl_workflow_refine Feb 17, 2023
@Jinyu-W Jinyu-W deleted the huoran/rl_workflow_refine branch February 17, 2023 06:15
Jinyu-W added a commit that referenced this pull request Feb 17, 2023
* PPO, SAC, DDPG passed

* Explore in SAC

* Test GYM on server

* Sync server changes

* pre-commit

* Ready to try on server

* .

* .

* .

* .

* .

* Performance OK

* Move to tests

* Remove old versions

* PPO done

* Start to test AC

* Start to test SAC

* SAC test passed

* Multiple round in evaluation

* Modify config.yml

* Add Callbacks

* [wip] SAC performance not good

* [wip] still not good

* update for some PR comments; Add a MARKDOWN file (#576)

Co-authored-by: Jinyu Wang <[email protected]>

* Use FullyConnected to replace mlp

* Update action bound

* ???

* Change gym env wrapper metrics logci

* Change gym env wrapper metrics logci

* refine env_sampler.sample under step mode

* Add DDPG. Performance not good...

* Add DDPG. Performance not good...

* wip

* Sounds like sac works

* Refactor file structure

* Refactor file structure

* Refactor file structure

* Pre-commit

* Pre commit

* Minor refinement of CIM RL

* Jinyu/rl workflow refine (#578)

* remove useless files; add device mapping; update pdoc

* add default checkpoint path; fix distributed worker log path issue; update example log path

* update performance doc

* remove tests/rl/algorithms folder

* Resolve PR comments

* Compare PPO with spinning up (#579)

* [wip] compare PPO

* PPO matching

* Revert unnecessary changes

* Minor

* Minor

* SAC Test parameters update (#580)

* fix sac to_device issue; update sac gym test parameters

* add rl test performance plot func

* update sac eval interval config

* update sac checkpoint interval config

* fix callback issue

* update plot func

* update plot func

* update plot func

* update performance doc; upload performance images

* Minor fix in callbacks; refine plot.py format.

* Add n_interactions. Use n_interactions to plot curves.

* pre-commit

---------

Co-authored-by: Huoran Li <[email protected]>
Co-authored-by: Huoran Li <[email protected]>

* Episode truncation & early stopping (#581)

* Add truncated logic

* (To be tested) early stop

* Early stop test passed

* Test passed

* Random action. To be tested.

* Warmup OK

* Pre-commit

* random seed

* Revert pre-commit config

---------

Co-authored-by: Jinyu-W <[email protected]>
Co-authored-by: Jinyu Wang <[email protected]>
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.

2 participants