Turing.jl is a Julia
probabilistic programming
package for Bayesian inference and likelihood-based estimation.
Current capabilities include:
- Model specification
with the
@modelmacro - Hamiltonian Monte Carlo for differentiable target distributions
- Particle MCMC for posteriors involving discrete variables and stochastic control flow
- Gibbs sampling that combines particle MCMC, HMC, random-walk Metropolis–Hastings, elliptical slice sampling, and other transition kernels
- Variational inference with ADVI and normalising flows
- Maximum likelihood and maximum a posteriori estimation through Optimization.jl, using L-BFGS by default
Turing is maintained as grant-funded research software. Development prioritises correctness, reproducibility, and stability within the documented scope.
Reports of incorrect results or unexpected failures should include a minimal reproducible example where practical. Maintenance and review capacity is necessarily limited.
Turing.jl is distributed under the MIT License. Its source code, tests, and documentation are public, allowing methods and implementations to be inspected and reused. Reproducible analyses should archive the analysis code and Julia project environment, and record data provenance, random seeds, and relevant computational settings.
See the guidance for helping out with small fixes, new feature proposals, and reviewing. Questions about a scoped task may be raised on its issue, in the Turing channel on Julia Slack, or on Julia Discourse.
If you use Turing.jl in published work, please cite:
Turing.jl: A General-Purpose Probabilistic Programming Language
Tor Erlend Fjelde, Kai Xu, David Widmann, Mohamed Tarek, Cameron Pfiffer, Martin Trapp, Seth D. Axen, Xianda Sun, Markus Hauru, Penelope Yong, Will Tebbutt, Zoubin Ghahramani, Hong Ge
ACM Transactions on Probabilistic Machine Learning, 1(3):1–48, 2025.
Turing: A Language for Flexible Probabilistic Inference
Hong Ge, Kai Xu, Zoubin Ghahramani
Proceedings of the Twenty-First International Conference on Artificial Intelligence and Statistics, PMLR 84:1682–1690, 2018.
Expand for BibTeX
@article{10.1145/3711897,
author = {Fjelde, Tor Erlend and Xu, Kai and Widmann, David and Tarek, Mohamed and Pfiffer, Cameron and Trapp, Martin and Axen, Seth D. and Sun, Xianda and Hauru, Markus and Yong, Penelope and Tebbutt, Will and Ghahramani, Zoubin and Ge, Hong},
title = {{Turing.jl}: A General-Purpose Probabilistic Programming Language},
journal = {ACM Trans. Probab. Mach. Learn.},
year = {2025},
volume = {1},
number = {3},
pages = {1--48},
month = aug,
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
doi = {10.1145/3711897},
url = {https://doi.org/10.1145/3711897},
}
@inproceedings{pmlr-v84-ge18b,
author = {Ge, Hong and Xu, Kai and Ghahramani, Zoubin},
title = {{Turing}: A Language for Flexible Probabilistic Inference},
booktitle = {Proceedings of the Twenty-First International Conference on Artificial Intelligence and Statistics},
editor = {Storkey, Amos and Perez-Cruz, Fernando},
series = {Proceedings of Machine Learning Research},
volume = {84},
pages = {1682--1690},
year = {2018},
month = {09--11 Apr},
publisher = {PMLR},
pdf = {https://proceedings.mlr.press/v84/ge18b/ge18b.pdf},
url = {https://proceedings.mlr.press/v84/ge18b.html},
}