r语言 - 有没有办法"chunking" drake 输出来加快计划验证和显示?



我正在对一系列模型和参数值进行模拟。此时,我的drake工作流程涉及3000多个模拟data.frames和相应的stanfit对象。

尝试运行make当前会导致计划执行开始前延迟约2分钟。我认为这是因为drake正在通过其缓存来验证计划中哪些步骤需要更新。我想用某种方式让它知道,它可以将所有这些模型表示为一个单一的输出块。我可以做的是制作一个函数,将我所有的输出对象作为副作用写入,然后输出一个散列,这样drake就可以"被愚弄",知道需要检查什么,但考虑到即将到来的截止日期和所涉及的处理时间,我无法在此时重组我的代码。

同样,为了使用依赖关系图,显示3k多个对象会使其不可用。如果能够将某些对象折叠到一个"输出类型"组下,那就太好了。

好问题。我知道你在说什么,我一直在想这个问题。事实上,努力摆脱延迟是我2019年drake的两个首要任务之一。

不幸的是,drake目前还没有一个可以让您保持目标最新的解决方案。长期的解决方案可能是提高速度+https://github.com/ropensci/drake/issues/304+https://github.com/ropensci/drake/issues/233.这些都是重要的发展领域,也是巨大的事业。

对于新项目,您可以让每个目标都是一个适合的stan型号的列表。

drake_plan(
data1 <- generate_data(...),
data2 <- generate_data(...),
models_data1 <- fit_models(data1),
models_data2 <- fit_models(data2)
)
fit_models <- function(data){
list(
run_stan(data, "normal_priors"),
run_stan(data, "t_priors")
)
}

对于图形可视化,支持目标集群。看见https://ropenscilabs.github.io/drake-manual/vis.html#clusters

EDIT:并行计算和冗长

如果运行make(jobs = c(imports = 4, targets = 6))drake将使用本地机器上的4个进程来进行预处理。与默认设置相比,make(verbose = 4)显示的进度消息更多。

最新更新