r - macOS 和 CentOS 上的并行 Caret 与 doSNOW 集群

标签 r machine-learning parallel-processing cpu-usage r-caret

我正在学习本教程使用 R 和插入符进行机器学习简介 ( https://www.youtube.com/watch?v=z8PRU46I3NY ),并在 macOS 上与 CentOS 上并行运行 R 和 doSNOW 时获得不同的机器行为:

cl = makeCluster(4, type = 'SOCK')
registerDoSNOW(cl)

# build model
caret.cv = train(Survived ~ .,
                 data = titanic.train,
                 method = 'xgbTree',
                 tuneGrid = tune.grid,
                 trControl = train.control)
stopCluster(cl)

在 macOS 上运行时,它会创建 4 个进程,每个进程有 1 个线程,因此运行率 4@>99%(xgbTree 大约需要 6 分钟)。在 centOS 上,它创建 4 个进程,每个进程运行 24 个线程,因此总共 24@>99%(xgbTree 未完成 >>30 分钟)。即使在 CentOS 上只创建一两个集群,也会使用所有线程并且服务器完全繁忙。

更新:当使用 doSNOW 集群运行非插入代码时,一切正常 - 每个进程运行 1 个线程,即使在 centOS 上也是如此。

<小时/>

我有什么遗漏的吗? 我是否应该期望在具有相同脚本的这些系统上有不同的行为?我是否需要指定在 centOS 上使用的内容?

我对插入符和并行 R 很陌生,到目前为止我已经了解到 Mac/Linux 和 Windows 之间只有更大的差异。

如果我能为您提供更多信息,请告诉我。 感谢您的帮助和建议。

<小时/> CentOS 60x+ 上的 htop: R --slave --no-restore ==file=/usr/lib64/R/library/snow/RSOCKnode.R --args MASTER=localhost PORT=11326 OUT=/dev/null SNOWLIB=/usr/lib64/R/图书馆

R 版本 3.3.2:x86_64-redhat-linux-gnu ; x86_64-apple-darwin13.4.0/ centOS服务器:2个套接字,每个6核,每个2个线程/ ma​​cOS MBP:1/8/1

最佳答案

这解决了我的问题: Parallel processing with xgboost and caret

与我的 R/caret macOS 安装相反,似乎有必要为 centOS 安装上的每个 xgboost 进程指定线程数 (nthread = 1):

caret.cv = train(yol ~ .,
             data = kmer.train,
             method = 'xgbTree',
             tuneGrid = tune.grid,
             trControl = train.control,
             nthread = 1)

虽然不这样做仍然会导致 macOS 上有 1 个线程/进程,但 xgboost 将(据我所知)多线程并尝试占用每个进程的所有线程。

关于r - macOS 和 CentOS 上的并行 Caret 与 doSNOW 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45172371/

相关文章:

删除除函数之外的所有变量

r - data.table 中类似转置的过程

machine-learning - ML 的功能够不够?

python - 赛通 0.2 : prange slowing down code unexpectedly

java - 如何在java中并行执行具有不同输入的方法的多个实例?

r - R 中的 NA 清理后 data.frame 中的类没有改变

machine-learning - TensorFlow错误: "logits and labels must be same size", WarmSpringWinds "tutorial"

python - 如何以正确的方式缩放和预测单个样本

multithreading - 如何使用Rayon进行PI的并行计算

r - 具有分位数和其他功能的 dplyr summarise_all