Probabilistic Programming 2023, some libraries that I recently used:
- PyMC: well-designed API with concise documentation. It’s faster and more customizable than before because the predecessor (the Theno backend) was replaced by the Aesara backend (compiling to C and Jax).
- BlackJax: for hacking log-density lovers. There’re some new algorithms like Stochastic gradient Langevin dynamics. BlackJax is not a complete probabilistic programming language. It integrates well with the PPLs backend by Jax.
- Stan: a domain-specific language for statistical modeling and one of the fastest samplers. Its main focus is on modeling. (just me; sometimes integrating it with the production environment gives me a headache I/O)
- Tensorflow Probability: It’s the first choice if you work with normalizing flow models, bayesian neural networks. It’s very flexible to build a complex model with a modular approach. For me, it’s hard to debug.
- NumPyro: concentrate on Jax. The APIs are easy to learn. It’s still under development.
There are some candidates that I’m not listing out here: Pyro & Oryx.
- For working in production, friendly with Python: PyMC
- To concentrate on modeling: Stan
- For Stochastic gradient MCMC: BlackJax
- For best performance (and give a headache): TensorFlow Probability :‘D