【问题标题】:Optimum memory usage in RR中的最佳内存使用
【发布时间】:2019-02-24 02:00:51
【问题描述】:

我一直在使用 64 位 Windows 机器。 RStudio 和 R 也是 64 位的。我在 r5.4xlarge 的 EC2 实例上使用这些。它有16个核心和大约128G的内存。如果我运行命令 memory.limit() 我看到 100GB。因为,在 .RProfile 文件中,我设置了这个内存限制。仍然当我使用 RScript 时,我看到任务管理器中只使用了 10GB 内存。

我应该如何确保 R 使用最佳内存以便脚本运行得更快?如果我在本地使用 64 GB RAM 运行相同的脚本,则脚本在 5 分钟内完成,CPU 使用率为 100%,但在 EC2 上,它在 15 分钟内完成,CPU 使用率仅为 25%。如果需要其他信息,请告诉我。

【问题讨论】:

  • 我不清楚 RAM 是造成两台计算机之间性能差异的原因。您能否提供两台机器的会话信息,以及您在两台机器上运行的简单基准测试脚本以及两台机器的基准测试输出?

标签: r amazon-web-services memory amazon-ec2


【解决方案1】:

我不确定内存是否是这个问题。

由于您注意到服务器仅以 25% 的 CPU 使用率和 100% 在本地运行,因此您的代码可能在本地并行化,而不是在 VM 上。

要查看的另一件事是您是否在本地运行 Microsoft R Open?而不是在虚拟机上? R Open 默认使用英特尔 MKL(数学内核库)。这是 BLAS 库的更快实现。

sessionInfo()

用于标准 R 库

other attached packages:
[1] Matrix_1.2-12

对于 R Open(类似)

other attached packages:
[1] RevoUtilsMath_10.0.0

【讨论】:

  • 对于本地和服务器,我通过命名空间加载了 Matrix_1.2-14(未附加):对于服务器,我有 - R 版本 3.5.1 (2018-07-02) 平台: x86_64-w64-mingw32/x64 (64-bit) 运行于:Windows Server >= 2012 x64 (build 9200) 对于本地我有 - R 版本 3.4.3 (2017-11-30) 平台:x86_64-w64-mingw32/ x64(64 位)在以下条件下运行:Windows >= 8 x64(构建 9200)对于本地,我只加载了更多的包,例如 -attached 基本包:[1] 并行样条曲线统计图形 grDevices 实用程序数据集方法 [9] 基础
  • 如果不看代码在做什么就很难判断。由于 100% 的 CPU 在本地使用,这可能意味着 R 在本地运行多线程,在服务器上并行加载。
  • 代码如下-d_train_attom1
  • 看起来 xgboost 没有在多个线程上运行。您可以更改 nthread 参数 = -1(默认)以使用所有可用线程,如果这没有区别,则安装的 xgboost 没有启用线程。
  • 当我们使用xgboost_0.6.4.1版本和R版本3.3.0时,这个问题终于解决了。当我们使用高端服务器(更多 RAM 和更多内核)时,我们可以获得出色的性能。
猜你喜欢
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2020-02-03
相关资源
最近更新 更多