Releases: pyro-ppl/pyro
Releases · pyro-ppl/pyro
1.9.1
New Features
Stable.log_prob()
is now implemented and differentiable by BenZickel in #3369, #3370- Introducing pyro.infer.predictive.WeighedPredictive which reports weights along with predicted samples by @BenZickel in #3345
- Resampler for weighed samples by @BenZickel in #3352
- Add function for calculating quantiles of weighed samples. by @BenZickel in #3340
- Add effective sample size analytics to WeighedPredictive results by @BenZickel in #3351
- Introducing PyroModuleList, because torch.nn.ModueList reinitializies modules when slice-indexing by @MartinBubel in #3339
Type hints
Additional changes
- small update doc HMC by @dario-coscia in #3335
- Type annotate
pyro.nn.dense_nn
andpyro.nn.auto_reg_nn
by @ordabayevy in #3342 - Enable type checking of the tests folder by @ordabayevy in #3336
- Auto regressive nn on gpu - revisited by @cafletezbrant in #3346
- GCC-8 CI error test by @ordabayevy in #3349
- Fix ruff version to 0.3.4 in order to overcome issue with version 0.3.5. by @BenZickel in #3354
- Fix ruff settings & remove flake8 and isort settings by @ordabayevy in #3356
- Unpin ruff version by @BenZickel in #3357
- Switch dependency from jupyter to notebook by @fritzo in #3360
- Add the energy score scoring rule for comparing multivariate distributions by @BenZickel in #3362
- Add jupyter lab option to docker Makefile by @eteq in #3363
- Replace torch._utils._accumulate with numpy.cumsum. by @BenZickel in #3364
- Fix PyroModule rendering error in local-parameter mode by @eb8680 in #3366
New Contributors
- @dario-coscia made their first contribution in #3335
- @MartinBubel made their first contribution in #3339
- @BenZickel made their first contribution in #3340
- @cafletezbrant made their first contribution in #3346
- @eteq made their first contribution in #3363
Full Changelog: 1.9.0...1.9.1
1.9.0
Breaking Changes
- Drop support for PyTorch 1
- Drop support for Python 3.7
New features
- Type hints are now available in some parts of Pyro, thanks to @ordabayevy. Please let us know about any issues. We welcome help adding type hints to remaining parts of Pyro. #2550
- New tutorials using Zuko normalizing flows by @francois-rozet
- A new simple RandomWalkKernel by @martinjankowiak
- A new SimplexToOrderedTransform by @peblair
- A new simple PyTorch training example by @eb8680
Detailed Changes
- Fix GammaPoisson distribution from ignoring validate_args param by @austinv11 in #3253
- Updated docs and fixed spelling by @martinrohbeck in #3254
- fix custom_guide in intro_long.ipynb by @martinjankowiak in #3258
- use generator arg in dataloader in cevae by @martinjankowiak in #3264
- SBVM sampler fix by @deoxyribose in #3261
- Render deterministic functions by @r3v1 in #3266
- Replace lap.lapjv() with scipy.optimize.linear_sum_assignment() by @fritzo in #3267
- Fix: Wrong codomain in LeakyReLUTransform by @MeenuyD in #3270
- Drop the support for PyTorch<2.0 by @ordabayevy in #3272
- Add
param_store.py
type hints by @ordabayevy in #3271 - Address the issues in #3274 by @cyianor in #3277
- Drop Python 3.7 support by @ordabayevy in #3278
- Update link to Nolan reference of Stable distribution by @fehiepsi in #3281
- Fix
pyro.poutine.handlers
by @ordabayevy in #3283 - Add handlers explicitly by @ordabayevy in #3285
- Use
functools.wraps
to preservehandler
signature by @ordabayevy in #3287 - Type annotate
pyro.poutine.runtime
by @ordabayevy in #3288 - Type annotate
pyro.poutine.messenger
by @ordabayevy in #3290 - Type annotate
pyro.primitives
&poutine.block_messenger
by @ordabayevy in #3292 - Add os to readthedocs.yml file by @fehiepsi in #3293
- Remove python.version entry in rtd.yml file by @fehiepsi in #3294
- Type annotate broadcast, condition, do, enum messengers by @ordabayevy in #3295
- Typo in the documentation example by @pavleb in #3298
- Type annotate
Trace
,TraceMessenger
, &pyro.poutine.guide
by @ordabayevy in #3299 - Small typo in tutorial by @osorensen in #3300
- Update effect_handlers.ipynb by @djinnome in #3296
- Fix
gate
&gate_logits
inZeroInflatedDistribution
by @ordabayevy in #3303 - Type annotate poutines by @ordabayevy in #3306
- Numpy Import Convention by @RatishT in #3307
- Type annotate messengers by @ordabayevy in #3308
- Add simple RandomWalkKernel by @martinjankowiak in #3311
- Type annotate messengers by @ordabayevy in #3309
- Add tutorials using normalizing flows by @francois-rozet in #3302
- Mypy
warn_unreachable=True
by @ordabayevy in #3312 - Fix mypy and line-too-long errors by @fritzo in #3313
- Get CI working with new black, torch, pytest by @fritzo in #3318
- Annotate handlers & add py.typed by @ordabayevy in #3321
- Port implementation of SimplexToOrderedTransform from numpyro by @peblair in #3320
- Prevent observation masks improperly expanding samples in plates by @austinv11 in #3317
- Document InferDict and Message typed dicts by @fritzo in #3323
- Fix bug in CVAE example by @FDUguchunhui in #3325
- Add a simple PyTorch training example by @eb8680 in #3327
- Add .github/workflows/publish.yml to publish to pypi.org by @fritzo in #3326
- Fix interaction between PyroParam and torch.func.grad by @eb8680 in #3328
- Fix action link for publishing to PyPI by @fehiepsi in #3329
- Bump version to 1.9.0 by @fritzo in #3330
New Contributors
- @austinv11 made their first contribution in #3253
- @deoxyribose made their first contribution in #3261
- @r3v1 made their first contribution in #3266
- @MeenuyD made their first contribution in #3270
- @cyianor made their first contribution in #3277
- @pavleb made their first contribution in #3298
- @osorensen made their first contribution in #3300
- @djinnome made their first contribution in #3296
- @RatishT made their first contribution in #3307
- @peblair made their first contribution in #3320
- @FDUguchunhui made their first contribution in #3325
Full Changelog: 1.8.6...1.9.0
1.8.6
Summary
- Reenable support for PyTorch 1.11 (after Pyro's 1.8.5 release had narrowly required torch>=2.0)
- Improve docstrings of Pyro's distribution wrappers around torch distributions #3246
What's Changed
- Refactor
ProvenanceTensor
to usepytree
by @ordabayevy in #3223 - Create FUNDING.yml by @fritzo in #3224
- Remove DataParallel container in SS-VAE model by @martinrohbeck in #3227
- Fix jit ELBO sign error by @fritzo in #3229
- Replace flake8+isort with ruff by @fritzo in #3231
- fix _loc_scale method in AutoMultivariateNormal by @martinjankowiak in #3233
- Revert to support
torch>=1.11.0
by @francois-rozet in #3242 - Concatenate torch docstrings at end of distribution wrappers by @fritzo in #3246
- Disable pdf builds on readthedocs by @fritzo in #3250
- Disable pdf and epub build on readthedocs by @fehiepsi in #3251
- Fix #3245 bug in poutine.trace(graph_type="dense") by @fritzo in #3247
- Bump version to to 1.8.6 by @fritzo in #3252
New Contributors
- @francois-rozet made their first contribution in #3242
- @rtviii collaborated with @fritzo in #3246
Full Changelog: 1.8.5...1.8.6
1.8.5
This release includes a number of fixes to support PyTorch 2.
What's Changed
- Update base learning rate scheduler by @eb8680 in #3167
- Update GP tutorials to unblock #3174 by @fehiepsi in #3175
- add substitute handler by @thisiscam in #3125
- Update torch_patch.py by @S163669 in #3174
- fix: typo in log-absolute-derivative of exponential transform (normalizing flow tutorial) closes #3176 by @felixschltr in #3177
- rerun newest black on entire repo by @martinjankowiak in #3178
- Preserve path to the file when rendering model by @LysSanzMoreta in #3186
- Add conditional inverse and compose TransformModules by @eb8680 in #3185
- PyTorch Lightning example by @ordabayevy in #3189
- Fix & update GMM tutorial by @ordabayevy in #3193
- Fixing typos in
infer.inspect
by @ordabayevy in #3198 - Bug fix about device of subsample in subsample_messenger.py by @hjnnjh in #3195
- Dependency tracking tutorial by @ordabayevy in #3197
- Make patch_dependency safer under dependency drift by @fritzo in #3204
- Deprecate
CorrLCholeskyTransform
in favor of upstreamCorrCholeskyTransform
by @ordabayevy in #3199 - VAE: Improved ELBO plots by @martinrohbeck in #3205
- Remove vestigial lines from pyro/init.py all by @fritzo in #3210
- fix learning rate schedulers in PyTorch 2.0 (closes #3202) by @ilia-kats in #3207
- Clear .unconstrained weakrefs before pickling; rebuild them more often by @fritzo in #3212
- Add
pl.Trainer
args to argparse by @ordabayevy in #3217 - Run CI with PyTorch 2.0 by @eb8680 in #3192
- make ProvenanceTensor behave more like a Tensor (closes #3218) by @ilia-kats in #3220
- Bump version to 1.8.5 by @fritzo in #3222
New Contributors
- @thisiscam made their first contribution in #3125
- @S163669 made their first contribution in #3174
- @felixschltr made their first contribution in #3177
- @LysSanzMoreta made their first contribution in #3186
- @hjnnjh made their first contribution in #3195
- @martinrohbeck made their first contribution in #3205
- @ilia-kats made their first contribution in #3207
Full Changelog: 1.8.4...1.8.5
1.8.4
Fixed
- Allow torch>=2 by @fritzo in #3164
- fixed NaN with in
log_prob
corr < -1e-8 forSineBivariateVonMises
by @OlaRonning in #3165 - Allow registering of custom exception handlers for potential_fn computations by @Balandat in #3168
Added
- Allow rendering of semisupervised models by @fritzo in #3159
- Add
GroupedNormalNormal
distribution by @martinjankowiak in #3163 - Add make tutorial to docs CI workflow by @eb8680 in #3012
New Contributors
Full Changelog: 1.8.3...1.8.4
1.8.3
What's Changed
- rename custom_objectives_training.ipynb -> custom_objectives.ipynb by @martinjankowiak in #3141
- Expose Gaussian algorithms by @fritzo in #3145
- fix_reverse_out_bound_quadratic_spline by @LiaoShiqi97 in #3140
- Improve sequential_gaussian_filter_sample() by @fritzo in #3146
- Add jitter to Cholesky factorization in Gaussian ops by @fritzo in #3151
- Clean up handling of global settings by @fritzo in #3152
- Add an option to stop PyroModules from sharing parameters by @eb8680 in #3149
- Ensure compatibility with torch>=1.13 torchvision>=0.14 by @fritzo in #3155
- Adds min_stepsize and max_stepsize to HMC, avoiding infinite loop by @fritzo in #3157
New Contributors
- @LiaoShiqi97 made their first contribution in #3140
Full Changelog: 1.8.2...1.8.3
1.8.2
What's Changed
- Fix nbshpinx rendering of tutorials by @fritzo in #3055
- Modified docker file to use wget instead of curl by @Jayanth-kumar5566 in #3058
- Updating Docker file to use Ubuntu 18.04 by @Jayanth-kumar5566 in #3059
- Updated CUDA and base OS version by @Jayanth-kumar5566 in #3060
- Fix
contrib.funsor.Trace_EnumELBO
model enumeration by @ordabayevy in #3063 - Fix docstrings of distributions rendered on sphinx by @fehiepsi in #3064
- Add test applying AutoNormal to two different models by @fritzo in #3065
- Fix link in AIR tutorial by @dilaragokay in #3066
- Numerically stabilize ProjectedNormal.log_prob() via erfc by @fritzo in #3071
- fix documentation class names to VariationalSparseGP by @ivetasarfyova in #3076
- fix Nystrom approximation equation indices by @ivetasarfyova in #3077
- remove extraneous svi step call in documentation by @ivetasarfyova in #3078
- Add type assertion for
model_args
andmodel_kwargs
ofrender_model
by @dilaragokay in #3083 - Remove
batch_expand
helper function in air example by @ordabayevy in #3086 - Fix a typo in air tutorial by @ordabayevy in #3087
- Fix Nyström Typo by @adiehl96 in #3084
- Use provenance tracking to compute downstream costs in
TraceGraph_ELBO
by @ordabayevy in #3081 - Use : for param domain in render_model by @fehiepsi in #3097
- store batch_shape as torch.Size object in MultivariateStudentT distribution by @flo-schu in #3099
- Fix bound partial for python 3.10 by @fehiepsi in #3101
- Fix _logmatmulexp comment by @fritzo in #3105
- Fixing typos in enumeration tutorial by @ordabayevy in #3109
- Expose docs for pyro.contrib.funsor.infer.infer_discrete by @fritzo in #3111
- Update signature of
sample
in tutorialintro_long
by @fraterenz in #3112 - Allow autocorrelation() to run without MKL by @fritzo in #3113
- Fix multinomial_goodness_of_fit printing by @fritzo in #3115
- Numerically stabilize autocorrelation() by @fritzo in #3114
- Implement NanMaskedNormal, NanMaskedMultivariateNormal by @fritzo in #3116
- Fix links in workflow tutorial by @fritzo in #3119
- Implement Resamper for interactive prior tuning by @fritzo in #3118
- fix entropy term in distributions.py (wrong isinstance check) by @martinjankowiak in #3120
- Custom loss documentation by @e-pet in #3122
- Fix model_7 in
examples/contrib/funsor/hmm.py
by @ordabayevy in #3126 - Fix memory leak in TraceEnumELBO by @fehiepsi in #3131
- Bump version to 1.8.2 by @fritzo in #3135
New Contributors
- @Jayanth-kumar5566 made their first contribution in #3058
- @dilaragokay made their first contribution in #3066
- @ivetasarfyova made their first contribution in #3076
- @adiehl96 made their first contribution in #3084
- @flo-schu made their first contribution in #3099
- @fraterenz made their first contribution in #3112
- @e-pet made their first contribution in #3122
Full Changelog: 1.8.1...1.8.2
1.8.1
Breaking changes
New features
- New tutorial on Bayesian workflow, with a SARS-CoV-2 running example in #2977
- Render parameters in
render_model()
@karm-patel in #3039 - Distributions:
- Add LogNormalNegativeBinomial distribution by @martinjankowiak in #3010
- Implement DiscreteHMM.sample() by @fritzo in #3050
- Parallelized DiscreteHMM.sample() by @ordabayevy in #3053
- Add missing docs for ProjectedNormal parameter in #3009
- Support 4D ProjectedNormal distribution in #3011
Misc changes
- fix docstring in repeated_matmul by @martinjankowiak in #2999
- use more conservative learning rate in bart.py by @martinjankowiak in #3002
- Clarified comments in
minipyro.py
to fix #3003 by @luiarthur in #3004 - Update black formatting by @fritzo in #3020
- Closes #3016 by @nipunbatra in #3017
- Fix timeseries tutorial link by @fritzo in #3021
- Some documentation improvements to MLE_MAP and SVI_P by @nipunbatra in #3022
- Improvements to GP tutorial by @nipunbatra in #3027
- change sample to param statements in guides by @dhudsmith in #3042
- Added type assertion for better code clarity by @GautamV234 in #3036
- add GitHub URL for PyPi by @andriyor in #3038
New Contributors
- @luiarthur made their first contribution in #3004
- @nipunbatra made their first contribution in #3017
- @dhudsmith made their first contribution in #3042
- @GautamV234 made their first contribution in #3036
- @karm-patel made their first contribution in #3039
- @andriyor made their first contribution in #3038
Full Changelog: 1.8.0...1.8.1
1.8.0 release
New features and improvements
- New Tutorials
- Introduction to Pyro, a completely new intro tutorial #2991
- Logistic growth models of SARS-CoV-2, #2982
- SCANVI for single cell transcriptomics, #2975
- Model rendering #2962
- Added pyro.render_model() to visualize model structure #2962 (based on @ordabayevy's
ProvenanceTensor
andnumpyr.render_model()
) - Autoguides
- Improve parametrization of AutoMultivariateNormal #2972, #2963
- Added a new class of effect-based guides including AutoNormalMessenger, AutohierarchicalNormalMessenger, and AutoRegressiveMessenger #2953, #2955 (thanks to @vitkl)
- Added an AutoGaussian, similar to
AutoMultivariateNormal
, but with sparse precision matrix factorization based on dependency structure in the model.
- Added sampling functions to the MuE missing data discrete HMM #2898
- Added a PositivePowerTransform for positive-valued variables #2904
1.7.0 release
New features
- Update to PyTorch 1.9 #2887
- A StreamingMCMC class for high-dimensional Bayesian inference using NUTS or HMC, thanks to @mtsokol #2857 .
StreamingMCMC
is a drop-in replacement forMCMC
that avoids storing samples during inference by streamingly computing statistics such as mean, variance, and r_hat. You can define your own statistics using the pyro.ops.streaming module by either composing existing statistics or defining your own subclass of StreamingStats #2856 . - Make
poutine.reparam
compatible with initialization logic in autoguides and MCMC #2876 . Previously you needed to manually transform the value in init_to_value() when using a reparametrizer. In Pyro 1.7 you can specify a singleinit_to_value()
output that should work regardless of whether your model is transformed by a reparametrizer. Note this involves a major refactoring of the Reparam interface, namely replacing .call() with .apply(). If you have defined custom reparametrizers using.__call__()
you should refactor them before the next Pyro release. - Add an AutoStructured guide with flexible distributions, sparse flexible dependencies among latent variables, and support for reparametrization #2812 . This autoguide is somewhere between AutoNormal and AutoIAFNormal+NeuTraReparam. Like
AutoNormal
this guide is interpretable and structured. LikeNeuTraReparam
this guide is flexible and can be used to improve geometry for subsequent inference via HMC or NUTS. - New directional distributions thanks to @OlaRonning
- New distributions over genetic and amino acid sequences, thanks to @EWeinstein #2728
(see https://www.biorxiv.org/content/10.1101/2020.07.31.231381v2) - New distributions with exponential tails
- Add AutoGuideList.quantiles() thanks to @vitkl #2896
- Allow saving a subset of variables in MCMC via the
save_params
option, which can save memory #2793 - Add a sample option to
pyro.contrib.funsor.infer_discrete
#2789
New tutorials
- A predictive and deterministic tutorial thanks to @mtsokol #2852
- ProfileHMM with MuE by @EWeinstein #2728
- Factor MuE and Probabilistic PCA by @EWeinstein #2728
- Add @ordabayevy's trick to the enumeration tutorial #2892
- Enhance the LDA tutorial #2790
Bug fixes
- Fix
poutine.do
to avoid duplicate entries incond_indep_stack
#2846 - Fix
infer.csis
to ignore unused gradients, thanks to @fshipy #2828 - Catch NAN values in TraceENUM_ELBO grads #2782
Breaking changes
- Simplify param names in callable optim configs #2814
- Switch to softplus transform when using autoguide scales, thanks to experiments performed by @vitkl #2823
Ceanup
- Start using
mypy
for type checking, thanks to @kamathhrishi #2853 #2858 - Start using
black
code formatter #2891