首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rllib中的"num_envs_per_worker“是做什么的?

rllib中的"num_envs_per_worker“是做什么的?
EN

Stack Overflow用户
提问于 2020-03-03 21:22:41
回答 1查看 972关注 0票数 2

对于我的生活,我不明白"num_envs_per_worker“是做什么的。如果限制因素是策略评估,为什么我们需要创建多个环境?难道我们不需要创建多个策略吗?

请给我ELI5?

医生说:

单个进程中的

向量化:虽然许多env可以实现每个核心的高帧速率,但它们的吞吐量在实践中由于步骤间的策略评估而受到限制。例如,即使是小型TensorFlow模型也需要几毫秒的延迟来评估。可以通过在每个进程中创建多个env并对这些env进行批处理策略评估来解决这一问题。您可以将{"num_envs_per_worker":M}配置为让RLlib为每个工作人员创建M并发环境。RLlib通过VectorEnv.wrap()自动矢量化健身房环境。

Src:https://ray.readthedocs.io/en/latest/rllib-env.html

EN

回答 1

Stack Overflow用户

发布于 2020-07-11 15:07:00

可能有点晚了,但我的理解是:

正如您所引用的文档中所提到的,

  • 在使用TensorFlow (将数据转换为适当的结构、开销和向GPU传递数据的协调等)时存在很大的固定调用开销,但是,您可以使用一批数据调用TensorFlow模型,并且所需的执行时间通常可以很好地扩展。它应该在极限处线性地缩放,当从一行到几行时,它实际上可能是次线性的。例如,如果您要将1行数据传递给像GPU这样的向量处理单元(或专门的CPU指令),您最好通过尽可能多的行,因为它一次处理它,它实际上不会花费更多的时间。(这些并行执行单元只是处于空闲状态,您希望对数据行进行分批处理,以便只在必要时不频繁地支付固定的每次调用成本。这样做的一种方法是让多个RL环境同步执行。也许其中有8个,而这8个环境中的每一个都产生了自己的观测,然后在这批8个观测中调用一次TensorFlow模型,生成8个新的操作,然后用于产生8个新的观察,等等。摊销后,如果每个环境都在进行自己的TensorFlow调用,那么这只需花费1/8的TensorFlow评估成本。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60515722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档