PASSAGE: Hierarchical Bayesian Modeling
In this DOE-funded project, Galois implemented an EDSL (embedded domain specific language) for Bayesian modeling, capable of being extended quickly and efficiently by domain users. The EDSL, named PASSAGE (PArallel SAmpler GEnerator), also provides an infrastructure for researchers to be able to take the generated artifacts and turn them into executables in alternative platforms, as needed.
The host language for PASSAGE is Haskell, which enables domain experts to take full advantage of the modern functional programming language concepts, along with the entire development infrastructure that comes with Haskell. The user specifies a hierarchical Bayesian model and data using the PASSAGE EDSL, and PASSAGE generates code to sample the posterior distribution in parallel.
While existing tool-chains for hierarchical Bayesian modeling such as JAGS or HBC provide means of high-level Bayesian model creation, they fall short of satisfying the needs of researchers who are interested in extensibility and alternative code-generation options. For the extensibility front, we wanted users to be able to add features for constructing new models without being forced to modify the underlying code base. For the alternative code-generation front, we wanted users to have access to the internal-representation of the model to be able to explore execution on alternative platforms, such as highly parallel architectures, GPUs, or FPGAs.