首页 > 解决方案 > 如何在 DASK 中批量调度 dask_jobqueue 作业而不是并发?

问题描述

通过阅读 Dask-Jobqueue ( https://jobqueue.dask.org/en/latest/ ),并在我们的 SLURM 集群上进行测试,似乎当您设置cluster.scale(n)和创建时client = Client(cluster),您的任何工作都无法开始,直到你所有n的工作都可以开始了。

假设您有 999 个作业要运行,以及一个有 100 个节点或插槽的集群;更糟糕的是,假设其他人共享集群,并且可能其中一些人有长期运行的工作。管理员有时需要对某些节点进行维护,因此他们会添加和删除节点。你永远不知道你能得到多少并行度。您希望集群调度程序简单地处理 999 个作业(在 slurm 中,这些将sbatch通过sbatch --dependency=) 在所有 999 个作业完成后处理共享目录。DASK 能以某种方式做到这一点吗?

这似乎是架构的一个基本限制,即所有作业都应该并行运行,并且用户必须指定并行度。

标签: dask

解决方案


你的理解不正确。Dask 可以运行少于指定数量的作业,正如您所要求的那样。它将使用到达的任何资源。


推荐阅读