TensorFlow Probability (TFP) is a production-grade library for probabilistic modeling and Bayesian inference. It provides a comprehensive suite of probability distributions, bijectors (normalizing flows), MCMC kernels (HMC, NUTS, SMC, etc.), variational inference, Gaussian processes, structural time series, and Bayesian optimization. The library supports TensorFlow, JAX, and NumPy backends through a rewrite system, enabling seamless switching between hardware accelerators. The architecture is modular: each distribution, bijector, and kernel inherits from well-defined abstract base classes with `parameter_properties` for automatic shape and constraint inference. Key entry points include `tfp.distributions`, `tfp.bijectors`, `tfp.mcmc`, `tfp.vi`, `tfp.sts`, and `tfp.experimental` for cutting-edge methods. The code is heavily tested across all backends, with property-based tests and numerical stability checks. While primarily an application library, it also includes research-grade components in `discussion/` and `spinoffs/` (Inference Gym, AutoBNN, FunMC) that serve as benchmarks and experimental prototypes.
Pyro is a deep probabilistic programming library built on PyTorch, providing a unified framework for Bayesian inference, variational inference, and Monte Carlo methods. Its architecture centers on composable effect handlers (poutine) that enable tracing, conditioning, replay, and reparameterization of probabilistic programs. The library includes a rich set of distributions, bijective transforms for normalizing flows, automatic guide construction, and a variety of inference algorithms (SVI, HMC, NUTS, SVGD, SMC). It also offers domain-specific contrib modules for Gaussian processes, time series forecasting, epidemiology, optimal experimental design, and multi-object tracking. While primarily a software library, Pyro has strong research roots, with many features inspired by recent papers and experimental modules that may evolve. The codebase is well-structured, extensively tested, and actively maintained, though some contrib modules carry instability warnings and a few internal patches to PyTorch may require attention.