【问题标题】:Should I set `inter_op_parallelism_threads` and `intra_op_parallelism_threads` to 1 when I use ray to create a actor?使用 ray 创建 actor 时,是否应该将 `inter_op_parallelism_threads` 和 `intra_op_parallelism_threads` 设置为 1?
【发布时间】:2019-03-24 11:08:37
【问题描述】:

当我在A2C中使用ray创建actors和learner时,我应该将inter_op_parallelism_threadsintra_op_parallelism_threads设置为1,还是默认保留?

【问题讨论】:

    标签: python tensorflow ray


    【解决方案1】:

    这取决于您希望演员使用多少资源。如果给定 actor 有一台专用机器,并且该 actor 可以使用该机器上的所有资源,则使用 TensorFlow 的默认设置。如果您要创建的更像是每个核心一个演员,那么将 inter_op_parallelism_threadsintra_op_parallelism_threads 设置为像 1 或 2 这样的小值是个好主意。

    一般来说,您可以尝试这两种方法,看看哪种方法更快。

    【讨论】:

    • 谢谢,所以如果我为每个核心创建一个演员,那么两者都应该设置为 1?
    • 是的,不过也值得尝试将inter_op_parallelism_threads 设置为 2 以了解其性能。根据演员实际在做什么(例如,他们中的一些人是否在某些时候处于空闲状态),这可能会表现得更好。但是,如果他们一直都很忙,那么 1 将防止演员之间过多的争吵。
    • 感谢您的耐心等待。我现在明白了你的大部分答案,除了“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 资源。
    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 2012-05-07
    • 2013-10-02
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多