Почему scikit-learn переключается на SequentialBackend? - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь запустить следующий код на машине с 16 доступными процессорами:

def tokenizer(text):
    return text.split()

param_grid = [{'vect__stop_words': [None, stop],
               'vect__binary': [True, False]}]

bow = CountVectorizer(ngram_range=(1,1), tokenizer=tokenizer)  
multinb_bow = Pipeline([('vect', bow), ('clf', MultinomialNB())])

gs_multinb_bow = GridSearchCV(multinb_bow, param_grid, scoring='f1_macro', 
                              cv=3, verbose=1, n_jobs=-1)

gs_multinb_bow.fit(X_train, y_train)

Я устанавливаю n_jobs на -1, но scikit-learn переключается на SequentialBackend, даже если ядобавьте диспетчер контекста with parallel_backend('loky'):, и сценарий все еще выполняется с использованием только 1 одновременного работника.

Fitting 3 folds for each of 4 candidates, totalling 12 fits
[Parallel(n_jobs=-1)]: Using backend SequentialBackend with 1 concurrent workers.

Тот же результат сохраняется, если указать другое значение для n_jobs.

Почему это происходит? Недавно я выполнил похожий код для аналогичной задачи, и поиск по сетке работал параллельно на нескольких процессорах, как указано n_jobs с использованием LokyBackend.

...