有人能给出一些关于如何并行化PyMC MCMC
代码的一般说明吗。我试图按照给定的示例LASSO
运行here回归。我在某个地方读到,默认情况下并行采样是完成的,但是我还需要使用Parallel Python
之类的东西来让它工作吗?在
这里有一些参考代码,我想能够在我的机器上并行化。在
x1 = norm.rvs(0, 1, size=n)
x2 = -x1 + norm.rvs(0, 10**-3, size=n)
x3 = norm.rvs(0, 1, size=n)
X = np.column_stack([x1, x2, x3])
y = 10 * x1 + 10 * x2 + 0.1 * x3
beta1_lasso = pymc.Laplace('beta1', mu=0, tau=1.0 / b)
beta2_lasso = pymc.Laplace('beta2', mu=0, tau=1.0 / b)
beta3_lasso = pymc.Laplace('beta3', mu=0, tau=1.0 / b)
@pymc.deterministic
def y_hat_lasso(beta1=beta1_lasso, beta2=beta2_lasso, beta3=beta3_lasso, x1=x1, x2=x2, x3=x3):
return beta1 * x1 + beta2 * x2 + beta3 * x3
Y_lasso = pymc.Normal('Y', mu=y_hat_lasso, tau=1.0, value=y, observed=True)
lasso_model = pymc.Model([Y_lasso, beta1_lasso, beta2_lasso, beta3_lasso])
lasso_MCMC = pymc.MCMC(lasso_model)
lasso_MCMC.sample(20000,5000,2)
看起来您使用的是PyMC2,据我所知,您必须使用一些Python方法来进行并行计算,比如IPython.parallel。有很多方法可以做到这一点,但我知道的所有方法都有点复杂。这是an example of one, which uses PyMC2, IPCluster, and Wakari。在
在PyMC3中,并行采样是在
psample
方法中实现的,但是需要将参考代码更新为PyMC3格式:PYMC3已将示例合并到示例。在
要并行运行,请设置参数
njobs > 1
。在的用法pymc.样品功能是:
sample(draws, step, start=None, trace=None, chain=0, njobs=1, tune=None, progressbar=True, model=None, random_seed=None)
注意,如果您设置njobs=None
,它将默认为CPU数量-2。在我希望这有帮助。在
相关问题 更多 >
编程相关推荐