Как использовать doRedis и каретку в кластере?

Я поигрался с пакетом doRedis в R, чтобы попробовать запустить код в кластере. У меня есть одна машина с Windows и одна машина с Ubuntu (на которой установлен Redis).

Я могу с радостью запустить пример из документации doRedis, но моя цель - иметь возможность использовать doRedis в тандеме с кареткой для некоторых приложений машинного обучения. Насколько я понимаю, каретка позволяет распараллеливать, и кажется, что у других это работает, но, хоть убей, я не могу понять, где я ошибаюсь.

Я нашел этот пример и немного изменил его на следующее:

library(caret)
library(doRedis)

dat = iris

registerDoRedis("jobs",
                host = "xyz")

xgb.grid = expand.grid(nrounds = c(10, 200),
                       max_depth = c(6),
                       eta = c(0.05),
                       gamma = c(0.01),
                       colsample_bytree = 1,
                       min_child_weight = 1,
                       subsample = 1)

ctrl = trainControl(method = 'cv',
                    number = 10,
                    verboseIter = F,
                    allowParallel = T)

set.seed(13)
xgb1 <- train(Species ~ .,
              data = dat,
              method = "xgbTree",
              trControl = ctrl,
              verbose = F,
              tuneGrid = xgb.grid)

removeQueue("jobs")

Это работает только на локальном компьютере и не распространяется в очередь redis (и я могу увидеть это, используя doRedis::jobs(), а также запустив redis-cli --stat в терминале Ubuntu, оба из которых не показывают, что задания передаются на сервер).

Что мне не хватает?

1 ответ

Пожалуйста, проверьте https://topepo.github.io/caret/parallel-processing.html

Соответствующая цитата:

train, rfe, sbf, bag а также avNNet получили дополнительный аргумент в соответствующих управляющих файлах, который называется allowParallelэто по умолчанию ИСТИНА. Когда TRUE, код будет выполняться параллельно, если параллельный бэкэнд (например, doMC) зарегистрирован.

Одно из предложений, которое поможет вам отладить это, - сначала попытаться использовать redis локально, если это работает, укажите другой сервер.

Другие вопросы по тегам