Skip to content

Commit

Permalink
Fix memory leak in base_class.py (#1908)
Browse files Browse the repository at this point in the history
* Fix memory leak in base_class.py

Loading the data return value is not necessary since it is unused. Loading the data causes a memory leak through the ep_info_buffer variable. I found this while loading a PPO learner from storage on a multi-GPU system since the ep_info_buffer is loaded to the memory location it was on while it was saved to disk, instead of the target loading location, and is then not cleaned up.

* Update changelog.rst

* Update changelog

---------

Co-authored-by: Antonin RAFFIN <antonin.raffin@ensta.org>
  • Loading branch information
peteole and araffin authored May 15, 2024
1 parent 4317c62 commit 6c00565
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 5 deletions.
8 changes: 5 additions & 3 deletions docs/misc/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Changelog
==========

Release 2.4.0a0 (WIP)
Release 2.4.0a1 (WIP)
--------------------------

Breaking Changes:
Expand All @@ -14,6 +14,8 @@ New Features:

Bug Fixes:
^^^^^^^^^^
- Fixed memory leak when loading learner from storage, ``set_parameters()`` does not try to load the object data anymore
and only loads the PyTorch parameters (@peteole)
- Cast type in compute gae method to avoid error when using torch compile (@amjames)

`SB3-Contrib`_
Expand All @@ -30,7 +32,7 @@ Deprecations:

Others:
^^^^^^^
- Fix various typos (@cschindlbeck)
- Fixed various typos (@cschindlbeck)

Bug Fixes:
^^^^^^^^^^
Expand Down Expand Up @@ -1659,4 +1661,4 @@ And all the contributors:
@anand-bala @hughperkins @sidney-tio @AlexPasqua @dominicgkerr @Akhilez @Rocamonde @tobirohrer @ZikangXiong @ReHoss
@DavyMorgan @luizapozzobon @Bonifatius94 @theSquaredError @harveybellini @DavyMorgan @FieteO @jonasreiher @npit @WeberSamuel @troiganto
@lutogniew @lbergmann1 @lukashass @BertrandDecoster @pseudo-rnd-thoughts @stefanbschneider @kyle-he @PatrickHelm @corentinlger
@marekm4 @stagoverflow @rushitnshah @markscsmith @NickLucche @cschindlbeck
@marekm4 @stagoverflow @rushitnshah @markscsmith @NickLucche @cschindlbeck @peteole
2 changes: 1 addition & 1 deletion stable_baselines3/common/base_class.py
Original file line number Diff line number Diff line change
Expand Up @@ -592,7 +592,7 @@ def set_parameters(
if isinstance(load_path_or_dict, dict):
params = load_path_or_dict
else:
_, params, _ = load_from_zip_file(load_path_or_dict, device=device)
_, params, _ = load_from_zip_file(load_path_or_dict, device=device, load_data=False)

# Keep track which objects were updated.
# `_get_torch_save_params` returns [params, other_pytorch_variables].
Expand Down
2 changes: 1 addition & 1 deletion stable_baselines3/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.4.0a0
2.4.0a1

0 comments on commit 6c00565

Please sign in to comment.