Используйте dask_ml GridSearchCV на клиенте кластера HP C - PullRequest
0 голосов
/ 07 февраля 2020

Я работаю над большим набором данных и пытаюсь найти гиперпараметры моей модели благодаря GridSearchCV из dask_ml, как представлено в учебнике dask_ml .

, вот мой python code:

import pandas as pd
from sklearn.model_selection import GroupKFold
from dask_ml.model_selection import GridSearchCV
from dask.distributed import Client, progress
from dask_jobqueue import PBSCluster
from sklearn.externals import joblib

df_features = pd.read_sql_query(...)
df_labels = pd.read_sql_query(...)
df_groups = pd.read_sql_query(...)
splitter = list(GroupKFold(n_splits=cv_folds).split(features_values,
                                                    labels_values,
                                                    groups))
clf = RandomForestClassifier()
clf = GridSearchCV(clf,
                   cv_parameters,
                   cv=splitter,
                   return_train_score=True)

cluster = PBSCluster(cores=12,
                     memory="60GB")
cluster.adapt(minimum_jobs=5, maximum_jobs=10)
client = Client(cluster)
with joblib.parallel_backend('dask'):
    clf.fit(features_values, labels_values)

, а затем dask попросил меня использовать client.scatter для развертывания данных на рабочих следующим образом:

(_CVIterableWrapper(cv=[(array([     3,      4, .. ... e, False, True)
Consider scattering large objects ahead of time
with client.scatter to reduce scheduler burden and 
keep data on workers

    future = client.submit(func, big_data)    # bad

    big_future = client.scatter(big_data)     # good
    future = client.submit(func, big_future)  # good
  % (format_bytes(len(b)), s)

Но если я использую серверную часть, как в учебнике ( с разбросом):

with joblib.parallel_backend('dask', scatter=[features_values, labels_values]):
    clf.fit(features_values, labels_values)

тогда не может быть найдено ни одного работника:

distributed.core - ERROR - No workers found
Traceback (most recent call last):
  File "/.../lib/python3.6/site-packages/distributed/core.py", line 412, in handle_comm
    result = await result
  File "/.../lib/python3.6/site-packages/distributed/scheduler.py", line 2703, in scatter
    raise gen.TimeoutError("No workers found")
tornado.util.TimeoutError: No workers found

Любые предложения приветствуются.

Примечание : Если Я использую меньший набор данных, все работает.

...