【发布时间】:2019-03-24 11:08:37
【问题描述】:
当我在A2C中使用ray创建actors和learner时,我应该将inter_op_parallelism_threads和intra_op_parallelism_threads设置为1,还是默认保留?
【问题讨论】:
标签: python tensorflow ray
当我在A2C中使用ray创建actors和learner时,我应该将inter_op_parallelism_threads和intra_op_parallelism_threads设置为1,还是默认保留?
【问题讨论】:
标签: python tensorflow ray
这取决于您希望演员使用多少资源。如果给定 actor 有一台专用机器,并且该 actor 可以使用该机器上的所有资源,则使用 TensorFlow 的默认设置。如果您要创建的更像是每个核心一个演员,那么将 inter_op_parallelism_threads 和 intra_op_parallelism_threads 设置为像 1 或 2 这样的小值是个好主意。
一般来说,您可以尝试这两种方法,看看哪种方法更快。
【讨论】:
inter_op_parallelism_threads 设置为 2 以了解其性能。根据演员实际在做什么(例如,他们中的一些人是否在某些时候处于空闲状态),这可能会表现得更好。但是,如果他们一直都很忙,那么 1 将防止演员之间过多的争吵。
. If I've clearly set num_cpus=1`,演员之间还会有任何争用吗?
num_cpus=1 时,Ray 调度程序将确保每个核心不会创建多个这样的actor。但是,actor 仍然可能是高度多线程的,并且仍然可以使用所有可用的 CPU 内核。 Ray 实际上并没有阻止演员使用机器上的所有资源。这有意义吗?
num_cpus=1装饰所有actor,则允许创建的最大actor数量是ray.init中指定的cpu数量。但它并没有说明一个演员可以使用多少 cpu 资源。