A fast, modular Bayesian inference library for JAX, providing composable samplers for CPU and GPU.
BlackJAX is a Bayesian inference library built for JAX that provides fast, modular samplers for statistical computing. It solves the problem of needing efficient, customizable sampling algorithms that can run on both CPU and GPU, decoupling samplers from probabilistic programming languages to offer greater flexibility.
Researchers, data scientists, and developers building probabilistic programming languages or those who have a log-probability density function and need a high-performance, customizable sampler.
Developers choose BlackJAX for its composable design, allowing both quick out-of-the-box sampling and deep customization of algorithms, combined with the performance benefits of JAX's hardware acceleration.
BlackJAX is a Bayesian Inference library designed for ease of use, speed and modularity.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages JAX's XLA compilation for seamless GPU/TPU support, enabling significantly faster sampling on modern hardware, as highlighted in the quickstart example with NUTS.
Provides building blocks like integrators and proposals that can be combined to create custom algorithms, facilitating flexible research and development, as explained in the philosophy section.
Includes well-tested, performant samplers such as NUTS for immediate use, with examples in the documentation showing easy integration into inference loops.
Accelerates experimentation by exposing low-level internals and integrates seamlessly with probabilistic programming languages that supply compatible log-density functions, as stated in the key features.
Requires users to have or create their own log-probability density function externally, making it unsuitable for those needing a full modeling framework without additional tools.
Installation and configuration for GPU/TPU support involve non-trivial steps with JAX, such as following specific hardware acceleration instructions, which can be a barrier for new users.
Assumes familiarity with JAX and functional programming concepts, which may be challenging for beginners or developers accustomed to imperative libraries like PyMC3.