# Pyro 1.0 release notes The objective of this release is to stabilize Pyro's interface and thereby make it safer to build high level components on top of Pyro. ## Stability statement - Behavior of documented APIs will remain stable across minor releases, except for bug fixes and features marked EXPERIMENTAL or DEPRECATED. - Serialization formats will remain stable across patch releases, but may change across minor releases (e.g. if you save a model in 1.0.0, it will be safe to load it in 1.0.1, but not in 1.1.0). - Undocumented APIs, features marked EXPERIMENTAL or DEPRECATED, and anything in`pyro.contrib` may change at any time (though we aim for stability). - All deprecated features throw a `FutureWarning` and specify possible work-arounds. Features marked as deprecated will not be maintained, and are likely to be removed in a future release. - If you want more stability for a particular feature, [contribute](https://github.com/pyro-ppl/pyro/blob/dev/CONTRIBUTING.md) a unit test. ## New features - [pyro.infer.Predictive](http://docs.pyro.ai/en/dev/inference_algos.html#pyro.infer.predictive.Predictive) is a new utility for serving models, supporting jit tracing and serialization. - [pyro.distributions.transforms](http://docs.pyro.ai/en/stable/distributions.html#transforms) has many new transforms, and includes helper functions to easily create a variety of normalizing flows. The transforms library has also been reorganized. - [pyro.contrib.timeseries](http://docs.pyro.ai/en/dev/contrib.timeseries.html) is an experimental new module with fast Gaussian Process inference for univariate and multivariate time series and state space models. - [pyro.nn.PyroModule](http://docs.pyro.ai/en/dev/nn.html#module-pyro.nn.module) is an experimental new interface that adds Pyro effects to an `nn.Module`. `PyroModule` is already used internally by `AutoGuide`, `EasyGuide` `pyro.contrib.gp`, `pyro.contrib.timeseries`, and elsewhere. - [FoldedDistribution]() is a new distribution factory, essentially equivalent to `TransformedDistribution(-, AbsTransform())` but providing a `.log_prob()` method. - A new tutorial illustrates the usage of [pyro.contrib.oed](http://docs.pyro.ai/en/stable/contrib.oed.html) in the context of adaptive election polling. ## Breaking changes - Autoguides have slightly changed interfaces: - `AutoGuide` and `EasyGuide` are now `nn.Module`s and can be serialized separately from the param store. This enables serving via [torch.jit.trace_module](https://pytorch.org/docs/stable/jit.html#torch.jit.trace_module). - The `Auto*Normal` family of autoguides now have `init_scale` arguments, and `init_loc_fn` has better support. Autoguides no longer support initialization by writing directly to the param store. - Many transforms have been renamed to enforce a consistent interface, such as the renaming of `InverseAutoregressiveFlow` to `AffineAutoregressive`. - `pyro.generic` has been moved to a separate project [pyroapi](https://github.com/pyro-ppl/pyro-api). - [poutine.do](http://docs.pyro.ai/en/dev/poutine.html#pyro.poutine.do) has slightly changed semantics to follow Single World Intervention Graph semantics. - `pyro.contrib.glmm` has been moved to `pyro.contrib.oed.glmm` and will eventually be replaced by [BRMP](https://github.com/pyro-ppl/brmp). - Existing `DeprecationWarning`s have been promoted to `FutureWarning`s. ## Deprecated features - `pyro.random_module`: The `pyro.random_module` primitive has been deprecated in favor of [PyroModule](http://docs.pyro.ai/en/dev/nn.html#pyro.nn.module.PyroModule) which can be used to create Bayesian modules from `torch.nn.Module` instances. - `SVI.run`: The `SVI.run` method is deprecated and users are encouraged to use the [.step](http://docs.pyro.ai/en/dev/inference_algos.html#pyro.infer.svi.SVI.step) method directly to run inference. For drawing samples from the posterior distribution, we recommend using the [Predictive](http://docs.pyro.ai/en/dev/inference_algos.html#module-pyro.infer.predictive.Predictive) utility class, or directly by using the `trace` and `replay` effect handlers. - `TracePredictive`: The `TracePredictive` class is deprecated in favor of [Predictive](http://docs.pyro.ai/en/dev/inference_algos.html#module-pyro.infer.predictive.Predictive), that can be used to gather samples from the posterior and predictive distributions in SVI and MCMC. - `mcmc.predictive`: This utility function has been absorbed into the more general [Predictive](http://docs.pyro.ai/en/dev/inference_algos.html#module-pyro.infer.predictive.Predictive) class.