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
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.
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).
A convenient user-friendly language for specification of model and inference constraints:
@modelmacro resembles closely the same macro in other popular PPL languages, like
@constraintsmacro specifies constraints on the variational family of distributions that should be used during the optimization procedure.
@metamacro specifies approximation methods for different parts of the probabilistic model graph
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:
- 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
RxInferis 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.
- 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