Skip to content

Google Summer of Code 2020

Cameron Pfiffer

As the 2020 Google Summer of Code comes to a close, the Turing team thought it would be a good opportunity to reflect on the work that was done by our superb students this summer.

Saranjeet Kaur's project focused primarily on expanding NestedSamplers.jl. NestedSamplers.jl now supports PolyChord-style nested sampling natively, which is an absolute delight. Saranjeet wrote about this here. She also provided a good tutorial on how to use NestedSamplers.jl here. The NestedSamplers.jl integration with Turing is still on-going -- integrating new samplers with Turing is one of the more difficult tasks. If you are interested to see the progress on this, check out the relevant pull request.

Arthur Lui's project was to provide a much-needed set of benchmarks of Bayesian nonparametric models between Turing and other PPLs. Arthur's work spawned a GitHub repository with good practices for benchmarking, as well as three blog posts with some (very cool!) statistics on Turing's performance:

  1. Dirichlet Process Gaussian mixture model via the stick-breaking construction in various PPLs
  2. Gaussian Process Regression Model in various PPLs
  3. Gaussian Process Classification Model in various PPLs

Finally, Sharan Yalburgi (a returning GSoC student) completed an epic amount of work Turing's growing suite of Gaussian process tools. In particular, the GitHub organization JuliaGaussianProcesses was founded, and serves as an effort to build a robust Gaussian process framework for the Julia ecosystem. The framework consists of multiple GP related Julia packages:

  • KernelFunctions.jl provides kernel functions for GPs as well as efficient AD for these kernels. KernelFunctions.jl also supports multi-output GPs by providing necessary data abstractions and multi-output kernels.
  • AbstractGPs.jl defines GP abstractions and provides exact posteriors. It provides support for induced points based GP posteriors and for efficient sequential/online (sparse) GP updates.
  • GPLikelihoods.jl defines alternate likelihoods for Non-Gaussian GPs.
  • GPMLj.jl provides a Julia interface for GPFlow, a GP library written in Python using TensorFlow.

Special thanks to our three GSoC students for this summer, who all did excellent work. Additional thanks to Google for supporting open source software development and the Julia language!