Effect Handling for Composable Program Transformations in Edward2

11/15/2018
by   Dave Moore, et al.
0

Algebraic effects and handlers have emerged in the programming languages community as a convenient, modular abstraction for controlling computational effects. They have found several applications including concurrent programming, meta programming, and more recently, probabilistic programming, as part of Pyro's Poutines library. We investigate the use of effect handlers as a lightweight abstraction for implementing probabilistic programming languages (PPLs). We interpret the existing design of Edward2 as an accidental implementation of an effect-handling mechanism, and extend that design to support nested, composable transformations. We demonstrate that this enables straightforward implementation of sophisticated model transformations and inference algorithms.

READ FULL TEXT

page 1

page 2

page 3

research
06/20/2019

Deployable probabilistic programming

We propose design guidelines for a probabilistic programming facility su...
research
12/24/2019

Composable Effects for Flexible and Accelerated Probabilistic Programming in NumPyro

NumPyro is a lightweight library that provides an alternate NumPy backen...
research
10/03/2022

Exact Recursive Probabilistic Programming

Recursive calls over recursive data are widely useful for generating pro...
research
02/22/2019

Optimizing Space of Parallel Processes

This paper is a contribution to exploring and analyzing space-improvemen...
research
10/06/2017

Fibred Computational Effects

Dependent types provide a lightweight and modular means to integrate pro...
research
05/07/2021

NoCFG: A Lightweight Approach for Sound Call Graph Approximation

Interprocedural analysis refers to gathering information about the entir...
research
07/05/2020

Starfish: A Prototype for Universal Preprocessing and Text-Embedded Programming

We present a novel concept of universal text preprocessing and text-embe...

Please sign up or login with your details

Forgot password? Click here to reset