Dask Delayed игнорирует имя для зависимых переменных

При создании графика расчетов с использованием delayed Я пытаюсь присвоить имена, чтобы, если я визуализирую график, он был читабельным. Однако для задержанных переменных, которые зависят от функций, name Параметр не влияет на ключ. Вот игрушечный пример:

def calc_avg(a, b):
    return pd.concat([a, b], axis=1).mean(axis=1)

def calc_ratio(a, b):
    return a / b

a = delayed(pd.Series(np.random.rand(10)), name='a')
b = delayed(pd.Series(np.random.rand(10)), name='b')
c = delayed(pd.Series(np.random.rand(10)), name='c')

x = delayed(calc_avg, name='avg_result')(a,b)
y = delayed(calc_ratio, name='ratio_result')(x,c)

y.visualize()

Вы можете увидеть визуализацию здесь (я не могу встраивать изображения), но вместо "avg_result" я вижу "calc_avg-#0" и вместо того, чтобы видеть "ratio_result", я вижу "calc_ratio-#1". Если я смотрю на x.key или же y.key они не совпадают с именами, которые я предоставил. Это ожидаемое поведение?

1 ответ

Решение

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

Вы можете указать ключ, который вы хотите связать не при определении отложенной функции, а при ее вызове:

x = delayed(calc_avg)(a, b, dask_key_name='avg_result')
y = delayed(calc_ratio)(x, c, dask_key_name='ratio_result')
Другие вопросы по тегам