[Feature Request] lazy implementation of priority updates for prototype `ReplayBuffer`
Open
@vmoens is already working on this.
Since Oct 27, 2022.
enhancement
- Dominant language
- Python
- Stars
- 3.6k
- Forks
- 484
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 207
Description
Motivation
The modular prototype replay buffer includes a feature that marks changes in the storage for update in the different components. This is especially useful for prioritized sampling in the PrioritizedSampler, in which we use this to update the priority of sampling each element. Currently, this update is done synchronously with updates to storage, but we could do better by storing the updated indexes and only updating the priorities when we need them.
Solution
Something like
PrioritizedSampler:
# ...
def mark_update(self, index):
self._updates.extend(index)
def sample(...):
if self._updates:
self.update_all()
# sample continues
Alternatives
We could also have the update running as a background task on a timer.
Checklist
- I have checked that there is no similar issue in the repo (required)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.