Skip to content

Week 4 into GSoC

So, the phase 1 coding period ends and let me summarize what I did for the last week. Let's bring back the tasks proposed at the end of week 3 and figure out how many I have completed -

  • Write tests for conjugate normal models with known mean/variance.
  • Configure atol argument for np.testing.assert_allclose.
  • Complete docs for optimizers by adding **kwargs option and writing corresponding maths equations.
  • Properly configure convergence checks and add an example to quickstart notebooks.
  • Configure autobatching.
  • Integrate Deterministics callbacks. (But I did it wrong)
  • Complete remaining Approximations.
    • Full Rank Approximation.
    • Low Rank Approximation.
  • Configure Minibatches.
  • Update quick_start notebook with respect to all changes above.

I was unable to complete a few tasks because I got stuck for many days figuring out how to correctly handle shapes in Full Rank ADVI. Finally I was able to come up with a new _build_logfn to handle shapes (on the guidelines provided by my mentor).

Experiments

Gist 1 - Source

I started the fourth week with a plan to include deterministics callbacks. Here are my experiments doing the same with PyMC4. All the determinitics are included in trace function. But when I opted for the same strategy to include deterministics while sampling, I got many shapes errors. The reason determinitics_callback failed because it assumes sample size = 1. We need to change this API.

Gist 2 - Source

My experiments involving how to configure Full Rank ADVI in TFP.

Gist 3 - Source

Comparisons drawn between PyMC3 and PyMC4 for 2-d Gaussians. TODO - complete comparisons for Mixture Distributions as well.

Tasks for the remaining GSoC period

From the API point of view, only 5 tasks are left for the GSoC -

  • Configure autobatching.
  • Configure Minibatches.
  • Add an option of progressbar.
  • Include deterministics samples.
  • Add convergence checks.

From the view of adding examples, all the notebooks from PyMC3 need to be ported to PyMC4.

For week 5, I look forward to add progressbar and convergence checks to PyMC4.

Comparing with timeline

I have already completed all the tasks proposed for phase 1 evaluations. Also I have added Mean Field and Full Rank Approximations which were proposed for phase 2 and phase 3 of GSoC coding period respectively.

I am thankful to my mentor for his constant guidance and pymc-devs for being such a supportive community.

Thank you for reading!

With ❤, Sayam