#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 будет пытаться использовать больше ядер чем есть в наличии - это тоже может существенно замедлить выполнение.
Комментариев нет:
Отправить комментарий