【问题标题】:What causes R to crash while working with large data sets? [closed]是什么导致 R 在处理大型数据集时崩溃? [关闭]
【发布时间】:2018-09-15 19:01:39
【问题描述】:

问题:

我有多个交易数据数据集,用于预测事件(作为结果的二进制分类)。其中之一有 10,587,989 行 23 列。我正在尝试使用 10 倍 cv 和 ctree (package:party) 运行 gradient boosting,但每次运行这些模型时,我的系统都会崩溃。

硬件:

16 核、48 gig RAM、48 gig SWAP

问题:

是什么导致 R 在处理大型数据集时崩溃,即使在使用并行处理、添加更多内存、弹跳系统之后?

我尝试过的事情:

  • 通过doParallel启用并行处理,执行xgBoost 通过caret,我看到每个核心都亮起,RAM 和交换正在 通过 linux 中的top 函数充分利用但最终 每次都崩溃。

  • 退回 RStudio 服务器,重新启动系统作为初始 机动但问题仍然存在。

我确实发现有人评论 H2O。我还联系了供应商并询问了他的解决方案,他建议使用 Sparkly,但您需要在服务器中安装 Hadoop 层才能运行 Sparkly。

【问题讨论】:

    标签: r apache-spark h2o


    【解决方案1】:

    我确实发现有人评论 H2O。我还联系了供应商并询问了他的解决方案,他建议使用 Sparkly,但您需要在服务器中安装 Hadoop 层才能运行 Sparkly。

    您的供应商弄错了; sparklyr / RSparkling 不需要 Hadoop 层,只需 Spark。

    但是,您也可以跳过 Spark 层并直接使用 H2O。这是最好的选择,根据我的经验,我认为您的硬件足以在 10M 行上训练 H2O GBM。这是一个H2O R tutorial,它显示了如何对 GBM 执行网格搜索。启动 H2O 时,只需确保从默认的 4G 增加内存即可:

    h2o.init(max_mem_size = "48G")
    

    H2O 还支持XGBoost,这是另一种 GBM 实现,所以这是另一种选择。

    【讨论】:

    • 我用的是 H2O 包。我的 R 会话没有崩溃(还)。尽管我不清楚我可以执行哪些优化来最大程度地减少 R 崩溃,但您的回答有所帮助。我将此标记为已回答。
    • 它在 H2O 中工作的原因是因为它的内存效率比派对包中的 GBM 实现要高得多。之前因为内存不足而崩溃(现在没有了)。
    • 我确实看到了一些问题。当我将 R 数据帧转换为 H2O 帧(as.h2o(my_data_frame)时,行数已从 700 万(大约)减少到 350 万行。调查为什么会发生这种情况。我停止了所有其他程序,所以我的服务器仅用于模型构建任务。
    • 那不好。如果您可以提供可重现的示例,请在此处提交错误报告:0xdata.atlassian.net/issues 如果您不需要进行任何数据修改,请使用h2o.importFile() 将数据直接从磁盘加载到 H2O 集群并完全跳过as.h2o() .它的内存效率更高。如果必须使用as.h2o(),则安装data.table 并设置options(h2o.use.data.table = TRUE) 以加快速度。见:stackoverflow.com/questions/49634547/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 2021-01-07
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多