配置

应为您的集群配置 Dask-jobqueue,以便它知道每个作业要请求多少资源以及如何分配这些资源。您可以在创建 Cluster 对象时使用关键字参数或通过配置文件指定配置。

关键字参数

您可以将关键字传递给 Cluster 对象,以定义 Dask-jobqueue 应如何定义单个作业

cluster = PBSCluster(
     # Dask-worker specific keywords
     cores=24,             # Number of cores per job
     memory='100GB',       # Amount of memory per job
     shebang='#!/usr/bin/env zsh',   # Interpreter for your batch script (default is bash)
     processes=6,          # Number of Python processes to cut up each job
     local_directory='$TMPDIR',  # Location to put temporary data if necessary
     # Job scheduler specific keywords
     resource_spec='select=1:ncpus=24:mem=100GB',
     queue='regular',
     account='my-account',
     walltime='02:00:00',
)

请注意,上面的 coresmemory 关键字不是指您期望的完整部署,而是指单个作业的大小,单个作业的大小不应超过集群中单个机器的大小。

您将单独使用 scale 方法指定要部署多少个作业。您可以指定工作者数量,或所需的总核心数或内存容量。

cluster.scale(jobs=2)  # launch 2 workers, each of which starts 6 worker processes
cluster.scale(cores=48)  # Or specify cores or memory directly
cluster.scale(memory="200 GB")  # Or specify cores or memory directly

它们都实现相同的功能。您可以选择对您最有意义的方式。

配置文件

每次都为 Cluster 构造函数指定所有参数可能会出错,尤其是在与新用户共享此工作流程时。相反,我们建议使用如下所示的配置文件

# jobqueue.yaml file
jobqueue:
  pbs:
    cores: 24
    memory: 100GB
    processes: 6
    shebang: "#!/usr/bin/env zsh"

    interface: ib0
    local-directory: $TMPDIR

    resource-spec: "select=1:ncpus=24:mem=100GB"
    queue: regular
    account: my-account
    walltime: 00:30:00

请参阅配置示例以获取实际示例。

如果您将此文件放置在 ~/.config/dask/ 目录中,则 Dask-jobqueue 将默认使用这些值。然后您无需使用关键字参数即可构建 Cluster 对象,这些参数将作为默认值使用。

cluster = PBSCluster()

您仍然可以使用关键字参数覆盖配置值

cluster = PBSCluster(processes=12)

如果您导入了 dask_jobqueue,则会自动在 ~/.config/dask/jobqueue.yaml 中添加一个空白的 jobqueue.yaml 文件。您应该使用该配置文件中与您的作业调度器相对应的部分。上面我们使用了 PBS,但其他作业调度器的工作方式相同。您应该能够与同事分享这些文件。如果您能说服您的 IT 人员,您也可以将此类文件放置在 /etc/dask/ 中,它将自动影响集群上的所有人。

有关配置 Dask 的更多信息,请参阅 Dask 配置文档