All Projects → luiarthur → TuringBnpBenchmarks

luiarthur / TuringBnpBenchmarks

Licence: MIT License
Benchmarks of Bayesian Nonparametric models in Turing and other PPLs

Programming Languages

Jupyter Notebook
11667 projects

Projects that are alternatives of or similar to TuringBnpBenchmarks

DP means
Dirichlet Process K-means
Stars: ✭ 36 (+50%)
Mutual labels:  bayesian-inference, bayesian-nonparametric-models
EmbracingUncertainty
Material for AMLD 2020 workshop "Bayesian Inference: embracing uncertainty"
Stars: ✭ 23 (-4.17%)
Mutual labels:  julia-language, bayesian-inference
KissABC.jl
Pure julia implementation of Multiple Affine Invariant Sampling for efficient Approximate Bayesian Computation
Stars: ✭ 28 (+16.67%)
Mutual labels:  julia-language, bayesian-inference
TemporalGPs.jl
Fast inference for Gaussian processes in problems involving time. Partly built on results from https://proceedings.mlr.press/v161/tebbutt21a.html
Stars: ✭ 89 (+270.83%)
Mutual labels:  julia-language, bayesian-inference
DynamicHMCExamples.jl
Examples for Bayesian inference using DynamicHMC.jl and related packages.
Stars: ✭ 33 (+37.5%)
Mutual labels:  julia-language, bayesian-inference
cosmopower
Machine Learning - accelerated Bayesian inference
Stars: ✭ 25 (+4.17%)
Mutual labels:  bayesian-inference
CFD-Julia-12-steps--o-Navier-Stokes-Equations
This is a replication of "CFD Python: 12 steps to Navier-Stokes" in Julia
Stars: ✭ 33 (+37.5%)
Mutual labels:  julia-language
Cards.jl
A package for representing hands of cards (quite compactly)
Stars: ✭ 41 (+70.83%)
Mutual labels:  julia-language
noisy-K-FAC
Natural Gradient, Variational Inference
Stars: ✭ 29 (+20.83%)
Mutual labels:  bayesian-inference
Nabla.jl
A operator overloading, tape-based, reverse-mode AD
Stars: ✭ 54 (+125%)
Mutual labels:  julia-language
LocalCoverage.jl
Trivial functions for working with coverage for packages locally.
Stars: ✭ 55 (+129.17%)
Mutual labels:  julia-language
ITO
Intelligence Task Ontology (ITO)
Stars: ✭ 37 (+54.17%)
Mutual labels:  benchmarks
ProbQA
Probabilistic question-asking system: the program asks, the users answer. The minimal goal of the program is to identify what the user needs (a target), even if the user is not aware of the existence of such a thing/product/service.
Stars: ✭ 43 (+79.17%)
Mutual labels:  bayesian-inference
noisy-networks-measurements
Noisy network measurement with stan
Stars: ✭ 42 (+75%)
Mutual labels:  bayesian-inference
RTX-2080Ti-Vs-GTX-1080Ti-CIFAR-100-Benchmarks
No description or website provided.
Stars: ✭ 16 (-33.33%)
Mutual labels:  benchmarks
ReinforcementLearningZoo.jl
juliareinforcementlearning.org/
Stars: ✭ 46 (+91.67%)
Mutual labels:  julia-language
genstar
Generation of Synthetic Populations Library
Stars: ✭ 17 (-29.17%)
Mutual labels:  bayesian-inference
ARCHModels.jl
A Julia package for estimating ARMA-GARCH models.
Stars: ✭ 63 (+162.5%)
Mutual labels:  julia-language
julia-NotepadPlusPlus
Julia language support for Notepad++
Stars: ✭ 34 (+41.67%)
Mutual labels:  julia-language
PkgPage.jl
Create a beautiful landing page for your package in less than 10 minutes.
Stars: ✭ 98 (+308.33%)
Mutual labels:  julia-language

TuringBnpBenchmarks

Benchmarks of Bayesian Nonparametric models in Turing and other PPLs.

This work is funded by GSoC 2020.

My mentors for this project are Hong Ge, Martin Trapp, and Cameron Pfiffer.

Abstract

Probabilistic models, which more naturally quantify uncertainty when compared to their deterministic counterparts, are often difficult and tedious to implement. Probabilistic programming languages (PPLs) have greatly increased productivity of probabilistic modelers, allowing practitioners to focus on modeling, as opposed to the implementing algorithms for probabilistic (e.g. Bayesian) inference. Turing is a PPL developed entirely in Julia and is both expressive and fast due partly to Julia’s just-in-time (JIT) compiler being implemented in LLVM. Consequently, Turing has a more manageable code base and has the potential to be more extensible when compared to more established PPLs like STAN. One thing that may lead to the adoption of Turing is more benchmarks and feature comparisons of Turing to other mainstream PPLs. The aim of this project is to provide a more systematic approach to comparing execution times and features among several PPLs, including STAN, Pyro, nimble, and Tensorflow probability for a variety of Bayesian nonparametric (BNP) models, which are a class of models that provide a much modeling flexibility and often allow model complexity to increase with data size.

To address the need for a more systematic approach for comparing the performance of Turing and various PPLs (STAN, Pyro, nimble, TensorFlow probability) under common Bayesian nonparametric (BNP) models, which are a class of models that provide a great deal of modeling flexibility and allow the number of model parameters, and thus model complexity, to increase with the size of the data. The following models will be implemented (if possible) and timed (both compile times and execution times) in the various PPLs (links to minimum working examples will be provided):

  • Sampling (and variational) algorithms for Dirichlet process (DP) Gaussian / non-Gaussian mixtures for different sample sizes
    • E.g. Sampling via Chinese restaurant process (CRP) representations (including collapsed Gibbs, sequential Monte Carlo, particle Gibbs), HMC/NUTS for stick-breaking (SB) constructions, variational inference for stick-breaking construction.
    • Note: DPs are a popular choice of BNP models typically used when density estimation is of interest. They are also a popular prior for infinite mixture models, where the number of clusters are not known in advance.
  • Sampling (and variational) algorithms for Pitman-Yor process (PYP) Gaussian / non-Gaussian mixtures for different sample sizes
    • E.g. Sampling via generalized CRP representations (including collapsed Gibbs, sequential Monte Carlo, particle Gibbs), HMC/NUTS for stick-breaking (SB) constructions, variational inference for stick-breaking construction.
    • Note: PYPs are generalizations of DPs. That is, DPs are a special case of PYPs. PYPs exhibit a power-law behavior, which enables them to better model heavy-tailed distributions.
  • PYP / DP hierarchical models. Specific model to be determined.

In addition, the effective sample size and inference speed of a standardised setup, e.g. HMC in truncated stick-breaking DP mixture models, for the respective PPLs will be measured.

What this repo contains

This repository includes (or will include) tables and other visualizations that compare the (compile and execution) speed and features of various PPLs (Turing, STAN, Pyro, Nimble, TFP) with a repository containing the minimum working examples (MWEs) for each implementation. Blog posts describing the benchmarks will also be included.

Software / Hardware

All experiments for this project were done in an c5.xlarge AWS Spot Instance. As of this writing, here are the specs for this instance:

  • vCPU: 4 Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
  • RAM: 8 GB
  • Storage: EBS only
  • Network Bandwidth: Up to 10 Gbps
  • EBS Bandwidth: Up to 4750 Mbps

The following software was used:

  • Julia-v1.4.1. See Project.toml and Manifest.tomal for more info.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].