仅当在mlr中使用parallelMap时发生静默崩溃
我正在运行一个mlr基准测试,大约有12名学员。当我不使用parallelMap时,我的代码运行没有任何问题,但只要我添加并行化,它就会无声地崩溃,总是在同一点上,即使只有2个内核 我认为它一定是内存不足了,所以我重新构造了我的代码,以便尽可能少地使用内存仅当在mlr中使用parallelMap时发生静默崩溃,r,fork,mlr,mclapply,R,Fork,Mlr,Mclapply,我正在运行一个mlr基准测试,大约有12名学员。当我不使用parallelMap时,我的代码运行没有任何问题,但只要我添加并行化,它就会无声地崩溃,总是在同一点上,即使只有2个内核 我认为它一定是内存不足了,所以我重新构造了我的代码,以便尽可能少地使用内存 设定种子,然后一次只对一名学员进行基准测试 在嵌套函数中放置基准调用,以便释放从基准返回的对象使用的内存 然而,这并没有帮助。它总是在调整随机林变量重要性过滤器时崩溃,但在此之前它成功地对随机林进行了基准测试。以下是相关的代码片段: para
parallelStart(mode="multicore", cpus=2, level="mlr.resample", show.info = TRUE, logging=TRUE, storagedir='/home/annette/Experiments/Logs_new')
set.seed(24601, "L'Ecuyer")
cox.filt.rsfrc.lrn = makeTuneWrapper(
makeFilterWrapper(
makeLearner(cl=base_learner, id = "cox.filt.rfsrc", predict.type="response"),
fw.method="randomForestSRC_importance",
cache=TRUE
),
resampling = inner,
par.set = makeParamSet(makeNumericParam("fw.perc", lower=0.01, upper=0.5)),
control = makeTuneControlRandom(maxit=20),
show.info = TRUE)
bmr = benchmark(cox.filt.rsfrc.lrn, surv.task, outer, surv.measures, show.info = TRUE, models=TRUE, keep.extract=FALSE)
日志中没有什么不寻常的地方。在此返回之前对gc()的最后一次调用:
Garbage collection 55 = 23+3+29 (level 2) ...
110.3 Mbytes of cons cells used (61%)
27.2 Mbytes of vectors used (14%)
如果我只运行RF varimp滤波器并进行并行化,它就会成功。我已尝试将以下内容添加到.Renviron,但没有帮助:
R_NSIZE = 100M
R_VSIZE = 50M
有谁能建议我如何解决这个问题,或者至少我如何能找到更多关于哪里出了问题的信息
编辑:
多亏了下面@pat-s的评论,我意识到R进程并没有崩溃,而是处于闲置状态。因此,我将它们全部删除,并将一条错误消息写入输出文件-每次都是相同的:
Mapping in parallel: mode = multicore; level = mlr.resample; cpus = 12; elements = 4.
Error in extractSubList(iter.results, "measures.train", simplify = "rows") :
Assertion on 'xs' failed: Must be of type 'list', not 'NULL'.
Calls: apply ... extractSubList -> assertList -> makeAssertion -> mstop
Execution halted
你在日志里看到什么了吗?你说的“撞车”到底是什么意思?你说这只发生在你开始第二次射频学习后,即第一次就可以了?我认为这应该成为Github上parallelMap的一个问题。不,日志中没有错误消息。当我说“崩溃”时,我的意思是Rscript程序停止,没有消息-没有完成或退出,什么都没有。我只与1名学员或全部12名学员一起运行过。当我用所有12个来运行它时,它会在#8上崩溃。我将在Github上发布一个问题。听起来类似吗?我怀疑parallelMap有问题。我肯定xgboost和parallelMap有问题,以至于我不得不停止使用它。看,我的评论在最后是正确的。事实上,是的,这听起来确实像是我的问题。我只是做了ps-A,发现有几十个R进程仍然存在,但CPU时间为0。我一直在用top,所以没有看到它们,以为它们已经死了。你在日志中看到什么了吗?你说的“撞车”到底是什么意思?你说这只发生在你开始第二次射频学习后,即第一次就可以了?我认为这应该成为Github上parallelMap的一个问题。不,日志中没有错误消息。当我说“崩溃”时,我的意思是Rscript程序停止,没有消息-没有完成或退出,什么都没有。我只与1名学员或全部12名学员一起运行过。当我用所有12个来运行它时,它会在#8上崩溃。我将在Github上发布一个问题。听起来类似吗?我怀疑parallelMap有问题。我肯定xgboost和parallelMap有问题,以至于我不得不停止使用它。看,我的评论在最后是正确的。事实上,是的,这听起来确实像是我的问题。我只是做了ps-A,发现有几十个R进程仍然存在,但CPU时间为0。我一直在用top,所以没有看到它们,以为它们已经死了。