R 中的插入符号:设置 allowParallel 的核心数



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

从我收集的信息来看,不同的模型类型可能使用不同的并行化包。我正在处理Windows,所以我想它没有使用doMC(我知道如何设置内核数量......

因此,经过更多的研究,我找到了一种使用我想要的内核数的方法: 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
)

我很惊讶:

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

不这样做。 也许存在不承认上述内容的递归并行性。 你可以尝试使用doFuture软件包:

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

编辑:2022-01-29:"多进程"后端已被弃用,取而代之的是"多会话"。 如果要分叉并行处理,请使用"多核"。这应该防止不需要的嵌套并行。

最新更新