Caret in R:设置allowParallel的核心数量?

时间:2018-01-08 08:27:41

标签: r parallel-processing r-caret

我正在使用R的插入符号包,并且在训练函数(训练)中我使用了allowParallel参数,它可以工作。但是,它使用了所有核心,并且由于培训在我的本地PC上运行,我宁愿为自己留下一个核心,以便能够在训练模型时工作。有没有办法做到这一点?

从我收集的内容来看,不同的模型类型似乎可能使用不同的并行化包。我在windows上工作,所以我猜它不是在使用doMC(我知道如何设置核心数量......)

2 个答案:

答案 0 :(得分:6)

经过更多的研究,我找到了一种方法来使用我想要的核心数量:train可以选择直接指定与num.threads = 7一起使用的核心数(8个核心中的7个)

rf_model<-train(Target~., data = df_tree_train, method = "ranger",
                trControl = trainControl(method = "oob"
                                       , verboseIter  = TRUE
                                       , allowParallel = TRUE
                                       , classProbs = TRUE
                )
                , verbose = T
                , tuneGrid = tuneGrid
                , num.trees = 50
                , num.threads = 7  # <- This one
)

答案 1 :(得分:1)

我很惊讶:

library("doParallel")
registerParallel(parallel::detectCores() - 1)

没有这样做。也许有递归并行性不承认上述内容。您可以尝试使用doFuture包:

library("doFuture")
registerDoFuture()
plan(multiprocess, workers = availableCores() - 1)

应该防止不需要的嵌套并行性。