Я пытаюсь подготовить список моделей карет R на Google Cloud Compute Engine (Ubuntu LTS16.04). Модель xgboost (и xgblinear, и xgbtree) заняла целую вечность, чтобы завершить обучение. Фактически загрузка ЦП всегда равна 0 из мониторинга состояния GCP.
Я использовал библиотеку doMC для параллельного выполнения. Это очень хорошо работает для таких моделей, как C5.0, glmnet и gbm. Однако для xgboost (как xgblinear, так и xgbtree), по какой-то причине, процессор, кажется, не работает, потому что загрузка остается 0. Устранение неполадок:
1. Убрал doMC и работал только с одним ядром, проблема осталась.
2. Изменена библиотека параллельного выполнения на doParallel вместо doMC. В этом раунде загрузка ЦП возросла, но для обучения GCP потребовалось 5 минут. Те же самые коды закончились всего за 12 секунд на моем локальном ноутбуке. (Я запустил 24 процессора на GCP и 4 процессора на локальном ноутбуке)
3. Параллельное выполнение doMC хорошо работает для другого алгоритма. Только xgboost имеет эту проблему.
Код:
xgblinear_Grid <- expand.grid(nrounds = c(50, 100),
lambda = c(.05,.5),
alpha = c(.5),
eta = c(.3))
registerDoMC(cores = mc - 1)
set.seed(123)
xgbLinear_varimp <- train(formula2, data=train_data, method="xgbLinear", metric=metric, tuneGrid = xgblinear_Grid, trControl=fitControl, preProcess = c("center", "scale", "zv"))
print(xgbLinear_varimp)
Сообщение об ошибке не генерируется. Он просто работает бесконечно. R sessionInfo