pytorch / pytorch/rl

[Feature Request] lazy implementation of priority updates for prototype `ReplayBuffer`

Open
#616 0 comments 0 reactions 1 assignee View on GitHub

@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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.