На этом шаге мы рассмотрим вопросы, связанные с распараллеливанием вычислений.
Несмотря на то, что выполнение решетчатого поиска с большим количеством параметров на огромных наборах данных может представлять сложность с вычислительной точки зрения, эта задача является чрезвычайно параллельной (embarrassingly parallel). Это означает, что построение модели с использованием конкретной настройки параметра для конкретного разбиения перекрестной проверки может осуществляться независимо от других настроек параметров и моделей. Данный факт делает решетчатый поиск и перекрестную проверку идеальными кандидатами для распараллеливания по нескольким процессорным ядрам или распараллеливания на кластере. В GridSearchCV и cross_val_score вы можете использовать несколько процессорных ядер, задав значение параметра n_jobs равным нужному количеству ядер. Вы можете установить n_jobs=-1, чтобы использовать все доступные ядра.
Имейте в виду, что scikit-learn не поддерживает вложенность параллельных операций (nesting of parallel operations). Поэтому, если вы используете опцию n_jobs для вашей модели (например, для случайного леса), вы не можете использовать ее в GridSearchCV для осуществления поиска по этой модели. При работе с большими наборами данных и сложными моделями использование большого числа ядер, возможно, потребует слишком много памяти и вы должны контролировать ее использование памяти при параллельном построении больших моделей.
Кроме того, можно распараллелить решетчатый поиск и перекрестную проверку по нескольким машинам в кластере, хотя на данный момент эта возможность в scikit-learn не поддерживалась. Однако можно воспользоваться IPython parallel для выполнения параллельного решетчатого поиска, если вы согласны писать циклы for для параметров, как мы это делали на 142 шаге: "Простой решетчатый поиск".
Для пользователей Spark существует недавно разработанный пакет spark-sklearn, который позволяет запускать решетчатый поиск на уже готовом кластере Spark.
Со следующего шага мы начнем рассматривать метрики качества модели и их вычисление.