Home

Awesome

<div align="left"> <a href="https://pyprob.readthedocs.io/en/latest/"> <img height="80px" src="docs/source/_static/img/pyprob-logo-large.png"></a> </div>

Build Status codecov PyPI version Documentation Status

PyProb is a probabilistic programming system for simulators and high-performance computing (HPC), based on PyTorch. The main focus of PyProb is on coupling existing simulation code bases with probabilistic inference with minimal intervention.

PyProb is currently a research prototype, with more documentation and examples on the way. Watch this space!

Support for multiple languages

We support front ends in multiple languages through the PPX interface that allows execution of models and inference engines in separate programming languages, processes, and machines connected over a network.

Inference engines

PyProb currently provides the following inference engines:

Inference compilation is an amortized inference technique for performing fast repeated inference using deep neural networks to parameterize proposal distributions for importance sampling. We are planning to add other inference engines, e.g., variational inference.

Installation

Prerequisites:

Install from source

To use a cutting-edge version, clone this repository and install the PyProb package using:

git clone https://github.com/pyprob/pyprob.git
cd pyprob
pip install .

Install the latest package

To use the latest version available in Python Package Index, run:

pip install pyprob

Docker

You can build a Docker image locally as follows:

git clone https://github.com/pyprob/pyprob.git
cd pyprob
docker build -t pyprob .

An image with the latest passing commit is automatically pushed to pyprob/pyprob:latest at https://hub.docker.com/r/pyprob/pyprob/. You can pull this as follows:

docker pull pyprob/pyprob

Documentation and examples

Documentation coming soon.

https://pyprob.readthedocs.io/

Information and citing

If you would like to learn more about or cite the techniques PyProb uses, please see the following papers:

@inproceedings{baydin-2019-etalumis,
  title = {Etalumis: Bringing Probabilistic Programming to Scientific Simulators at Scale},
  author = {Baydin, Atılım Güneş and Shao, Lei and Bhimji, Wahid and Heinrich, Lukas and Meadows, Lawrence F. and Liu, Jialin and Munk, Andreas and Naderiparizi, Saeid and Gram-Hansen, Bradley and Louppe, Gilles and Ma, Mingfei and Zhao, Xiaohui and Torr, Philip and Lee, Victor and Cranmer, Kyle and Prabhat and Wood, Frank},
  booktitle = {Proceedings of the International Conference for High Performance Computing, Networking, Storage, and Analysis (SC19), November 17--22, 2019},
  year = {2019}
}
@inproceedings{baydin-2019-quest-for-physics,
  title = {Efficient Probabilistic Inference in the Quest for Physics Beyond the Standard Model},
  author = {Baydin, Atılım Güneş and Heinrich, Lukas and Bhimji, Wahid and Shao, Lei and Naderiparizi, Saeid and Munk, Andreas and Liu, Jialin and Gram-Hansen, Bradley and Louppe, Gilles and Meadows, Lawrence and Torr, Philip and Lee, Victor and Prabhat and Cranmer, Kyle and Wood, Frank},
  booktitle = {Advances in Neural Information Processing Systems 33 (NeurIPS)},
  year = {2019}
}
@inproceedings{le-2016-inference,
  author = {Le, Tuan Anh and Baydin, Atılım Güneş and Wood, Frank},
  booktitle = {Proceedings of the 20th International Conference on Artificial Intelligence and Statistics (AISTATS)},
  title = {Inference Compilation and Universal Probabilistic Programming},
  year = {2017},
  volume = {54},
  pages = {1338--1348},
  series = {Proceedings of Machine Learning Research},
  address = {Fort Lauderdale, FL, USA},
  publisher = {PMLR}
}

License

PyProb is distributed under the BSD License.

Authors

PyProb has been developed by the team

For the full list of contributors, see: https://github.com/pyprob/pyprob/graphs/contributors