ray `num_cpus` 是否用于实际分配 CPU?

Phy*_*ade 6 python ray

当使用射线框架,还有是选择该任务所需的CPU数量的选项,如解释在这里

前任:

@ray.remote(num_cpus=4)
def f():
    return 1
Run Code Online (Sandbox Code Playgroud)

然而,目前还不清楚是否会有实际的 CPU 分配:

  1. 该函数将逐字分配4CPU(使用例如 CPU 亲和性,如在tasksetlinux 命令中,或cpusetdocker 参数)
  2. 或者调度程序将num_cpus仅在内部使用它,作为调度元数据。让 ex 决定他是否可以开始一个需要 16 个 cpu 的新任务,这里只剩下 10 个了。该任务仍然可以访问所有 CPU,并且可以“使用”比请求更多的 CPU 时间num_cpus

选项 2 似乎更有可能,但这在文档中没有说明。此外,GPU 似乎有一种选项 1,这使得调度程序的意图不明确:

Ray 将自动为该进程设置环境变量 CUDA_VISIBLE_DEVICES。

该进程被配置为使用某个 GPU(但可以绕过它,通过重置CUDA_VISIBLE_DEVICES

那么,num_cpus在ray中是如何使用的呢?

ric*_*iaw 7

好问题 - 对于 CPU,分配仅用作元数据(选项 2)。对于 GPU,分配既用作元数据又提供隔离。文档将很快更新(之后会更新答案)。