python - ray `num_cpus` 是否用于实际分配 CPU?
问题描述
使用 ray 框架时,有一个选项可以选择此任务所需的 CPU 数量,如此处所述。
前任:
@ray.remote(num_cpus=4)
def f():
return 1
但是,尚不清楚是否会有实际的 CPU 分配:
- 该函数将被分配
4
CPU(例如使用 CPU 亲和性,如taskset
linux 命令或cpuset
docker 参数) - 或者调度器将
num_cpus
仅在内部使用它作为调度元数据。让 ex 决定他是否可以开始一个需要 16 个 cpu 的新任务,其中只剩下 10 个。该任务仍然可以访问所有 CPU,并且可以“使用”比请求更多的 CPU 时间num_cpus
选项 2 似乎更有可能,但这在文档中没有说明。此外,GPU 似乎有一种选项 1,这使得调度程序的意图不清楚:
Ray 将自动为该进程设置环境变量 CUDA_VISIBLE_DEVICES。
该进程被配置为使用某个 GPU(但可以通过 reset 绕过它CUDA_VISIBLE_DEVICES
)
那么,num_cpus
在ray中是如何使用的呢?
解决方案
好问题 - 对于 CPU,分配仅用作元数据(选项 2)。对于 GPU,分配既用作元数据,也提供隔离。文档将很快更新(之后会更新答案)。
推荐阅读
- git - GitLab 存储库镜像 - 仅推送,无拉取选项
- apache - 重写所有带有 .html 扩展名的 url,除了 index.html
- kubernetes - 如何列出所有对 istio 网关的传入请求?
- php - Codeigniter:插入后进行触发器更新
- java - 在 Spring 配置中配置 WebRequestInterceptor
- wordpress - 如何从 Sage 中 CPT 存档页面的元标题中删除“存档”?根.io
- java - 带有自定义配置器的 Spring 406
- javascript - 不能将下拉菜单的 innerHTML 设置为等于数组的变量
- javascript - 在jQuery中处理多个复选框
- python - 降维后使用选定变量会引发值错误