深度强化学习经验回放(Experience Replay Buffer)的三点高性能修改建议:随机采样、减少保存的数据量、简化计算等

高性能的 ReplayBuffer 应该满足以下三点:

  1. 随机采样 random sample 的速度要快,尽可能加快读取速度(最为重要)
  2. 减少保存的数据量,增加吞吐效率(对分布式而言重要)
  3. 保存能简化计算的变量(对特定算法而言重要)

为了达成以上要求,我建议做出以下修改:

  1. Replay Buffer 的数据都放在连续的内存里,加快读取速度
  2. 按 trajectory 的顺序保存 env transition,避免重复保存 next state,减少数据量
  3. 分开保存 state 与其他数据,减少数据量
  4. 将 off-policy 的数据一直保存在显存内
  5. 保存 mask = gamma if done else 0 用于计算 Q 值,而不是保存 done
  6. 为 on-policy 的 PPO 算法保存 noise 用于计算新旧策略的熵

本文的重点:ReplayBuffer 的数据要放在连续内存里,实验结果如下:

我们使用 Numpy 库在内存里、使用 PyTorch 库在显存里 创建了一整块连续的空间,对比了 List 和 Tuple 的方案。结果:连续存储空间的明显更节省时间。

猜你喜欢

转载自blog.csdn.net/sinat_39620217/article/details/131727112