The Turing language for probabilistic machine learning and Bayesian statistics



Build Status Build Status Coverage Status Documentation

Turing.jl is a Julia library for (universal) probabilistic programming. Turing allows the user to write models in standard Julia syntax, and provide a wide range of sampling-based inference methods for solving problems across probabilistic machine learning, Bayesian statistics and data science etc. Since Turing is implemented in pure Julia code, its compiler and inference methods are amendable for hacking: new model families and inference methods can be easily added.

Current features include:

  • Universal probabilistic programming with an intuitive modelling interface
  • Hamiltonian Monte Carlo (HMC) sampling for differentiable posterior distributions
  • Particle MCMC sampling for complex posterior distributions involving discrete variables and stochastic control flows
  • Gibbs sampling that combines particle MCMC, HMC and many other MCMC algorithms

Getting Started

Turing's home page, with links to everything you'll need to use Turing is:


What's changed recently?

See releases.

Want to contribute?

Turing was originally created and is now managed by Hong Ge. Current and past Turing team members include Hong Ge, Adam Scibior, Matej Balog, Zoubin Ghahramani, Kai Xu, Emma Smith, Emile Mathieu, Martin Trapp. You can see the full list of on Github: https://github.com/TuringLang/Turing.jl/graphs/contributors.

Turing is an open source project so if you feel you have some relevant skills and are interested in contributing then please do get in touch. See the Contributing page for details on the process. You can contribute by opening issues on Github or implementing things yourself and making a pull request. We would also appreciate example models written using Turing.


Join our channel (#turing) in the Julia Slack chat for help, discussion, or general communication with the Turing team. If you do not already have an invitation to Julia's Slack, you can get one by going here.

Related packages

  • Probabilistic programming via source rewriting - Soss.jl
  • A general-purpose probabilistic programming system with programmable inference - Gen.jl
  • Bare-bones implementation of robust dynamic Hamiltonian Monte Carlo methods - DynamicHMC.jl
  • Comparing performance and results of mcmc options using Julia - MCMCBenchmarks.jl
  • Omega.jl for probabilistic programming and causal inference.

Citing Turing.jl

If you use Turing for your own research, please consider citing the following publication: Hong Ge, Kai Xu, and Zoubin Ghahramani: Turing: a language for flexible probabilistic inference. AISTATS 2018 pdf bibtex

First Commit


Last Touched

2 days ago


2271 commits


Used By: