是否可以通过将工作负载分配到多个 cpu 核上来加速贝叶斯结构时间序列模型 (BSTS) 的训练?

Is it it possible to accelerate the training of the Bayesian structural time series model (BSTS) by splitting the workload on multiple cpu cores?

我正在尝试按照问题标题中的描述加快 BSTS 模型的训练。这可能吗?如果是,将如何实施? mcmc 迭代是独立的,对吗?

MCMC 中的 Markov Chain 部分根据定义是顺序 chain 其中当前样本决定了后续样本提案的概率分布。因此,虽然生成的样本是渐近独立的,但在实现中却不是。在经典方法(例如 Metropolis-Hastings)中,这是检查自相关是一项基本诊断的原因之一,并且可以使用细化来获得去相关样本。现代方法不太容易出现这种情况,因此从业者通常不需要变薄,例如 HMC 样本,但检查自相关仍然是一个很好的做法。

尽管有此限制,但 MCMC 采样策略的某些组件可以并行化,例如 运行 多个并行链 - 大多数采样器,例如 PyMC3 和 Stan 都具有此 built-in。此外,对于需要计算梯度信息的技术(例如,HMC/NUTS),线性代数可以并行化。自 v2.18 (documentation) 以来,Stan 将这种并行化添加到他们的数学库中,但目前被认为是实验性的,直到 Stan v3.