DynamicPPL: Stan-like Speed for Dynamic Probabilistic Models

Mohamed Tarek, Kai Xu, Martin Trapp, Hong Ge, Zoubin Ghahramani
2/7/2020
cs.LGcs.PLstat.ML

Official code: TuringLang/DynamicPPL.jl (289 stars, MIT, last commit 2026-10-21).

Abstract

We present the preliminary high-level design and features of DynamicPPL.jl, a modular library providing a lightning-fast infrastructure for probabilistic programming. Besides a computational performance that is often close to or better than Stan, DynamicPPL provides an intuitive DSL that allows the rapid development of complex dynamic probabilistic programs. Being entirely written in Julia, a high-level dynamic programming language for numerical computing, DynamicPPL inherits a rich set of features available through the Julia ecosystem. Since DynamicPPL is a modular, stand-alone library, any probabilistic programming system written in Julia, such as Turing.jl, can use DynamicPPL to specify models and trace their model parameters. The main features of DynamicPPL are: 1) a meta-programming based DSL for specifying dynamic models using an intuitive tilde-based notation; 2) a tracing data-structure for tracking RVs in dynamic probabilistic models; 3) a rich contextual dispatch system allowing tailored behaviour during model execution; and 4) a user-friendly syntax for probabilistic queries. Finally, we show in a variety of experiments that DynamicPPL, in combination with Turing.jl, achieves computational performance that is often close to or better than Stan.

View on arXivView PDF

Code Implementations(1)

MIT

Implementation of domain-specific language (DSL) for dynamic probabilistic programming

28941JuliaAug 21, 2019yesterdayMIT
probabilistic-programmingprobability-theory

Similar Papers

Cite this paper

@article{tarek2020dynamicppl,
  title  = {DynamicPPL: Stan-like Speed for Dynamic Probabilistic Models},
  author = {Mohamed Tarek and Kai Xu and Martin Trapp and Hong Ge and Zoubin Ghahramani},
  year   = {2020},
  eprint = {2002.02702},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/2002.02702}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2002.02702.svg)](https://codeofpaper.com/paper/2002.02702)

Discussion