SWIFT: Compiled Inference for Probabilistic Programs

Lei Li, Yi Wu and Stuart J. Russell

EECS Department
University of California, Berkeley
Technical Report No. UCB/EECS-2015-12
March 27, 2015

http://www2.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-12.pdf

One long-term goal for research on probabilistic programming languages (PPLs) is efficient inference using a single, generic inference engine. Many current inference engines are, however, interpreters for the given PP, leading to substantial overhead and poor performance. This paper describes a PPL compiler, SWIFT, that generates model-specific and inference-algorithm-specific target code from a given PP in the BLOG language, in much the same way that a Prolog compiler generates code that performs backward-chaining logical inference for a specific Prolog program. This approach eliminates a great deal of interpretation overhead. We evaluate the performance of SWIFT and existing systems such as BLOG, BUGS, Church, Stan, and infer.net on several benchmark problems. In our experiments, SWIFT's compiled code runs 100x faster than the original BLOG engine, and much faster than other systems on the same models.


BibTeX citation:

@techreport{Li:EECS-2015-12,
    Author = {Li, Lei and Wu, Yi and Russell, Stuart J.},
    Title = {SWIFT: Compiled Inference for Probabilistic Programs},
    Institution = {EECS Department, University of California, Berkeley},
    Year = {2015},
    Month = {Mar},
    URL = {http://www2.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-12.html},
    Number = {UCB/EECS-2015-12},
    Abstract = {One long-term goal for research on probabilistic programming languages (PPLs)
is efficient inference using a single, generic inference engine.
Many current inference engines are, however, interpreters
for the given PP, leading to substantial overhead and poor performance.
This paper describes a PPL compiler, SWIFT, that generates model-specific and inference-algorithm-specific target code from a given PP
in the BLOG language,
in much the same way that a Prolog compiler generates code that performs backward-chaining logical inference
for a specific Prolog program. This approach eliminates a great deal of interpretation overhead.
We evaluate the performance of SWIFT and existing systems such as BLOG, BUGS, Church, Stan, and infer.net on several benchmark problems.
In our experiments, SWIFT's compiled code runs 100x faster than the original BLOG engine, and much faster than other systems on the same models.}
}

EndNote citation:

%0 Report
%A Li, Lei
%A Wu, Yi
%A Russell, Stuart J.
%T SWIFT: Compiled Inference for Probabilistic Programs
%I EECS Department, University of California, Berkeley
%D 2015
%8 March 27
%@ UCB/EECS-2015-12
%U http://www2.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-12.html
%F Li:EECS-2015-12