分布式工作者的Dask工作者资源

分布式工作者的Dask工作者资源,dask,dask-distributed,Dask,Dask Distributed,在分布式多处理辅助进程中定义辅助资源()时,是否为所有进程定义了资源池 例如,在我正在运行的工作主机上: dask-worker --nprocs 8 --resources HOST=1 现在,如果我提交需要资源={“主机”:1}的任务,这是否保证该机器上只有一个进程会在特定时刻执行此任务?资源关键字均匀地应用于所有进程。所有工作人员将获得一个主机资源。一般来说,对于机构集群上的成熟部署,我建议避免使用--nprocs关键字,而是单独创建每个dask工作进程;这是更明确的 dask-work

在分布式多处理辅助进程中定义辅助资源()时,是否为所有进程定义了资源池

例如,在我正在运行的工作主机上:

dask-worker --nprocs 8 --resources HOST=1

现在,如果我提交需要
资源={“主机”:1}
的任务,这是否保证该机器上只有一个进程会在特定时刻执行此任务?

资源关键字均匀地应用于所有进程。所有工作人员将获得一个
主机
资源。一般来说,对于机构集群上的成熟部署,我建议避免使用
--nprocs
关键字,而是单独创建每个dask工作进程;这是更明确的

dask-worker scheduler-address:8786 --resources
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786

我懂了。。那么,在我的示例中,如何确保这些工作人员中只有一人运行特定的任务呢?如果我仍然使用nproc并定义requirementhost:1,那么所有进程都将并发运行。另一方面,如果我需要主机:8那么。。。他们谁也不会跑?对于没有共同保姆的独立流程,同样的问题。资源不会限制任务多次运行,而是限制哪些工作人员可以运行哪些任务。上面的例子避免了
--nproc
,应该是完全明确的。我建议避免使用
--nprocs
关键字。我明白了,我们将从使用--nprocs转向使用我们自己的流程管理器,并显式启动多个流程。让我再解释一下我的情况。其思想是单个主机上的工作进程仍然共享某些资源。因此,当我运行一个需要主机上所有资源的任务时,只有该主机上的一个辅助进程能够同时运行。我认为多线程辅助进程很简单,但是有没有一个特性支持多个辅助进程的这种情况?PS-我们可能可以在工作代码中实现一些资源同步,但它会变得更复杂。建议使用
dask.utils.SerializableLock
在使用资源约束运行任务时,整个任务的依赖项是否也使用资源约束运行,或者资源约束是否仅应用于最后一个节点?换句话说,资源约束是否在整个计算图上级联?是否有方法仅为图形的特定部分指定该约束。