如何在 dask 分布式中管理单个 worker 上的 GPU 资源?

How to manage GPU resources on a single worker in dask distributed?

我有一个关于 dask distributed 的问题。

假设我想 运行 一组任务,每个任务 运行 在不同数量的 GPU 上,例如,一个任务 运行s 在 2 个 GPU 上(类型 A) ,而其他几个 运行 在 1 个 GPU(B 型)上。我的理解是可以使用 "resources" 属性 设置多个 worker。例如,我可能总共有 3 个 GPU,并设置一个 worker 的资源变量为 "gpus=2",另一个 worker 的资源变量为 "gpus=1"。很明显,这里的"gpus"是一个抽象名词(参见here)。

然而,这意味着在 A 类任务在具有 2 个 GPU 的 worker 上具有 运行 之后,该 worker 将只会同时执行一个 B 类任务,从而不会利用另一个与此 worker 关联的其他可用 GPU。这个对吗?

理想情况下,我想定义一个 worker,其具有在执行作业时更新的 GPU 总数(这里:3)(类似于 ncores)。因此,worker 应该能够 运行 并行执行 A 类的单个任务和 B 类的一项任务,然后并行执行 运行 B 类的三个任务。这可能吗?

干杯

是的,您可以只声明该工作器具有三个 GPU。 Worker 将跟踪当前 运行ning 任务的资源,并确保它不会 运行 总资源需求会超过 worker 资源的任务。