Skip to main content

Bayesian Inference with JAX

Project description

Bayinx: Bayesian Inference with JAX

The endgoal of this project is to build a Bayesian inference library that is similar in feel to Stan(where you can define a probabilistic model with syntax that is similar to how you would write it out on a chalkboard) but allows for arbitrary models(e.g., ones with discrete parameters) and offers a suite of "machinery" to fit the model; this means I want to expand upon Stan's existing toolbox of methods for estimation(point optimization, variational methods, MCMC) while keeping everything performant(hence using JAX).

In the short-term, I'm going to focus on:

  1. Implementing as much machinery as I feel is enough.
  2. Figuring out how to design the Model superclass to have something like the transformed pars {} block but unifies transformations and constraints.
  3. Figuring out how to design the library to automatically recognize what kind of machinery is amenable to a given probabilistic model.

In the long-term, I'm going to focus on:

  1. How to get Stan-like declarative syntax in Python with minimal syntactic overhead(to get as close as possible to statements like X ~ Normal(mu, 1)), while also allowing users to work with target directly when needed(same as Stan does).
  2. How to make working with the posterior as easy as possible.
    • That's a vague goal but practically it means how to easily evaluate statements like $P(\theta \in [-1, 1] | \mathcal{D}, \mathcal{M})$, or set up contrasts and evaluate $P(\mu_1 - \mu_2 > 0 | \mathcal{D}, \mathcal{M})$, or simulate the posterior predictive to generate plots, etc.

Although this is somewhat separate from the goals of the project, if this does pan out how I'm invisioning it I'd like an R formula-like syntax to shorten model construction in scenarios where the model is just a GLMM or similar(think brms).

Additionally, when I get around to it I'd like the package documentation to also include theoretical and implementation details for all machinery implemented(with overthinking boxes because I do like that design from McElreath's book).

TODO

  • Find some way to discern between models with all floating-point parameters and weirder models with integer parameters. Useful for restricting variational methods like MeanField to Models that only have floating-point parameters.
  • Look into adaptively tuning ADAM hyperparameters.
  • Control variates for meanfield VI? Look at https://proceedings.mlr.press/v33/ranganath14.html more closely.
  • Low-rank affine flow?
  • https://arxiv.org/pdf/1803.05649 implement sylvester flows.
  • Learn how to generate documentation lol.
  • Figure out how to make transform_pars for flows such that there is no performance loss. Noticing some weird behaviour when adding constraints.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bayinx-0.3.18.tar.gz (40.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bayinx-0.3.18-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file bayinx-0.3.18.tar.gz.

File metadata

  • Download URL: bayinx-0.3.18.tar.gz
  • Upload date:
  • Size: 40.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.6.16

File hashes

Hashes for bayinx-0.3.18.tar.gz
Algorithm Hash digest
SHA256 b71eaa0830b17c69d45c359053e3427d2c876617f2456f527c4a7505ee73c91b
MD5 1b5e7c2fa98bc7616aa84962c5fd9e0c
BLAKE2b-256 356473b861ec08a32eb19b6810d49b87d14ec11a0e5099570f0fb09db6e8ac14

See more details on using hashes here.

File details

Details for the file bayinx-0.3.18-py3-none-any.whl.

File metadata

  • Download URL: bayinx-0.3.18-py3-none-any.whl
  • Upload date:
  • Size: 25.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.6.16

File hashes

Hashes for bayinx-0.3.18-py3-none-any.whl
Algorithm Hash digest
SHA256 b246a7cf0e3c080c4f8b404a10b9e03b09c8232c89c1e21f7c8ac1638a4f19a1
MD5 5c7a0e1630ae103a7dcd32764cb0d0d5
BLAKE2b-256 e6579b4e5d8842dbdbb7df09498940745e902a12a53c5df425ec055e32e2a1b9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page