Deep universal probabilistic programming with Python and PyTorch
Clone or download
Failed to load latest commit information.
.github Create (#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 Create (#546) Nov 14, 2017 Update tutorials for #752 (#755) Feb 11, 2018 copyright, docs fixes (#807) Feb 23, 2018
Makefile Minor fixes to the VAE tutorial (#1283) Aug 3, 2018 Add Codecov to Travis (#1288) Aug 6, 2018
setup.cfg Refactor einsum sharing to be eager, composable (#1316) Aug 18, 2018 Make trace a subclass of networkx.DiGraph again (#1191) Sep 15, 2018

Build Status 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 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
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/

Alternatively, build PyTorch following instructions in the PyTorch README.

git clone --recursive
cd pytorch
git checkout 200fb22  # <---- a well-tested commit

On Linux:

python install


MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python install

Finally install Pyro

git clone
cd pyro
pip install .

Running Pyro from a Docker Container

Refer to the instructions here.