Страницы

Поиск по вопросам

среда, 25 декабря 2019 г.

Почему параметр n_jobs >1 в RandomForest замедляет обучение?

#python #машинное_обучение #scikit_learn


Используя библиотеку sklearn. Когда ставлю в RandomForest параметр n_jobs >1, то
алгоритм почему-то намного медленнее обучается. По логике, чем больше ядер я задействую,
тем быстрее должно происходить обучение, но получается полностью наоборот.

С чем это связано и как исправить?
    


Ответы

Ответ 1



Как указано в данном обсуждении - процесс распараллеливания расчетов может оказаться дорогим удовольствием. Особенно это заметно при выполнении одного или нескольких условий: мало входных данных маленькое значение параметра n_estimators маленькое значение параметра max_depth Значение n_jobs превышает число относительно свободных физических ядер Для маленького набора данных накладные расходы на распараллеливание могут оказаться дороже по сравнению с обучением модели используя одно ядро. Кроме того некоторые популярные дистрибутивы Python (например Anaconda) собираются с включенной поддержкой оптимизации MKL (Intel™ Math Kernel Library) или OpenBLAS. Как результат Sklearn может использовать число ядер большее нежели указано в n_jobs. Если за счет MKL или BLAS оптимизации уже используются несколько ядер, то указав n_jobs > 1 может привести к тому, что Sklearn будет пытаться использовать больше ядер чем есть в наличии - это тоже может существенно замедлить выполнение.

Комментариев нет:

Отправить комментарий