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 research 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 aligned with the project's direction before implementation begins. Bug fixes and small changes are very welcome as direct pull requests. Reviewer privileges are reserved for those with a sustained record of substantive contributions, or for individuals explicitly invited by a team member. Accounts involved in spam or abuse will be blocked and reported; moderation is otherwise undertaken at our discretion, as capacity permits.
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},
}