In this file, we provide information about the planning of our work on the library named HippoTrainer (hippotrainer
).
Since its implementation is carried out as a part of BMM course, we consider it a full-fledged project named Gradient-Based Hyperparameter Optimization and therefore make detailed, long-term planning.
This document is structured as follows:
Hyperparameter optimization remains one of the most time-consuming aspects of machine learning workflows. Traditional methods like grid/random search or Bayesian optimization struggle with high-dimensional spaces and require extensive computational resources. Our solution enables efficient gradient-based optimization of hyperparameters through automatic differentiation.
In this project, we are going to implement the following algorithms:
- T1-T2 (Paper): One-step unrolled optimization
- IFT (Paper): Leveraging Neumann series approximation for implicit differentiation
- HOAG (Paper): Implicit differentiation via conjugate gradient
- DrMAD (Paper): Memory-efficient piecewise-linear backpropagation
-
Core Components:
HyperOptimizer
: Base class for all algorithms +suggest_float()
,create_study()
,optimize()
Hyperparameter
: Differentiable wrapper for hyperparametersCheckpointer
: Memory management via parameters checkpointing
-
PyTorch Integration:
- Inherit from
torch.nn.Module
for model compatibility - Use
torch.autograd
for gradient computation - Support standard PyTorch optimizers and data loaders
- Inherit from
Note
Below we present a diagram of the implementation of our project, demonstrating the class inheritance, as well as the methods necessary for implementation.
In order to getting all things done, we prepared a comprehensive schedule. We highlight the main events and deadlines that we are going meet to. All the contributions are assigned with their own tasks. Thus we suppose the project to be done in the distributed manner, exhibiting the best possible advantages from all the participants.
Note
This version is preliminary, as the keypoints, i.e. techical meetings, have preliminary dates too. Moreover, up to date only main actions are noted. We will expand this schedule, providing a more detailed description of each task.
Week # | By date | Deadline | Assignee | Task |
---|---|---|---|---|
1 | Feb 18 | Team Assignment | All | Team is formed, project idea is discussed |
2 | Feb 25 | TM1 Kickoff | All | Repository setup, analyze papers, prepare info for slides |
3 | Mar 4 | Core Infrastructure | Igor | Implement base HyperOptimizer class, publish preliminary docs for it |
Nikita | Implement Hyperparameter class, think about a blogpost idea |
|||
4 | Mar 11 | Algorithm Prototyping | Daniil | HOAG conjugate-gradient implementation, setup proof of concept |
Andrey | DrMAD checkpointing system, make simple test | |||
5 | Mar 18 | TM2 Mid-review | All | Validate core functionality, drafty version of documentation, basic tests |
6 | Mar 25 | API Finalization | Igor | Standardize optimizer interfaces |
Nikita | Implement IFT (million hyperparams) support, start blog-post writing | |||
7 | Apr 1 | Testing & Benchmarks | Andrey | Implement core DrMAD functionality |
Daniil | Tests for HOAG implemented | |||
8 | Apr 8 | Checkpoint | All | Documentation, examples, packaging, blog-post almost done |
9 | Apr 15 | Cross-Review Prep | All | Prepare for cross-review |
10 | Apr 22 | Cross-Review | All | Review other teams' work |
11 | Apr 29 | Final Prep | All | Finalize library, demos, tests |
12 | May 6 | TM3 Final Review | All | Present final work, blog-post |
13 | May 13 | External Review | All | Address feedback from external review |
14 | May 20 | Grades & Finalizing | All | Finalize all work, discuss fixes |