C3: Lightweight Incrementalized MCMC for Probabilistic Programs using Continuations and Callsite Caching

09/07/2015
by   Daniel Ritchie, et al.
0

Lightweight, source-to-source transformation approaches to implementing MCMC for probabilistic programming languages are popular for their simplicity, support of existing deterministic code, and ability to execute on existing fast runtimes. However, they are also slow, requiring a complete re-execution of the program on every Metropolis Hastings proposal. We present a new extension to the lightweight approach, C3, which enables efficient, incrementalized re-execution of MH proposals. C3 is based on two core ideas: transforming probabilistic programs into continuation passing style (CPS), and caching the results of function calls. We show that on several common models, C3 reduces proposal runtime by 20-100x, in some cases reducing runtime complexity from linear in model size to constant. We also demonstrate nearly an order of magnitude speedup on a complex inverse procedural modeling application.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
01/11/2018

Using probabilistic programs as proposals

Monte Carlo inference has asymptotic guarantees, but can be slow when us...
research
01/27/2023

Automatic Alignment in Higher-Order Probabilistic Programming Languages

Probabilistic Programming Languages (PPLs) allow users to encode statist...
research
07/20/2020

Automating Involutive MCMC using Probabilistic and Differentiable Programming

Involutive MCMC is a unifying mathematical construction for MCMC kernels...
research
08/23/2019

Modular Runtime Complexity Analysis of Probabilistic While Programs

We are concerned with the average case runtime complexity analysis of a ...
research
03/07/2018

Resource Polymorphism

We present a resource-management model for ML-style programming language...
research
05/17/2018

Efficient compilation of array probabilistic programs

Probabilistic programming languages are valuable because they allow us t...
research
03/07/2022

Static Prediction of Runtime Errors by Learning to Execute Programs with External Resource Descriptions

The execution behavior of a program often depends on external resources,...

Please sign up or login with your details

Forgot password? Click here to reset