小编Wil*_*ill的帖子

如何高效并行brms::brm?

问题总结

我正在将brms::brm_multiple()模型拟合到大型数据集,其中使用该包估算了缺失的数据mice。数据集的大小使得并行处理的使用非常可取。但是,我不清楚如何最好地使用计算资源,因为我不清楚如何brms在核心之间划分估算数据集的采样。

如何选择以下选项以最大限度地有效利用计算资源?

  • 插补数 ( m)
  • 链数 ( chains)
  • 核心数 ( cores)

概念示例

假设我天真地(或者为了举例而故意愚蠢地)选择m = 5, chains = 10, cores = 24。因此,需要在 HPC 上保留的 24 个核心之间分配 5 x 10 = 50 个链。如果没有并行处理,这将需要约 50 个时间单位(不包括编译时间)。

我可以想象 的三种并行化策略brms_multiple(),但可能还有其他策略:

场景 1:并行估算数据集,串行关联链

这里,5 个插补中的每一个都分配给它自己的处理器,该处理器串行运行 10 个链。处理时间为 10 个单位(与非并行处理相比,速度提高了 5 倍),但糟糕的规划浪费了 19 个核心 x 10 个时间单位 = 190 个核心时间单位(ctu;= 80% 的预留计算资源)。有效的解决方案是设置cores= m

场景 2:串行估算数据集,并行关联链

在这里,采样首先获取第一个估算数据集,并在 …

parallel-processing r rstan

5
推荐指数
0
解决办法
2080
查看次数

标签 统计

parallel-processing ×1

r ×1

rstan ×1