Google Summer of Code'23 at Ivy (unify.ai)
on
"Multi-backend framework support of GradSLAM in Ivy by implementing missing PyTorch APIs"
Contributor: Dhruv Rajendra Patel
Mentors: Aarsh Chaubey, Anna Tzatzopoulou, Rishabh Kumar
Introduction
GradSLAM -> an end-to-end differentiable SLAM library written in PyTorchTo develop multi-framework software support for GradSLAM in Ivy.
Installing and Setting up your environment
Setting up and Installing your environment - Ivy and GradSLAMAbout GradSLAM
As shown above, the GradSLAM library consists of different modules. We show that only framework-specific or logic containing modules (geometry, structures, odometry, SLAM) require transpilation.
Timeline and Completed Work
A detailed documentation of the work done across the entire coding duration can be found here.GradSLAM modules
Doing Basic API TestingAn example of transpiling a geometry API is shown below:
Here, param to in ivy.transpile can be set to any of ["torch", "tensorflow", "jax", "numpy"]
1.) gradslam.geometry: [Jupyter Notebook]
2.) gradslam.odometry: [Jupyter Notebook]
3.) gradslam.structures: [Jupyter Notebook]
4.) gradslam.slam: [Jupyter Notebook]
Ivy Transpilation: API-level Documentation
Ivy GradSLAM Documentation: Contains an extensive documentation describing Timeline, Completed Work, issues/errors, and more.Spreadsheet - Documentation of GradSLAM APIs testing for all frameworks. Comprises failures, PRs for resolving them and checklist of all the APIs.
GradSLAM using Ivy
A Jupyter Notebook for testing GradSLAM with different frameworks using Ivy.NOTE: The above notebook still has some required core dependencies on Ivy side, and is being worked upon by the official Ivy team. I will update the same here once the required Ivy dependencies/features are available on their repo and then this notebook can be used directly.