Extended changelog, slightly improved structure

This commit is contained in:
Michael Panchenko 2024-05-05 22:26:49 +02:00
parent 2abb4dac24
commit d8e5631567

View File

@ -3,31 +3,48 @@
## Release 1.1.0 ## Release 1.1.0
### Api Extensions ### Api Extensions
- Batch received two new methods: `to_dict` and `to_list_of_dicts`. #1063 - `data`:
- `Collector`s can now be closed, and their reset is more granular. #1063 - `Batch`:
- Trainers can control whether collectors should be reset prior to training. #1063 - Add methods `to_dict` and `to_list_of_dicts`. #1063 #1098
- Convenience constructor for `CollectStats` called `with_autogenerated_stats`. #1063 - Add methods `to_numpy_` and `to_torch_`. #1098, #1117
- `SamplingConfig` supports `batch_size=None`. #1077 - Add `__eq__` (semantic equality check). #1098
- Batch received new methods: `to_numpy_` and `to_torch_`. #1098, #1117 - `keys()` deprecated in favor of `get_keys()` (needed to make iteration consistent with naming) #1105.
- `to_dict` in Batch supports also non-recursive conversion. #1098 - `data.collector`:
- Batch `__eq__` implemented, semantic equality check of batches is now possible. #1098 - `Collector`:
- `Batch.keys()` deprecated in favor of `Batch.get_keys()` (needed to make iteration consistent with naming) #1105. - Introduced `BaseCollector` as a base class for all collectors. #1123
- `Experiment` and `ExperimentConfig` now have a `name`, that can however be overridden when `Experiment.run()` is called. #1074 - Add method `close` #1063
- When building an `Experiment` from an `ExperimentConfig`, the user has the option to add info about seeds to the name. #1074 - Method `reset` is now more granular (new flags controlling behavior). #1063
- New method in `ExperimentConfig` called `build_default_seeded_experiments`. #1074 - `CollectStats`: Add convenience constructor `with_autogenerated_stats`. #1063
- `SamplingConfig` has an explicit training seed, `test_seed` is inferred. #1074 - `trainer`:
- New `evaluation` package for repeating the same experiment with multiple seeds and aggregating the results (important extension!). - Trainers can now control whether collectors should be reset prior to training. #1063
Launchers for parallelization currently in alpha state. #1074 - policy:
- introduced attribute `in_training_step` that is controlled by the trainer. #1123
- policy automatically set to `eval` mode when collecting and to `train` mode when updating. #1123
- `highlevel`:
- `SamplingConfig`:
- Add support for `batch_size=None`. #1077
- Add `training_seed` for explicit seeding of training and test environments, the `test_seed` is inferred from `training_seed`. #1074
- `highlevel.experiment`:
- `Experiment` now has a `name` attribute, which can be set using `ExperimentBuilder.with_name` and
which determines the default run name and therefore the persistence subdirectory.
It can still be overridden in `Experiment.run()`, the new parameter name being `run_name` rather than
`experiment_name` (although the latter will still be interpreted correctly). #1074 #1131
- Add class `ExperimentCollection` for the convenient execution of multiple experiment runs #1131
- `ExperimentBuilder`:
- Add method `build_seeded_collection` for the sound creation of multiple
experiments with varying random seeds #1131
- Add method `copy` to facilitate the creation of multiple experiments from a single builder #1131
- `evaluation`: New package for repeating the same experiment with multiple seeds and aggregating the results. #1074
- The module `evaluation.launchers` for parallelization is currently in alpha state.
- Loggers can now restore the logged data into python by using the new `restore_logged_data` method. #1074 - Loggers can now restore the logged data into python by using the new `restore_logged_data` method. #1074
- `continuous.Critic`: - `utils`:
- `net.continuous.Critic`:
- Add flag `apply_preprocess_net_to_obs_only` to allow the - Add flag `apply_preprocess_net_to_obs_only` to allow the
preprocessing network to be applied to the observations only (without preprocessing network to be applied to the observations only (without
the actions concatenated), which is essential for the case where we want the actions concatenated), which is essential for the case where we want
to reuse the actor's preprocessing network #1128 to reuse the actor's preprocessing network #1128
- Base class for collectors: `BaseCollector` #1122 - `torch_utils` (new module)
- Collectors can now explicitly specify whether to use the policy in training or evaluation mode. #1122 - Added contextmanagers `in`
- New util context managers `in_eval_mode` and `in_train_mode` for torch modules. #1122
- `reset` of `Collectors` now returns `obs` and `info`. #1122
### Fixes ### Fixes
- `CriticFactoryReuseActor`: Enable the Critic flag `apply_preprocess_net_to_obs_only` for continuous critics, - `CriticFactoryReuseActor`: Enable the Critic flag `apply_preprocess_net_to_obs_only` for continuous critics,
@ -52,25 +69,28 @@ instead of just `nn.Module`. #1032
- tests and examples are covered by `mypy`. #1077 - tests and examples are covered by `mypy`. #1077
- `NetBase` is more used, stricter typing by making it generic. #1077 - `NetBase` is more used, stricter typing by making it generic. #1077
- Use explicit multiprocessing context for creating `Pipe` in `subproc.py`. #1102 - Use explicit multiprocessing context for creating `Pipe` in `subproc.py`. #1102
- Removed all `if __name__ == "__main__":` blocks from tests. #1122
- Improved typing issues in tests with buffer and collector. #1122
### Breaking Changes ### Breaking Changes
- `data`:
- Removed `.data` attribute from `Collector` and its child classes. #1063 - `Collector`:
- Collectors no longer reset the environment on initialization. Instead, the user might have to call `reset` - Removed `.data` attribute. #1063
expicitly or pass `reset_before_collect=True` . #1063 - Collectors no longer reset the environment on initialization.
Instead, the user might have to call `reset` expicitly or pass `reset_before_collect=True` . #1063
- Removed `no_grad` argument from `collect` method (was unused in tianshou). #1123
- `Batch`:
- Fixed `iter(Batch(...)` which now behaves the same way as `Batch(...).__iter__()`.
Can be considered a bugfix. #1063
- The methods `to_numpy` and `to_torch` in are not in-place anymore
(use `to_numpy_` or `to_torch_` instead). #1098, #1117
- Logging:
- `BaseLogger.prepare_dict_for_logging` is now abstract. #1074
- Removed deprecated and unused `BasicLogger` (only affects users who subclassed it). #1074
- VectorEnvs now return an array of info-dicts on reset instead of a list. #1063 - VectorEnvs now return an array of info-dicts on reset instead of a list. #1063
- Fixed `iter(Batch(...)` which now behaves the same way as `Batch(...).__iter__()`. Can be considered a bugfix. #1063
- Changed interface of `dist_fn` in `PGPolicy` and all subclasses to take a single argument in both - Changed interface of `dist_fn` in `PGPolicy` and all subclasses to take a single argument in both
continuous and discrete cases. #1032 continuous and discrete cases. #1032
- `utils.net.common.Recurrent` now receives and returns a `RecurrentStateBatch` instead of a dict. #1077 - `utils.net.common.Recurrent` now receives and returns a `RecurrentStateBatch` instead of a dict. #1077
- The methods `to_numpy` and `to_torch` in `Batch` is not in-place anymore (use `to_numpy_` or `to_torch_` instead). #1098, #1117
- `AtariEnvFactory` constructor (in examples, so not really breaking) now requires explicit train and test seeds. #1074 - `AtariEnvFactory` constructor (in examples, so not really breaking) now requires explicit train and test seeds. #1074
- `EnvFactoryRegistered` now requires an explicit `test_seed` in the constructor. #1074 - `EnvFactoryRegistered` now requires an explicit `test_seed` in the constructor. #1074
- `BaseLogger.prepare_dict_for_logging` is now abstract. #1074
- Removed deprecated and unused `BasicLogger` (only affects users who subclassed it). #1074
- Removed deprecations of `0.5.1` (will likely not affect anyone) and the unused `warnings` module. #1122
### Tests ### Tests