У меня есть несколько независимых наборов данных [(X1, y1), (X2, y2) (X3, y3), (X4, y4)]
, и я использую распределенный Dask для оценки нескольких моделей параллельно.Обратите внимание, что у меня есть только четыре типа оценщиков и только один набор параметров для каждого оценщика (т.е. я не занимаюсь настройкой гиперпараметра).Я могу установить несколько моделей параллельно для одного набора данных (X1, y1)
:
dask_client = Client('tcp://your-dask-cluster')
gscv = GridSearchCV(pipeline,
params,
return_train_score=True,
verbose=3,
refit=False
)
with joblib.parallel_backend('dask'):
gscv.fit(X1, y1)
Однако у меня есть много дополнительных процессов, к которым у меня есть доступ, где я могу построить модели для (X2, y2)
, (X3, y3)
,и (X4, y4)
.К сожалению, неясно, как мне пришлось бы корректировать свой код, чтобы выполнить это, или, если это вообще возможно.
Наивно, я мог бы просто сделать:
with joblib.parallel_backend('dask'):
gscv.fit(X1, y1)
gscv2 = GridSearchCV(pipeline,
params,
return_train_score=True,
verbose=3,
refit=False
)
with joblib.parallel_backend('dask'):
gscv2.fit(X2, y2)
gscv3 = GridSearchCV(pipeline,
params,
return_train_score=True,
verbose=3,
refit=False
)
with joblib.parallel_backend('dask'):
gscv3.fit(X3, y3)
gscv4 = GridSearchCV(pipeline,
params,
return_train_score=True,
verbose=3,
refit=False
)
with joblib.parallel_backend('dask'):
gscv4.fit(X4, y4)
Но тогдабыли бы простаивающие ядра, которые ждут, пока все модели (X1, y1)
будут завершены, прежде чем перейти к следующему набору данных.Я хочу иметь возможность отправить все наборы данных и обеспечить координацию за кулисами.
По сути, я спрашиваю, может ли обучающий набор данных быть параметром, который изменяется?