Skip to content

🛠️ Configuration Guide

Configuration Structure

The project uses Hydra for modular, hierarchical configuration management. Configs are split into base definitions and method-specific overrides (DINO, SimMIM, Supervised, Fine-tuning).


Directory Structure

 
configs/
├── base/ # Shared defaults for all training types 
│ ├── data.yaml 
│ ├── model.yaml 
│ └── training.yaml 
├── dino/ # DINO-specific overrides 
│ ├── data.yaml 
│ ├── model.yaml 
│ ├── training.yaml 
│ ├── globals.yaml 
│ ├── locals.yaml 
│ └── metrics.yaml 
├── simmim/ # SimMIM-specific overrides 
├── supervised/ # Supervised-specific overrides 
├── finetune/ # Fine-tuning-specific overrides 
├── dino.yaml # Hydra composition entrypoint for DINO 
├── simmim.yaml 
├── supervised.yaml 
├── finetune.yaml 
└── config.yaml # Root selector that loads a full training config 

base/: Shared Configs

Used by all training types to define common logic:

  • data.yaml: dataset name, directory, val split, image size, etc.
  • model.yaml: patch size, embedding dim, block/head count, etc.
  • training.yaml: generic hyperparameters, LR schedulers, optimizers

Method-Specific Overrides

Each training strategy has its own folder (e.g. dino/, simmim/) that overrides or extends the base values.

Example from dino.yaml:

defaults:
  - config_schema

  - base@data: data
  - base@model: model
  - base@training: training

  - dino@data: data
  - dino@model: model
  - dino@training: training
  - dino@transforms.globals: globals
  - dino@transforms.locals: locals
  - dino@metrics: metrics

hydra:
  run:
    dir: ./experiments/${training.type}/${now:%Y-%m-%d_%H_%M_%S}

Root Composition (config.yaml)

Sets the active method (e.g. DINO, SimMIM):

defaults:
  - dino.yaml
  - _self_

To switch training modes, change dino.yaml to simmim.yaml, finetune.yaml, etc.


Output Directory

Each run saves outputs in a method+timestamp-based directory:

./experiments/training.type/timestamp/

This structure keeps logs, configs, and checkpoints isolated per run.