dask jobqueue динамически распределяются рабочие ресурсы - PullRequest
1 голос
/ 25 марта 2020

Я новый пользователь dask.jobqueue и благодаря этому пытаюсь планировать задачи.

Количество запускаемых задач может варьироваться (от нескольких десятков до нескольких сотен) и График зависимостей между этими задачами может быть довольно сложным. Кроме того, потребности в ресурсах для каждой из этих задач могут сильно различаться, поскольку некоторые из них будут сильно многопоточными, а другие - нет. Однако у меня нет впечатления, что в данный момент возможно динамическое изменение ресурсов «работника».

, например, фрагмент кода:

@dask.delayed()
def first_task(...)
    """mono thread task
    """
...
@dask.delayed()
def second_task(...)
    """higly multithreaded task
    """
...

cluster = PBSCluster(...)
cluster.scale(...) # or cluster.adapt(...)
client = Client(cluster)

first_return = first_task()# mono thread
second_return = second_task(first_return) # threaded
third_task(second_return) # highly multitraded

# launch tasks
third_task.compute()

Процедуры срабатывает благодаря .compute (), который может принимать именованный параметр 'resources', но, насколько я понимаю (https://distributed.dask.org/en/latest/resources.html), соответствует ресурсам, ранее сообщенным каждому работнику при создании кластера, что не соответствуют динамическому c управлению ресурсами на одного работника, которого я ищу.

По сути, возможно ли переключиться с:

third_task.compute(resources={...})

на что-то более связанное с каждым из задачи для обработки? Приложить как-нибудь ресурсы, необходимые для каждого dask.delayed?

@dask.delayed(resources={"cpu":1, "ram": "5GB"})
def first_task(...)
...
@dask.delayed(resources={"cpu":24, "ram": "120GB"})
def third_task(...)
...
third_task.compute()

Спасибо,

1 Ответ

0 голосов
/ 28 марта 2020

По состоянию на 2020-03-27 ответ - нет

...