in mtrl/replay_buffer.py [0:0]
def save(self, save_dir, size_per_chunk: int, num_samples_to_save: int):
if self.idx == self.last_save:
return
if num_samples_to_save == -1:
# Save the entire replay buffer
self._save_all(
save_dir=save_dir,
size_per_chunk=size_per_chunk,
)
else:
if num_samples_to_save > self.idx:
num_samples_to_save = self.idx
replay_buffer_to_save = self
else:
replay_buffer_to_save = self._sample_a_replay_buffer(
num_samples=num_samples_to_save
)
replay_buffer_to_save.idx = num_samples_to_save
replay_buffer_to_save.last_save = 0
backup_dir_path = Path(f"{save_dir}_bk")
if not backup_dir_path.exists():
backup_dir_path.mkdir()
replay_buffer_to_save._save_all(
save_dir=str(backup_dir_path),
size_per_chunk=size_per_chunk,
)
replay_buffer_to_save.delete_from_filesystem(dir_to_delete_from=save_dir)
backup_dir_path.rename(save_dir)
self.last_save = self.idx