gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:19:31 25 4
gpt4 key购买 nike

我正在学习本教程使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com