I’m looking to try out SVI my model. I come from the land of MCMC where we abide by “just use NUTS”, but there seem to be so many choices for SVI. I’ve looked around the forum for advice, but I still have some simple questions:
- I’d like to use an AutoGuide (probably MVN or a normalizing flow). I’ve written custom guides in the past and I had to add my own constraints e.g.
constraints.positivefor sd parameters. Do AutoGuides automatically add the constraints by looking at the model priors or does the user have to specify these somehow?
- For the NUTS version of my model, I used
LocScaleReparamto use a non-centred parametrisation for random effects. Is this necessary/beneficial for SVI?
- Is there a go-to (like “just use NUTS”) SVI strategy (everybody’s favourite ELBO + everybody’s favourite autoguide + everybody’s favourite learning rate) that just works or is it a case of trying many things out for a particular model?
- I have access to 2 GPUs. I assume it’s almost always beneficial to run SVI on GPU. Do I just use `numpyro.set_platform(“gpu”)? Will this efficiently make use of both GPUs?