【问题标题】:R, RAM amounts, and specific limitations to avoid memory errorsR、RAM 数量和避免内存错误的特定限制
【发布时间】:2014-02-15 14:13:01
【问题描述】:

我已经阅读了有关 R 的各种大数据包。许多似乎可行,但至少在我理解这个问题的情况下,我喜欢用于常见模型的许多包不能与推荐的大数据一起使用包(例如,我使用 lme4、VGAM 和其他相当常见的回归分析包,这些包似乎与 ff 等各种大数据包不太兼容)。

我最近尝试使用 VGAM 来使用来自 General Social Survey 的数据进行多分模型。当我运行一些模型来解释多年来受访者的聚类以及其他控件列表时,我开始点击整个“无法分配大小 yadda yadda 的向量......”我尝试了各种推荐的项目,例如作为清除内存并在可能的情况下使用矩阵没有好的效果。我倾向于增加我机器上的 RAM(实际上只是购买一台具有更多 RAM 的新机器),但我想知道这是否能解决我的问题,然后再放弃 1500 美元购买一台新机器,特别是因为这是我个人使用的,将完全由我的研究生预算资助。

目前我正在运行一台具有 16GB RAM、R 3.0.2 的 Windows 8 机器,并且我使用的所有软件包都已更新到最新版本。我通常使用的数据集最多不超过 100,000 个个案/受访者。就分析而言,我可能需要具有多行的矩阵和/或数据框,例如,如果我使用 15 个变量与具有多个级别的因子之间的交互,或者如果我需要在矩阵中为我的 100,000 中的每一个设置多行案例基于每个受访者每个类别的某些 DV 的每个类别排成一行。对于一些社会科学工作来说,这可能有点大,但我觉得从宏观上看,就数据分析而言,我的要求实际上并没有那么高。我敢肯定,许多 R 用户会对更大的数据进行更深入的分析。

所以,我想我的问题是——考虑到我通常使用的数据大小和分析类型,为了避免内存错误和/或必须使用特殊包来处理我正在运行的数据/进程的大小?例如,我正在关注一台运行 32GB RAM 的机器。那会剪掉吗?我应该选择 64GB RAM 吗?或者我真的需要咬紧牙关,可以这么说,开始学习将 R 与大数据包一起使用,或者只是找到一个不同的 stats 包或学习一种更强大的编程语言(甚至不确定那会是什么,Python, C++ ??)。从长远来看,后一种选择当然会很好,但目前对我来说是相当禁止的。我在几个项目中处于中间阶段,我遇到了类似的问题,没有时间在截止日期前一起建立新的语言技能。

尽可能具体 - 在具有 16GB、32GB 和 64GB RAM 的好机器上,64 位 R 的最大容量是多少?我四处搜索,但没有找到可以用来衡量我个人需求的明确答案。

【问题讨论】:

  • 您可以使用 Amazon EC2 实例测试您的实际内存需求。
  • 简短评论:至少在原则上,lme4 不应过分强调 100,000 次观察的问题。 MEMSS 包中的 InstEval 示例有 73K 观察值,lme4 在非特别大的笔记本电脑上运行良好:github.com/lme4/lme4/issues/150(另一方面,您的固定效应模型有点复杂...... )
  • ... 如果你需要使用 lmecorARMA 结构,你可以快速填满你的 RAM。 :(
  • 您需要多少 RAM 取决于您的模型。 model.matrix 可能会消耗相当多的 RAM,具体取决于您拥有多少因子级别。如果您进行聚类 - 这取决于距离矩阵有多大。一般来说 - 您应该了解统计模型背后的计算技术以了解您的 RAM 要求。
  • 感谢您的帮助。我一直在研究 Amazon EC2,它似乎很有希望。我没有想过要跳到那里并运行一些东西来检查内存需求,但这将是在构建新机器之前衡量事物的好方法。我还注意到在某些模型上我可以很好地运行模型,但是当我开始运行其他代码以从模型中获取结果(比如 coefs 等)并构建自定义格式的表格以输出到 .csv(共享与不使用 R 的同事一起)我在那里遇到了内存问题,需要在操作之前进行一些清理。

标签: r memory memory-management


【解决方案1】:

一般的经验法则是,R 大约需要三倍于 RAM 中的数据集大小才能舒适地工作。这是由 R 中的对象复制引起的。因此,将 RAM 大小除以 3 以粗略估计最大数据集大小。然后您可以查看您使用的数据类型,并选择您需要多少 RAM。

当然,R 也可以处理内存不足的数据,参见HPC task view。这个earlier answer of mine 可能也很有趣。

【讨论】:

  • 虽然,一些回归函数通常创建的矩阵所需的内存大小可能会随着数据大小和预测变量的数量而增加二次或(更)差。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 2023-03-18
  • 2021-10-12
  • 2013-11-03
  • 1970-01-01
相关资源
最近更新 更多