modppl

Crates.iomodppl
lib.rsmodppl
version0.3.0
sourcesrc
created_at2024-07-25 18:49:38.486836
updated_at2024-07-25 18:49:38.486836
descriptiona experimental library for probabilistic programming in Rust.
homepage
repositoryhttps://github.com/agarret7/modppl
max_upload_size
id1315345
size133,368
Austin J. Garrett (agarret7)

documentation

README

modppl

github crates.io docs.rs status

⚠ ️This is evolving software. The API may change.

What is modppl?

modppl is probabilistic programming written natively in Rust. Modularity is conferred through a trait interface that separates modeling and inference, called GenFn.

Inference

  • Importance Sampling and Resampling

  • Proposal-based and Regenerative Metropolis-Hastings

  • Particle Filtering

Dynamic Modeling

  • Dynamically-typed DynGenFn and effects-based DynGenFnHandler

  • dyngen! modeling language (sample with %=, trace with /=)

  • Dynamic Unfold Kernel

  • Check out some examples

Gallery

Generate visualizations to visualizations with:

python -m venv venv && source venv/bin/activate && pip install matplotlib
cargo test --release && python visualization/visualizer.py

Inspiration

modppl was inspired by the Generative Function Interface (GFI) as described in the Gen.jl whitepaper.

Gen: A General-Purpose Probabilistic Programming System with Programmable Inference. Cusumano-Towner, M. F.; Saad, F. A.; Lew, A.; and Mansinghka, V. K. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ‘19). (pdf) (bibtex).

modppl does not exactly implement the GFI. More precisely, it does not support retdiff or choice gradients.

Commit count: 0

cargo fmt