Сколько заданий dask на одного работника

#dask #dask-distributed #dask-delayed

#dask #dask-распределенный #dask-задержка

Вопрос:

Если я раскручиваю кластер dask с N работниками, а затем отправляю более N заданий с использованием cluster.compute , пытается ли dask запускать все задания одновременно (планируя более 1 задания для каждого работника) или задания ставятся в очередь и выполняются последовательно?

Мой недавний опыт выполнения этого, похоже, предполагает последнее. Каждое задание требует больших затрат памяти, и отправка большего количества заданий, чем рабочих, приводит к их сбою из-за проблем с памятью.

Есть ли способ заставить dask строго выполнять только 1 задание на 1 работника одновременно и ставить в очередь другие задания?

Ответ №1:

Поведение по умолчанию определяется размером кластера. Если число работников больше 4, dask пытается угадать, какое количество потоков использовать в каждом работнике. Если вы хотите изменить это поведение, вы можете изменить количество потоков на одного работника с threads_per_worker помощью ключевого слова аргумент при создании кластера:

 cluster = LocalCluster(threads_per_worker=1)
client = Client(cluster)
cluster.compute(...)
 

Если вы используете SSHCluster, вам нужно передать количество потоков на одного работника в качестве аргумента рабочему:

 cluster = SSHCluster(worker_options={"nthreads": 1})
client = Client(cluster)
cluster.compute(...)