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% и каждому рабочему назначена только одна задача.