我正在尝试找出RLLib如何有效地利用帧,即它如何避免将重复的帧保存到内存中,这在OpenAI基线中是通过LazyFrames完成的。
在Ray的RLLib atari_wrapper.py中,似乎所有的观测值都以普通的ndarray格式存储:https://github.com/ray-project/ray/blob/master/python/ray/rllib/env/atari_wrappers.py#L253
这与OpenAI基线中LazyFrames的常见用法形成了鲜明对比:https://github.com/openai/baselines/blob/master/baselines/common/atari_wrappers.py#L217
这样做是因为PyArrow不能使用LazyFrames并且需要numpy数组吗?即使是这样,假设RLLib中的_get_ob输出是4个观测值的串联数字数组,那么内存需求不是比分别保存4个观测值并通过射线对象in链接它们要高得多吗?这里我漏掉了什么?
发布于 2019-07-18 03:19:26
RLlib不使用LazyFrames。对于使用大量内存的算法,例如DQN,它使用LZ4压缩观察值,这以一些额外的CPU时间为代价提供了更高的节省。
https://stackoverflow.com/questions/57081007
复制相似问题