我试图找出 RLLib 如何有效地使用帧,即它如何避免将重复的帧保存到内存中,这在 OpenAI 基线中是通过 LazyFrames 完成的。
在 Ray 的 RLLibatari_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 个观察值的串联 numpy 数组,内存需求也不会比单独保存 4 个观察值并通过射线对象 ID 链接它们高得多? 我在这里想念什么?