Pyro vs Pymc? What are the difference between these Probabilistic Programming frameworks?

Just want to update previous answers for 2020 since they're now two years old, and this page is the first result on Google.

Pyro is built on PyTorch. It has full MCMC, HMC and NUTS support. It has excellent documentation.

PyMC3 is built on Theano which is a completely dead framework. PyMC4 has been discontinued, as per ZAR's comment to this response (Edited for 2021).

The third option is Tensorflow Probability, which has in large part basically subsumed PyMC, complete with the ease-of-use and excellent documentation we've all come to expect from Tensorflow. (Yes that is a joke).

They're all pretty much the same thing, so try them all, try whatever the guy next to you uses, or just flip a coin. The best library is the one you actually use to make working code. As for which one is more popular, probabilistic programming itself is very specialized so you're not going to find a lot of support with anything.


From here

Pyro is a deep probabilistic programming language that focuses on variational inference, supports composable inference algorithms. Pyro aims to be more dynamic (by using PyTorch) and universal (allowing recursion).

Pyro embraces deep neural nets and currently focuses on variational inference. Pyro doesn't do Markov chain Monte Carlo (unlike PyMC and Edward) yet.

Pyro is built on pytorch whereas PyMC3 on theano. So you get PyTorch’s dynamic programming and it was recently announced that Theano will not be maintained after an year. However, I found that PyMC has excellent documentation and wonderful resources. Another alternative is Edward built on top of Tensorflow which is more mature and feature rich than pyro atm. Authors of Edward claim it's faster than PyMC3.
I guess the decision boils down to the features, documentation and programming style you are looking for.