【问题标题】:Memory Issues in R when trying to run models in parallel尝试并行运行模型时 R 中的内存问题
【发布时间】:2016-07-27 03:34:08
【问题描述】:

我正在尝试使用 'caret' 包对大约 28000 行和 58 列的所有数字数据的数据集运行一些预测。 (如果您想知道,这是 UCI 数据集存储库上的 mash 社交新闻数据集,在将其中的 75% 用于训练数据集之后)

如果页面浏览量超过 1400,我正在尝试在“是”/“否”上运行一些分类模型。

这是我使用的一般输入

library(caret)
library(foreach)
library(doParallel)

cl<-detectCores() *.5
registerDoParallel(cl)

ctrl = trainControl(
    summaryFunction = twoClassSummary,
    classProbs = TRUE,
    savePredictions = 'final',  # change to TRUE for all
    method = 'cv',
    number = kfolds,
    repeats = repeats_folds,
    verboseIter = TRUE,
    seeds = seeds,
    allowParallel =TRUE,
    preProcOptions = c('scale','center')
)




"train" is the first 58 or so columns exlcuding a couple of irrelevant ones



mod_rf = train(
    x = train, y = target,
    method = 'rf',
    trControl =  ctrl,
    tuneGrid = grid_rf,
    # tuneLength = NULL,
    metric=measurement
)

但是,在生成实际预测时,我遇到了一些重大问题。要么我的计算机崩溃并在 Rstudio 上弹出一个提示它需要终止,要么它似乎没有完成。

我有一台 16gb 最先进的 Macbook Pro。有什么我可以或应该做的事情来提高我的表现吗?我在这里使用的核心数量是 4 而不是 8,因为这会减慢我笔记本电脑的其余部分。

【问题讨论】:

  • 尝试使用 method = "parRF"。否则随机森林将不会并行运行。
  • 尝试使用method = "ranger" 或其他高性能随机森林包之一。请记住,当您使用 X 个 worker 并行运行时,您将始终增加内存需求 X 倍,此外,在并行运行之前查看 Activity Monitor在运行随机森林之前评估您的数据占用了多少内存。
  • @phiver 使用并行处理方式,他将并行运行模型调整,而不是底层 RF 模型。这通常比顺序调整和并行运行每个 RF 模型要快。

标签: r performance memory r-caret


【解决方案1】:

我认为您错误地使用了 registerDoParallel。尝试使用:

cl <- makeCluster(detectCores())
registerDoParallel(cl)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多