I’ve recently tested the option to run more than 1 chain and I am getting
TypeError: can't pickle weakref objects in
ForkingPickler(file, protocol).dump(obj), when trying to pickle the
multiprocessing.context.Process class. I am only getting this error if I pass to the MCMC kernel the
potential_fn. Has this been tested?
As a minimal working example, I have used the
fully_pooled model in
examples/baseball.py. The difference is that I convert the model to a potential function first.
init_params, potential_fn, transforms, model_trace = pyro.infer.mcmc.util.initialize_model(fully_pooled, model_args=(at_bats, hits)) nuts_kernel = NUTS(None, potential_fn=potential_fn, transforms=transforms) nuts_kernel.initial_params = init_params posterior_fully_pooled = MCMC(nuts_kernel, num_samples=200, warmup_steps=100, num_chains=2).run()
It works fine if
num_chains=1 or if I use
fully_pooled directly in