PyMC novice here. I have a fairly simple (I think) model with 4 RVs, two predictor variables, about 200 observations:
with pm.Model() as mod:
alpha = pm.Exponential("alpha_0", 1.0)
beta = pm.Lognormal("beta", 1.0, 1.0)
nba = pm.Lognormal("nba", 1.0, 1.0)
e_dn = dn
inf_exp = beta * pm.math.exp(-alpha * dn) * roll
inf_obs = pm.NegativeBinomial("inf_obs", mu=inf_exp, alpha=nba, observed=cases)
(This is the basic version of a more complex model I would like to run, so if there are potential scaling issues for a larger model I would like to know too!)
When I try to run sample
with:
with mod:
trace = pm.sample(100000, tune=50000, cores=ncores)
- If
ncores
= 1, it runs okay - If 1 <
ncores
<= 8, it takes increasingly long to initialise, and sometimes eventually runs - If 8 <
ncores
, it basically never finishes initialising and I have to restart the Jupyter kernel
I’m running on a research computing cluster which is a Windows 10 Enterprise virtual machine with 48 cores. I need to run many (~200) separate iterations of this model, or ideally a more complex version of it, so would like to take full advantage of available computing resources to run it as fast as possible.
Based on these other answers it seems there’s no straightforward way on Windows 10 to parallelise running sample
even with lots of cores? Any suggestions or solutions welcome