Запуск RandomizedSearchCV для настройки LightGBM Regressor для больших данных

Я работаю над обучением регрессионной модели LightGBM для набора данных из примерно 3 миллионов точек с 22 функциями. Я пытаюсь настроить гиперпараметры модели с помощью RandomizedSearchCV, это занимает очень много времени. Я использую виртуальную машину в облаке Google с 24 ядрами ЦП и оперативной памятью 32 ГБ.

Когда я пытаюсь использовать все ядра процессора для случайного поиска или большинство из них, как показано ниже:

# Use the random grid to search for best hyperparameters
# First create the base model to tune
lgbm = lgb.LGBMRegressor()
# Random search of parameters, using 2 fold cross validation, 
# search across 100 different combinations, and use all available cores
lgbm_random = RandomizedSearchCV(estimator = lgbm, param_distributions = random_grid, 
                         n_iter = 100, cv = 2, scoring='neg_mean_absolute_error',
                          verbose=10, random_state=42, n_jobs = 18)

Останавливается с этой ошибкой:

Рабочий процесс, управляемый исполнителем, был неожиданно завершен. Это может быть вызвано ошибкой сегментации при вызове функции или чрезмерным использованием памяти, из-за которого операционная система убивает работника. Коды выхода рабочих процессов: {SIGKILL (-9)}

Как я могу использовать все ядра процессора для этого в обычном режиме?

Имеет ли значение запускать случайный поиск на GPU вместо CPU? и сколько ядер GPU подходит для этой работы?


person Khaled    schedule 11.12.2019    source источник


Ответы (1)


Я считаю, что вам следует удалить n_jobs из RandomizedSearchCV, и это решит проблему. Вы можете указать num_threads в гиперпараметрах LightGBM для использования параллельного обучения (который является alias из n_jobs в LGB).

Согласно официальному руководству, использовать все потоки вашего компьютера не рекомендуется. . Вы должны использовать что-то меньшее, чем потоки ядра вашего процессора.

для параллельного обучения не используйте все ядра ЦП, так как это приведет к снижению производительности сетевого взаимодействия.

person smerllo    schedule 12.12.2019