При указании, скажем, n_jobs = -1 в пакетах scikit-learn, нужно ли сначала импортировать joblib.Parallel? - PullRequest
0 голосов
/ 17 марта 2020

При использовании пакетов scikit-learn, у которых есть возможность выбрать значение для n_jobs для параллельной обработки, нужно ли сначала импортировать joblib.Parallel или будет ли пакет scikit-learn работать с параллельной обработкой без необходимости сначала импортировать joblib.Parallel.

Некоторые из пакетов scikit-learn с параллельной обработкой:

  • sklearn.linear_model.LogisticRegression

  • xgboost.XGBRegressor

  • xgboost.XGBClassifier

et c.

1 Ответ

1 голос
/ 17 марта 2020

Q : "... нам нужно для первого импорта joblib.Parallel или сработает ли пакет scikit-learn с параллельной обработкой без необходимости сначала импортировать joblib.Parallel. " ?

Правильно B : scikit-learn будет работать, так как он был правильно спроектирован и реализован, чтобы управлять своими внутренними потребностями при импорте любого пакета. это сознательно зависит от. Это профессиональный стандарт программного обеспечения, позволяющий должным образом позаботиться о своих внутренних зависимостях, не так ли?


БОНУСНАЯ ЧАСТЬ для тех, кто действительно заинтересован в понимание ПОЧЕМУ :

(base) Tue Mar 17 12:00:34 a64FX:~$ grep -R "joblib.Parallel" /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/
            /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/sklearn/decomposition/online_lda.py:        parallel : joblib.Parallel (optional)
            /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/sklearn/decomposition/online_lda.py:            Pre-initialized instance of joblib.Parallel.
            /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/sklearn/decomposition/online_lda.py:        parallel : joblib.Parallel
            /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/sklearn/decomposition/online_lda.py:            Pre-initialized instance of joblib.Parallel
Binary file /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/sklearn/decomposition/__pycache__/online_lda.cpython-35.pyc matches
            /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py:                print("Using %s as joblib.Parallel backend instead of %s "
            /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py:    """Callback used by joblib.Parallel's multiprocessing backend.
            /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/sklearn/externals/joblib/_dask.py:        joblib.Parallel will never access those results
            /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/sklearn/externals/joblib/_dask.py:        # See 'joblib.Parallel.__call__' and 'joblib.Parallel.retrieve' for how
Binary file /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/sklearn/externals/joblib/__pycache__/parallel.cpython-35.pyc matches
Binary file /home/r2d2/anaconda2/pkgs/scikit-learn-0.20.0-py35h4989274_1/lib/python3.5/site-packages/sklearn/externals/joblib/__pycache__/_dask.cpython-35.pyc matches
...