Turing.jl is a general-purpose probabilistic programming language implemented in Julia, allowing models to be specified through an intuitive @model syntax. It provides a broad range of Monte Carlo sampling and optimisation-based inference methods.
Current capabilities include:
- Intuitive model specification via the
@modelmacro - Hamiltonian Monte Carlo for differentiable target distributions
- Particle MCMC for posteriors involving discrete variables and stochastic control flow
- Gibbs sampling, combining particle MCMC, HMC, Random-Walk Metropolis–Hastings, elliptical slice sampling, and others
- Variational inference via ADVI and normalising flows
- Maximum-likelihood and maximum a posteriori estimation via L-BFGS optimisation
Important
Turing.jl is maintained primarily by academic researchers at grant-funded institutions, with correspondingly limited capacity for triage and review.
If you would like to contribute, we ask that proposals for new features be submitted first, so that the TuringLang team can indicate whether they are a good fit before implementation begins; bug fixes and small changes are very welcome as pull requests directly. Reviewer privileges are reserved for those with a sustained record of substantive contributions, or for individuals explicitly invited by a team member.
Organisations relying on Turing.jl in commercial or industrial settings are warmly encouraged to support its development, whether through code contributions, financial support, or both.
If you have used Turing.jl in your work, we would be very grateful if you could cite the following:
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, 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},
year = {2025},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3711897},
doi = {10.1145/3711897},
note = {Just Accepted},
journal = {ACM Trans. Probab. Mach. Learn.},
month = feb,
}
@InProceedings{pmlr-v84-ge18b,
title = {Turing: A Language for Flexible Probabilistic Inference},
author = {Ge, Hong and Xu, Kai and Ghahramani, Zoubin},
booktitle = {Proceedings of the Twenty-First International Conference on Artificial Intelligence and Statistics},
pages = {1682--1690},
year = {2018},
editor = {Storkey, Amos and Perez-Cruz, Fernando},
volume = {84},
series = {Proceedings of Machine Learning Research},
month = {09--11 Apr},
publisher = {PMLR},
pdf = {http://proceedings.mlr.press/v84/ge18b/ge18b.pdf},
url = {https://proceedings.mlr.press/v84/ge18b.html},
}