@jeffmax I do not know why EP-backed PPLs are rare. I’d be interested to hear @eb8680_2’s opinion. To provide some pointers to various places Pyro currently uses message passing:
-
TraceEnum_ELBO
and other discrete enumeration tools perform exact message passing, requiring only one or two passes. -
DiscreteHMM
andGaussianHMM
perform exact parallel-scan message passing, requiring only one or two passes. - pyro.contrib.tracking.assignment provides a number of soft assignment solvers based on loopy belief propagation; empirically these converge in a handful of iterations.
- Pyro’s future Funsor backend provides a
moment_matching
interpretation for low-level EP computations, but does not perform EP iteration. -
pyro.contrib.epidemiology
has a helperset_relaxed_distributions()
similar to Funsor’smomement_matching
interpretation that reinterprets Binomial and BetaBinomial distributions as moment-matched normals.
I’d also love to see EP implemented in Pyro. While I agree with @krishnab that PyTorch is very AD-based, PyTorch is also a good solid system for vectorized distributed mathematics, and I think EP could be a reasonable competitive inference algorithm for some models, especially now that we have a HorovodOptimizer. I’d be happy to help anyone implement EP in Pyro and to publish a TrueSkill tutorial. If anyone wants to start implementing EP, please create a feature request issue. I’ll help by populating with low level tasks and pointers into code. I’m happy to chat over zoom to get anyone started.