Предполагая, что это происходит, когда вы подгоняете модель, проверьте эту часть исходного кода метода fit () модели ( ссылка ):
# The SAG solver releases the GIL so it's more efficient to use
# threads for this solver.
if solver in ['sag', 'saga']:
prefer = 'threads'
else:
prefer = 'processes'
fold_coefs_ = Parallel(n_jobs=self.n_jobs, verbose=self.verbose,
**_joblib_parallel_args(prefer=prefer))(
path_func(X, y, pos_class=class_, Cs=[self.C],
fit_intercept=self.fit_intercept, tol=self.tol,
verbose=self.verbose, solver=solver,
multi_class=multi_class, max_iter=self.max_iter,
class_weight=self.class_weight, check_input=False,
random_state=self.random_state, coef=warm_start_coef_,
penalty=self.penalty,
max_squared_sum=max_squared_sum,
sample_weight=sample_weight)
for class_, warm_start_coef_ in zip(classes_, warm_start_coef))
точно ситуация
prefer = 'threads'
**_joblib_parallel_args(prefer=prefer)
Похоже, что если вы используете решатели sag
или saga
, вы можете столкнуться с проблемами многопоточности.Но решатель по умолчанию - liblinear
.
Кроме того, из источника для Parallel (), использованного выше ( link ), sklearn может сказать о возможном обходном пути для проблем с многопоточностью:
'threading' is a low-overhead alternative that is most efficient for
functions that release the Global Interpreter Lock: e.g. I/O-bound code or
CPU-bound code in a few calls to native code that explicitly releases the
GIL.
In addition, if the `dask` and `distributed` Python packages are installed,
it is possible to use the 'dask' backend for better scheduling of nested
parallel calls without over-subscription and potentially distribute
parallel calls over a networked cluster of several hosts.
Насколько я понимаю, что-то вроде следующего может уменьшить многопоточность:
from dask.distributed import Client
from sklearn.externals import joblib
from sklearn.linear_model import LogisticRegression
...
# create local cluster
client = Client(processes=False)
model = LogisticRegression()
with joblib.parallel_backend('dask'):
model.fit(...)
...
Использование Dask Joblib , как предлагается.