【问题标题】:Parallel Caret with doSNOW clusters on macOS and CentOSmacOS 和 CentOS 上带有 doSNOW 集群的并行插入符号
【发布时间】:2017-12-23 15:38:20
【问题描述】:

我正在学习本教程 Introduction to Machine Learning with R and caret (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

【问题讨论】:

  • 是的,在 4 个集群上运行时,我得到 4 个进程,每个进程的 CPU 使用率约为 600%。所有 24 个线程的总使用率为 100%
  • 对不起,你已经对此发表了评论......我很难过

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


【解决方案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 将(据我了解)多线程并尝试占用每个进程的所有线程。

【讨论】:

猜你喜欢
  • 2023-03-28
  • 2013-05-13
  • 2018-02-17
  • 2016-11-30
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
相关资源
最近更新 更多