Dask Gateway, установка рабочих ресурсов

Я пытаюсь настроить ресурсы для рабочих в соответствии с документами здесь , но в настройке, которая использует Dask Gateway. В частности, я хотел бы иметь возможность следить за ответом на этот вопрос , но с помощью Dask Gateway.

Мне не удалось найти ссылку на рабочие ресурсы в параметрах ClusterConfig , и я попробовал следующее (в соответствии с этим ответом ), что, похоже, не работает:

      def set_resources(dask_worker):
    dask_worker.set_resources(task_limit=1)
    return dask_worker.available_resources, dask_worker.total_resources

client.run(set_resources)

# output from a 1 worker cluster
> {'tls://255.0.91.211:39302': ({}, {})}


# checking info known by scheduler
cluster.scheduler_info

> {'type': 'Scheduler',
 'id': 'Scheduler-410438c9-6b3a-494d-974a-52d9e9fss121',
 'address': 'tls://255.0.44.161:8786',
 'services': {'dashboard': 8787, 'gateway': 8788},
 'started': 1632434883.9022279,
 'workers': {'tls://255.0.92.232:39305': {'type': 'Worker',
   'id': 'dask-worker-f95c163cf41647c6a6d85da9efa9919b-wvnf6',
   'host': '255.0.91.211',
   'resources': {}, #### still {} empty dict
   'local_directory': '/home/jovyan/dask-worker-space/worker-ir8tpkz_',
   'name': 'dask-worker-f95c157cf41647c6a6d85da9efa9919b-wvnf6',
   'nthreads': 4,
   'memory_limit': 6952476672,
   'services': {'dashboard': 8787},
   'nanny': 'tls://255.0.92.232:40499'}}}

Как это сделать, если кластер создается с помощью config.yaml диаграммы управления (в идеале, поле в параметрах кластера, которое пользователь может изменить!) для Dask Gateway или после того, как рабочие процессы уже запущены?

1 ответ

Я нашел способ указать это, по крайней мере, в Kubernetes, через KubeClusterConfig.worker_extra_container_config. Это мой фрагмент yaml для рабочей конфигурации (в частности, это в моей конфигурации для развертывания daskhub helm):

      dask-gateway:
  gateway:
    backend:
      worker:
        extraContainerConfig:
          env:
          - name: DASK_DISTRIBUTED__WORKER__RESOURCES__TASKSLOTS
            value: "1"

Возможность установки рабочих ресурсов не отображается в параметрах кластера и явно не отображается вKubeClusterConfig. Формат специфичны для переменной среды описывается здесь . Переменные среды ресурсов должны быть установлены до запуска рабочего процесса dask, я обнаружил, что это не работает, когда я устанавливаюKubeClusterConfig.environment.

Используя это, я могу запускать многопоточный numpy ( np.dot) с помощью mkl в контейнере dask worker, которому было выделено 4 ядра. Я вижу использование ЦП на 400% и каждому рабочему назначена только одна задача.

Другие вопросы по тегам