gpt4 book ai didi

R doParallel foreach 为独立 worker 提供错误处理

转载 作者:行者123 更新时间:2023-12-02 02:56:12 25 4
gpt4 key购买 nike

我必须运行大量随机森林模型,因此我想在我的 8 核服务器上使用 doParallel 来加快进程。

然而,某些模型需要比其他模型更长的时间,甚至可能会抛出错误。我想并行运行 8 个模型,如果一个模型抛出错误和/或被跳过,那么工作人员应该继续。每个模型结果都保存在硬盘上,以便我稍后可以访问和组合它们。

TryCatch

.errorhandling="remove" 

没有解决问题。我明白

 Error in unserialize(socklist[[n]]) : error reading from connection

代码示例:我用 %do% 尝试过,模型 2-7 运行成功。然而在 %dopar% 中我得到了显示的错误

 foreach(model=1:8, .errorhandling="remove") %dopar% {


tryCatch({
outl <- rf_perform(...)
saveRDS(outl,file=getwd() %+% "/temp/result_" %+% model %+% ".rds")

}, error = function(e) {print(e)}, finally = {})
}

最佳答案

我想我发现了问题:如果导出到集群的对象太大,R 就无法再处理它和/或出现超时

我的数据对象导出有 500 万行和 300 个变量,导出到 16 个集群。

cl <- makeCluster(16)
registerDoParallel(cl)
clusterExport(cl, "data")

#data must not be too large

我将对象缩小为更小的部分,现在它可以工作了。作者可能想在 doParallel 的文档中提及这一点,或者在对象太大时发出警告。

关于R doParallel foreach 为独立 worker 提供错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34504853/

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