Open amifalk opened 10 months ago
Very cool! Thanks for sharing.
@amifalk Do you have some idea of the speedup ?
It depends on how many chains you run, whether or not you have a gpu, the amount of native python code in your model, etc., but it can often be a few orders of magnitude faster.
@amifalk Is the functionality of emcee to calculate and store additional data for each step supported? In emcee you can return a tuple in the potential_fn
, and the rest is handled mostly automatically. I found the get_extra_fields
function in numpyro, but I am not sure how to generate these extra fields.
get_extra_fields
currently only allows you to extract internal metadata generated by the sampler at each step. If want to access some intermediate value of your likelihood function, you can recompute it after the run.
By the way, the Pyro forum is a great place to ask these kinds of questions.
Greetings!
I've ported a subset of emcee functionality to the NumPyro project under the sampler name AIES.
(For the uninitiated, NumPyro uses JAX, a library with an interface to numpy and additional features like JIT compiling and GPU support, in the backend. The upshot is that if you're using currently using emcee, switching to NumPyro may give you a dramatic inference speedup!)
I've tried my best to match the existing API. You can use either the NumPyro model specification language
or provide your own potential function.
Hope this is helpful to some folks!