我正在与大约12个学习者一起运行mlr基准测试。当我不使用parallelMap时,我的代码可以毫无问题地运行,但是一旦添加并行化,即使只有2个内核,它也总是在同一点无声地崩溃。
我认为它一定要用完内存,所以我重新构造了代码以使用尽可能少的内存,
但是,这没有帮助。在调整随机森林变量重要性过滤器的过程中,它总是崩溃,但是在此之前它成功地对随机森林进行了基准测试。以下是相关的代码段:
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