Swift: Compiled Inference for Probabilistic Programming Languages
This addresses performance bottlenecks for users of probabilistic programming languages, enabling faster inference in complex models, though it is incremental as it builds on existing PPL compilation techniques.
The paper tackles the runtime interpretation overhead in probabilistic programming language (PPL) inference engines, especially for contingent and open-universe models, by introducing Swift, a compiler for the BLOG PPL that generates optimized code, resulting in speedups from 12x to 326x in experiments.
A probabilistic program defines a probability measure over its semantic structures. One common goal of probabilistic programming languages (PPLs) is to compute posterior probabilities for arbitrary models and queries, given observed evidence, using a generic inference engine. Most PPL inference engines---even the compiled ones---incur significant runtime interpretation overhead, especially for contingent and open-universe models. This paper describes Swift, a compiler for the BLOG PPL. Swift-generated code incorporates optimizations that eliminate interpretation overhead, maintain dynamic dependencies efficiently, and handle memory management for possible worlds of varying sizes. Experiments comparing Swift with other PPL engines on a variety of inference problems demonstrate speedups ranging from 12x to 326x.