mlr / parallelMap: как передать libPaths работникам при работе с контрольной точкой? - PullRequest
0 голосов
/ 14 сентября 2018

Это в основном тот же вопрос, что и этот Как установить .libPaths (контрольную точку) для рабочих при выполнении параллельных вычислений в R , но теперь с учетом параллелизации подгонок модели mlr. Я понимаю, что мне нужно использовать parallelMap с mlr, но как я могу убедиться, что каждый работник использует правильные .libPaths?

remove.packages("mlr")
remove.packages("rpart")

checkpoint::checkpoint("2018-09-01",
                       scanForPackages = TRUE)

library(mlr)
library(parallelMap)
library(rpart)
parallelStartSocket(2L)

task = makeClassifTask(data = iris, target = "Species")
learner = makeLearner("classif.rpart", minsplit = 7, predict.type = "prob")
mod = resample(learner, task, resampling = cv5)

parallelStop()

Ошибка в параллельной библиотеке ("mlr", master = FALSE, level = "mlr.resample",: пакеты не могут быть загружены на всех подчиненных: mlr.

Информация о сеансе:

R версия 3.5.1 (2018-07-02) Платформа: x86_64-w64-mingw32 / x64 (64-разрядная версия) Работает под: Windows 7 x64 (сборка 7601) с пакетом обновления 1

Матричные продукты: по умолчанию

языковой стандарт: [1] LC_COLLATE = German_Germany.1252 LC_CTYPE = German_Germany.1252 LC_MONETARY = German_Germany.1252 [4] LC_NUMERIC = C LC_TIME = German_Germany.1252

прикрепленные базовые пакеты: [1] stats graphics grDevices utils
наборы методов базы данных

другие прикрепленные пакеты: [1] rpart_4.1-13 parallelMap_1.3
mlr_2.13 ParamHelpers_1.11

загружено через пространство имен (и не подключено): [1] Rcpp_0.12.18
pillar_1.3.0 compiler_3.5.1 plyr_1.8.4 bindr_0.1.1
tools_3.5.1 [7] tibble_1.4.2 gtable_0.2.0
checkmate_1.8.5 lattice_0.20-35 pkgconfig_2.0.2 rlang_0.2.2
[13] Matrix_1.2-14 fastmatch_1.1-0 rstudioapi_0.7 yaml_2.2.0 параллельный_3.5.1 bindrcpp_0.2.2 [19] dplyr_0.7.6 grid_3.5.1 tidyselect_0.2.4 glue_1.3.0 data.table_1.11.4 R6_2.2.2
[25] XML_3.98-1.16 Survival_2.42-3 ggplot2_3.0.0 purrr_0.2.5 magrittr_1.5 backports_1.1.2 [31] scale_1.0.0 BBmisc_1.11 splines_3.5.1 assertthat_0.2.0 checkpoint_0.4.3 colorspace_1.3-2 [37] stringi_1.1.7 lazyeval_0.2.1 munsell_0.5.0
crayon_1.3.4

1 Ответ

0 голосов
/ 29 октября 2018

Это работает для меня, если я меняю путь к библиотеке по умолчанию на каталог контрольных точек с помощью R_LIBS.

remove.packages("mlr")
remove.packages("rpart")

print(.libPaths())
checkpoint::checkpoint("2018-09-01",
                       scanForPackages = TRUE)
print(.libPaths())
Sys.setenv(R_LIBS = paste(.libPaths()[1], Sys.getenv("R_LIBS"), sep = .Platform$path.sep))

library(mlr)
library(parallelMap)
library(rpart)
parallelStartSocket(2L)

task = makeClassifTask(data = iris, target = "Species")
learner = makeLearner("classif.rpart", minsplit = 7, predict.type = "prob")
mod = resample(learner, task, resampling = cv5)

parallelStop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...