如何在集群上使用doRedis和插入符号?

如何在集群上使用doRedis和插入符号?,r,parallel-processing,xgboost,r-caret,r-doredis,R,Parallel Processing,Xgboost,R Caret,R Doredis,我一直在玩R中的包,尝试在集群上运行一些代码。我有一台Windows机器和一台运行Ubuntu的机器(安装redis的地方) 我可以很高兴地运行doRedis文档中的示例,但我的目标是能够将doRedis与一些机器学习应用程序结合使用。据我所知,caret允许并行化,似乎其他人也能做到这一点,但就我的一生而言,我无法找出我的错误所在 我发现并稍微修改了它,如下所示: library(caret) library(doRedis) dat = iris registerDoRedis(&quo

我一直在玩R中的包,尝试在集群上运行一些代码。我有一台Windows机器和一台运行Ubuntu的机器(安装redis的地方)

我可以很高兴地运行doRedis文档中的示例,但我的目标是能够将doRedis与一些机器学习应用程序结合使用。据我所知,caret允许并行化,似乎其他人也能做到这一点,但就我的一生而言,我无法找出我的错误所在

我发现并稍微修改了它,如下所示:

library(caret)
library(doRedis)

dat = iris

registerDoRedis("jobs",
                host = "xyz")

xgb.grid = expand.grid(nrounds = c(10, 200),
                       max_depth = c(6),
                       eta = c(0.05),
                       gamma = c(0.01),
                       colsample_bytree = 1,
                       min_child_weight = 1,
                       subsample = 1)

ctrl = trainControl(method = 'cv',
                    number = 10,
                    verboseIter = F,
                    allowParallel = T)

set.seed(13)
xgb1 <- train(Species ~ .,
              data = dat,
              method = "xgbTree",
              trControl = ctrl,
              verbose = F,
              tuneGrid = xgb.grid)

removeQueue("jobs")
库(插入符号)
图书馆(doRedis)
dat=虹膜
registerDoRedis(“作业”,
host=“xyz”)
xgb.grid=expand.grid(nrounds=c(10200),
最大深度=c(6),
eta=c(0.05),
伽马=c(0.01),
colsample_bytree=1,
最小儿童重量=1,
子样本=1)
ctrl=列车控制(方法='cv',
数字=10,
verbositer=F,
allowParallel=T)
种子(13)
xgb1请退房

相关报价:

train
rfe
sbf
bag
avNNet
在 它们各自的控制文件称为
allowParallel
,默认为 对。如果为TRUE,则如果并行 后端(如doMC)已注册


帮助您调试的一个建议是,首先尝试在本地使用redis,如果可以的话,请指定其他服务器。

谢谢您的建议。我已将
allowParallel
设置为TRUE,但没有成功。我想我不明白为什么在本地使用redis会有任何帮助——这不就是在我的CPU内核上并行运行redis吗?是的,它会,但你会看到问题是否出在主机分辨率上。如果它在本地工作,您知道问题不在于代码,而在于设置。我认为设置没有任何问题。我可以使用
foreach
运行上述问题的解决方法,效果很好,我更喜欢使用
caret
的内置并行化。Yupp明白你的意思。从医生的角度看,你似乎做的每件事都是正确的。请也退房。在那里,allowParallel被传递给
train
方法。