Skip to content

Timeline

Michael Osthege edited this page Mar 27, 2021 · 15 revisions

2021-03-27 PyMC Timeline

What a year! What started out as a very diffuse outlook has converged to an exciting future for PyMC3: Our backend changed from Theano through Theano-PyMC into Aesara, a next-generation graph computation engine.

This means that the library you know as PyMC3 will prevail after all, albeit with some breaking changes coming up.

First of all, the 3 in PyMC3 no longer has anything to do with the package version. Better think of it as "PyMC for Python 3" compared to the predecessor "PyMC2".

Depending on the release version, PyMC3 depends on different graph computation backends:

  • pymc3 <3.10 depends on Theano
  • pymc3 >=3.10,<4 depends on Theano-PyMC
  • pymc3 >=4 will depend on Aesara

Branches:

  • master has already switched to Aesara. The next release from this branch will be pymc3==4.0.0.
  • v3 is for backporting critical bugfixes. The next release from this branch will be pymc3==3.11.2.
  • v4 is our development branch for pymc3==4.0.0. It will eventually merge into master.

Why are we excited about PyMC3 v4?

We are currently switching the internals of RandomVariable Op was recently merged into Theano-PyMC. We are currently switching the inner workings of PyMC3 from its pm.Distribution class to the new RandomVariable Op that was introduced by Theano-PyMC 1.0.13. This dramatically simplifies prior/posterior predictive sampling, solves most if not all shape problems and allows us to delete huge chunks of internal code.

Even though the internals of PyMC3 4.x will be quite different to PyMC3 3.x, we can keep the user-facing API largely identical. Custom distributions will have to be refactored, but most models will work just fine! The same is true for commonly used functions for sampling and prior/posterior predictive.

Contributing

Check out milestones on PyMC3 and Aesara.

  • Everything in a vNext milestone has topmost priority.
  • Issues outside of milestones are considered "backlog". They don't block a release, but fixing them is still an important contribution.
  • On the v4 branch you can help by picking disabled/xfailed tests and work on making them pass.

⚠️⚠️⚠️ To reduce rebasing effort on the v4 branch, we are currently not accepting PRs into the master branch. Instead please open PRs into v4. ⚠️⚠️⚠️