Deep universal probabilistic programming with Python and PyTorch
Clone or download
Permalink
Failed to load latest commit information.
.github Create issue_template.md (#1096) Apr 25, 2018
docker small miscellaneous doc/tutoria/etc edits (#1101) Apr 25, 2018
docs Refactor towards packed tensor representations (#1405) Sep 24, 2018
examples Remove tensor constructors that use existing tensors (#1398) Sep 21, 2018
profiler Sort imports via isort (#1074) Apr 24, 2018
pyro Use contract_to_tensor in HMC for discrete site enumeration (#1403) Sep 25, 2018
scripts Increase perf regression threshold for CI and use process time (#1048) Apr 19, 2018
tests Use contract_to_tensor in HMC for discrete site enumeration (#1403) Sep 25, 2018
tutorial Specify the geometric distribution in tutorial (#1402) Sep 22, 2018
.codecov.yml disable codecov comments (#1366) Sep 6, 2018
.coveragerc add coverage config file (#1297) Aug 8, 2018
.gitattributes add .gitattributes so that can be correctly labelled as python projec… Jun 8, 2018
.gitignore Minor fixes to the VAE tutorial (#1283) Aug 3, 2018
.travis.yml add coverage config file (#1297) Aug 8, 2018
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md (#546) Nov 14, 2017
CONTRIBUTING.md Update tutorials for #752 (#755) Feb 11, 2018
LICENSE.md copyright, docs fixes (#807) Feb 23, 2018
Makefile Minor fixes to the VAE tutorial (#1283) Aug 3, 2018
README.md Add Codecov to Travis (#1288) Aug 6, 2018
setup.cfg Refactor einsum sharing to be eager, composable (#1316) Aug 18, 2018
setup.py Make trace a subclass of networkx.DiGraph again (#1191) Sep 15, 2018

README.md


Build Status codecov.io Latest Version Documentation Status

Getting Started | Documentation | Community | Contributing

Pyro is a flexible, scalable deep probabilistic programming library built on PyTorch. Notably, it was designed with these principles in mind:

  • Universal: Pyro is a universal PPL -- it can represent any computable probability distribution.
  • Scalable: Pyro scales to large data sets with little overhead compared to hand-written code.
  • Minimal: Pyro is agile and maintainable. It is implemented with a small core of powerful, composable abstractions.
  • Flexible: Pyro aims for automation when you want it, control when you need it. This is accomplished through high-level abstractions to express generative and inference models, while allowing experts easy-access to customize inference.

Pyro is in an alpha release. It is developed and used by Uber AI Labs. For more information, check out our blog post.

Installing

Installing a stable Pyro release

First install PyTorch.

Install via pip:

Python 2.7.*:

pip install pyro-ppl

Python 3.5:

pip3 install pyro-ppl

Install from source:

git clone git@github.com:uber/pyro.git
cd pyro
git checkout master  # master is pinned to the latest release
pip install .

Install with extra packages:

pip install pyro-ppl[extras]  # for running examples/tutorials

Installing Pyro dev branch

For recent features you can install Pyro from source.

To install a compatible CPU version of PyTorch on OSX / Linux, you could use the PyTorch install helper script.

bash scripts/install_pytorch.sh

Alternatively, build PyTorch following instructions in the PyTorch README.

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
git checkout 200fb22  # <---- a well-tested commit

On Linux:

python setup.py install

On OSX:

MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install

Finally install Pyro

git clone https://github.com/uber/pyro
cd pyro
pip install .

Running Pyro from a Docker Container

Refer to the instructions here.