Releases: pyro-ppl/numpyro
Releases · pyro-ppl/numpyro
0.2.1
Breaking changes
- Code reorganization -
numpyro.mcmc
is moved tonumpyro.infer.mcmc
but all major classes are exposed in thenumpyro.infer
module. rng
argument to many classes and theseed
handler has been more accurately renamed torng_key
.- Deprecated functions that formed the old interface like
mcmc
andsvi
have been removed.
New Features
- Improved turning condition for NUTS that results in much higher effective sample size for many models.
- A numpyro.plate context manager, which records conditional independence information in the trace and does automatic broadcasting, like in Pyro.
- Inclusion of AutoMultivariateNormal, AutoLaplaceApproximation to the autoguide module.
- More distributions like LowRankMultivariateNormal, LKJ, BetaBinomial, GammaPoisson, ZeroInflatedPoisson, and OrderedLogistic.
- More transforms: MultivariateAffineTransform, InvCholeskyTransform, OrderedTransform.
- A
numpyro.compat
module that supports the pyro generic API for modeling and inference that can dispatch to multiple Pyro backends. - Inclusion of Independent distribution and
Distribution.to_event
method to convert independent batch dimensions to dependent event dimensions. See the Pyro tutorial on tensor shapes for more details. - A Predictive utility for generating samples from prior models, predictions from models using SVI's guide, or posterior samples from MCMC.
- A log_likelihood utility function that can compute the log likelihood for observed data by conditioning latent sites to values from the posterior distribution.
- New ClippedAdam optimizer to prevent exploding gradients.
- New RenyiELBO loss for Renyi divergence variational inference and importance weighted variational inference.
Enhancements and Bug Fixes
- MCMC does not throw an error on models with no latent sites.
- numpyro.seed handler can be used as a context manager like:
with numpyro.seed(rng_seed=1): ...
- Utilities to enable validation checks for distributions, set host device count, and platform.
- More efficient sampling from Binomial / Multinomial distributions.
- The evidence lower bound loss for SVI is now a class called
ELBO
. - Add
energy
field to HMCState, which is used to compute Bayesian Fraction of Missing Information for diagnostics. - Add
init_strategy
arg to HMC/NUTS classes, which allows users select various initialization strategies.
0.2.0
Highlights
- Interface Changes to MCMC and SVI: The interface for inference algorithms have been simplified, and is much closer to Pyro. See MCMC and SVI.
- Multi-chain Sampling for MCMC: There are three options provided:
parallel
(default),sequential
, andvectorized
. Currently,parallel
method is the fastest among the three.
Breaking changes
- The primitives
param
,sample
are moved to primitives module. All primities are exposed innumpyro
namespace.
New Features
MCMC
- In MCMC, we have the option to collect fields other than just the samples such as number of steps or step size, using
collect_fields
arg in MCMC.run. This can be useful when gathering diagnostic information during debugging. diverging
field is added to HMCState. This field is useful to detect divergent transitions.- Support improper prior through
param
primitives. e.g.
def model(data):
loc = numpyro.param('loc', 0.)
scale = numpyro.param('scale', 0.5, constraint=constraints.positive)
return numpyro.sample('obs', dist.Normal(loc, scale), obs=data)
Primitives / Effect Handlers
- module primitive to support JAX style neural network. See VAE example.
- condition handler for conditioning sample sites to observed data.
- scale handler for rescaling the log probability score.
Optimizers
JAX optimizers are wrapped in the numpyro.optim module, so that the optimizers can be passed in directly to SVI
.
Distributions
- New distributions: Delta, GaussianRandomWalk, InverseGamma, LKJCholesky (with both
cvine
andonion
methods for sampling), MultivariateNormal. - New transforms: CorrCholeskyTransform (which is vectorized), InverseAutoregressiveTransform, LowerCholeskyTransform, PermuteTransform, PowerTransform.
Utilities
- predictive utility for vectorized predictions from the posterior predictive distribution.
Autoguides
An experimental autoguide module, with more autoguides to come.
New Examples
- Sparse Linear Regression - fast Bayesian discovery of pairwise interactions in high dimensional data.
- Gaussian Process - sample from the posterior over the hyperparameters of a gaussian process.
- HMC on Neal's Funnel - automatic reparameterization through transform distributions.
Enhancements and Bug Fixes
- Improve compiling time in MCMC.
- Better PRNG splitting mechanism in SVI (to avoid reusing PRNG keys).
- Correctly handle models with dynamically changing distribution constraints. e.g.
def model():
x = numpyro.sample('x', dist.Uniform(0., 2.))
y = numpyro.sample('y', dist.Uniform(0., x)) # y's support is not static.
- Fixes
step_size
gettingNaN
in MCMC when it becomes extremely small.
First Public Release
Refer to the README for details.