Augur: a Modeling Language for Data-Parallel Probabilistic Inference
This addresses the need for practical and efficient probabilistic programming for researchers and practitioners, though it is incremental as it builds on existing probabilistic programming concepts with a focus on data-parallel architectures.
The authors tackled the problem of time-consuming and error-prone manual implementation of inference procedures for probabilistic models by introducing Augur, a probabilistic programming language and compiler for Bayesian networks that automatically generates data-parallel inference code for GPUs, achieving scalability to thousands of GPU cores.
It is time-consuming and error-prone to implement inference procedures for each new probabilistic model. Probabilistic programming addresses this problem by allowing a user to specify the model and having a compiler automatically generate an inference procedure for it. For this approach to be practical, it is important to generate inference code that has reasonable performance. In this paper, we present a probabilistic programming language and compiler for Bayesian networks designed to make effective use of data-parallel architectures such as GPUs. Our language is fully integrated within the Scala programming language and benefits from tools such as IDE support, type-checking, and code completion. We show that the compiler can generate data-parallel inference code scalable to thousands of GPU cores by making use of the conditional independence relationships in the Bayesian network.