We are excited to announce the release of RxInfer 2.0, which is a Julia package for fast and scalable Bayesian inference in probabilistic models. RxInfer
unites previously released packages ReactiveMP
, GraphPPL
, and Rocket
in a single user-friendly ecosystem that aims to execute efficient Bayesian inference in real-time.GraphPPL
is a package for user-friendly model and inference constraints specification. ReactiveMP
exports a high-performant, reactive message passing-based Bayesian inference engine for the specified model. The reactive extensions package Rocket
supports running Bayesian inference on streaming data sets in real-time.
In general, RxInfer
executes inference faster than sampling-based Bayesian inference methods since it exploits local conjugate pairings in the graph representation of a probabilistic model. For instance, RxInfer
significantly outperforms Julia’s state-of-the-art inference package Turing
on a set of conjugate state-space models. Turing
, on the other hand, may be able to execute inference for a less constrained set of models. However, the ReactiveMP
inference engine has evolved significantly over the last year and is capable of running inference for many non-conjugate models as well. It is also possible to include non-linear dependencies between variables and use various built-in approximation methods, such as Statistical Linearization, Unscented transform and Conjugate-computation Variational Inference (CVI).
In short, RxInfer
provides:
-
A convenient user-friendly language for specification of model and inference constraints:
- The
@model
macro resembles closely the same macro in other popular PPL languages, likeTuring
. - The
@constraints
macro specifies constraints on the variational family of distributions that should be used during the optimization procedure. - The
@meta
macro specifies approximation methods for different parts of the probabilistic model graph
- The
-
Inference for static large datasets with millions of observations on a standard (win/mac/linux) laptop.
-
Real-time inference for streaming data sets with potentially an unlimited number of observations
-
A unified framework for different Bayesian inference algorithms, including:
- Sum-Product
- Mean-Field & Structured Variational Inference
- Expectation Maximization
- Expectation Propagation
-
Hybrid Bayesian inference algorithms across different parts of the probabilistic model’s graph
- It is possible to use, for example, the Sum-Product rule in one part of the model and VMP in another part of the model
-
RxInfer
is easily extendable with custom novel factor nodes and message update equations -
Supports automatic differentiation of the entire inference procedure for global parameters tuning
-
Bethe Free Energy (approximation to the Bayesian model evidence) evaluation
-
And much more!
Check the Getting started section to get started. The documentation has a lot of example and tutorials.
Links:
- RxInfer website: RxInfer.jl
- RxInfer GitHub: GitHub - biaslab/RxInfer.jl: Julia package for automated Bayesian inference on a factor graph with reactive message passing
- RxInfer Documentation: Home · RxInfer.jl
- ReactiveMP.jl: GitHub - biaslab/ReactiveMP.jl: High-performance reactive message-passing based Bayesian inference engine
- GraphPPL.jl: GitHub - biaslab/GraphPPL.jl: DSL for probabilistic models specification and probabilistic programming.
- Rocket.jl: GitHub - biaslab/Rocket.jl: Functional reactive programming extensions library for Julia