1

我在 ubuntu LXC 容器中运行 R,该容器位于具有 32 个内核的服务器上。我正在使用 caret 包运行并行随机森林模型,使用不同数量的内核:

cl = makeCluster(c(rep("localhost",cores)), outfile = "")
registerDoParallel(cl,cores = cores)

rf_train <- train(gt~.,data=training,
              method='parRF', tuneGrid = data.frame(mtry = 7), na.action = na.omit,
              trControl=trainControl(method='repeatedcv',number=10,
                                     classProbs = TRUE, allowParallel = TRUE)
          )               
stopCluster(cl)

当我使用cores <- 1它时,它以串行方式运行,没有错误。

当我使用时,在cores <- 2运行之前我不会出错stopCluster(cl),此时我得到:

Warning message:
executing %dopar% sequentially: no parallel backend registered 
Warning message:
executing %dopar% sequentially: no parallel backend registered

(请注意,这是在该过程已经成功完成之后,并行,如 确认top。)

如果我使用cores <- 4或更多,除了在我停止集群时对每个核心重复上述警告之外,我还会 Error in unserialize(socklist[[n]]) : error reading from connection 在计算完成之前得到。

无论我是在 Rstudio Server 中还是在控制台中运行计算,这种行为都是相同的。我从我的一位同事那里得到了这段代码,他以前能够使用所有 32 个内核运行此计算而没有错误。我认为可能是 Rstudio Server 泄漏了内存,但我找不到证据。(跑步rm()gc()无济于事)。

知道什么可能导致这些错误吗?

4

0 回答 0