Universal Probabilistic Programming Language Compilation with Parallel Efficient Sequential Monte Carlo Inference

by   Daniel Lundén, et al.

Probabilistic programming languages (PPLs) allow for natural encoding of arbitrary inference problems, and PPL implementations can provide automatic general-purpose inference for these problems. However, constructing inference implementations that are efficient enough is challenging for many real-world problems. Often, this is due to PPLs not fully exploiting available parallelization and optimization opportunities. For example, handling of probabilistic checkpoints in PPLs through the use of continuation-passing style transformations or non-preemptive multitasking – as is done in many popular PPLs – often disallows compilation to low-level languages required for high-performance platforms such as graphics processing units (GPUs). As a solution to this checkpoint problem, we introduce the concept of PPL control-flow graphs (PCFGs), providing a simple and efficient approach that can be used for handling checkpoints in such languages. We use this approach to implement RootPPL: a low-level PPL built on CUDA and C++ with OpenMP, providing highly efficient and massively parallel SMC inference. We also introduce a general method of compiling universal high-level PPLs to PCFGs, and illustrate its application when compiling Miking CorePPL – a high-level universal PPL – to RootPPL. This is the first time a universal PPL has been compiled to GPUs with SMC inference. Both RootPPL and the CorePPL compiler are evaluated through a set of real-world experiments in the domains of phylogenetics and epidemiology, demonstrating up to 6x speedups over state-of-the-art PPLs implementing SMC inference.



There are no comments yet.


page 1

page 2

page 3

page 4


Effective Extensible Programming: Unleashing Julia on GPUs

GPUs and other accelerators are popular devices for accelerating compute...

Probabilistic Programming with CuPPL

Probabilistic Programming Languages (PPLs) are a powerful tool in machin...

Efficient compilation of array probabilistic programs

Probabilistic programming languages are valuable because they allow us t...

Extending Functional Languages with High-Level Exception Handling

We extend functional languages with high-level exception handling. To be...

Parallel Inference on Structured Data with CRFs on GPUs

Structured real world data can be represented with graphs whose structur...

LF-PPL: A Low-Level First Order Probabilistic Programming Language for Non-Differentiable Models

We develop a new Low-level, First-order Probabilistic Programming Langua...

TigerGraph: A Native MPP Graph Database

We present TigerGraph, a graph database system built from the ground up ...
This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.