Add ML diagnostics tooling (W&B, TensorBoard, Grad-CAM, profiler) and gin configs
- Add unified experiment tracker (W&B + TensorBoard) with graceful fallback - Add gradient norm monitoring per param group (MONA, LoRA, MLP, gates, tau) - Add Grad-CAM visualization for DINOv3 drone/satellite encoders - Add PyTorch Profiler wrapper + torchinfo model summary - Add gin-config support to train_gtauav.py with CLI overrides - Add v3 gin configs: gtauav_balanced, gtauav_baseline, gtauav_text_heavy, gtauav_image_heavy - Generate metric plots every epoch (not just on eval) - Set default epochs to 10 - Update README and CLAUDE.md with new tooling and usage docs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
50
conf/gtauav_balanced.gin
Normal file
50
conf/gtauav_balanced.gin
Normal file
@@ -0,0 +1,50 @@
|
||||
# GTA-UAV Balanced: GatedFusion with L1/L2/L3 captions on both branches.
|
||||
# query = sigma(alpha) * drone + (1-sigma(alpha)) * text -> InfoNCE vs gallery
|
||||
# 20 epochs, DINOv3 + DGTRS-CLIP, MONA + LoRA adapters.
|
||||
|
||||
import src.losses.multi_infonce
|
||||
import src.training.train_gtauav
|
||||
|
||||
# ---- Training ----
|
||||
TrainConfigGTAUAV.epochs = 10
|
||||
TrainConfigGTAUAV.batch_size = 8
|
||||
TrainConfigGTAUAV.num_workers = 4
|
||||
TrainConfigGTAUAV.learning_rate = 1e-4
|
||||
TrainConfigGTAUAV.text_lr_factor = 0.1
|
||||
TrainConfigGTAUAV.weight_decay = 1e-4
|
||||
TrainConfigGTAUAV.grad_clip = 1.0
|
||||
TrainConfigGTAUAV.use_amp = True
|
||||
TrainConfigGTAUAV.eval_every = 2
|
||||
TrainConfigGTAUAV.warmup_epochs = 2
|
||||
TrainConfigGTAUAV.seed = 42
|
||||
TrainConfigGTAUAV.device = "cuda"
|
||||
|
||||
# ---- Model ----
|
||||
TrainConfigGTAUAV.init_gate = 0.7
|
||||
TrainConfigGTAUAV.baseline_mode = False
|
||||
|
||||
# ---- Loss ----
|
||||
TrainConfigGTAUAV.tau_init = 0.07
|
||||
TrainConfigGTAUAV.label_smoothing = 0.1
|
||||
TrainConfigGTAUAV.weight_q2g = 0.6
|
||||
TrainConfigGTAUAV.weight_g2q = 0.4
|
||||
TrainConfigGTAUAV.learnable_temperature = True
|
||||
|
||||
# ---- Output ----
|
||||
TrainConfigGTAUAV.output_dir = "out/gtauav/with_text"
|
||||
|
||||
# ---- Tracking ----
|
||||
TrainConfigGTAUAV.use_wandb = False
|
||||
TrainConfigGTAUAV.use_tb = True
|
||||
TrainConfigGTAUAV.use_gradcam = True
|
||||
TrainConfigGTAUAV.gradcam_every = 5
|
||||
TrainConfigGTAUAV.use_profiler = False
|
||||
TrainConfigGTAUAV.log_grad_norms = True
|
||||
|
||||
# ---- InfoNCE Loss (gin-configurable) ----
|
||||
InfoNCELoss.temperature_init = 0.07
|
||||
InfoNCELoss.temperature_final = 0.01
|
||||
InfoNCELoss.label_smoothing = 0.1
|
||||
InfoNCELoss.weight_q2g = 0.6
|
||||
InfoNCELoss.weight_g2q = 0.4
|
||||
InfoNCELoss.learnable_temperature = True
|
||||
9
conf/gtauav_baseline.gin
Normal file
9
conf/gtauav_baseline.gin
Normal file
@@ -0,0 +1,9 @@
|
||||
# GTA-UAV Baseline: no text fusion (gate forced to 1.0).
|
||||
# query = drone_only -> InfoNCE vs satellite
|
||||
# Reference R@1 for delta computation.
|
||||
|
||||
include 'conf/gtauav_balanced.gin'
|
||||
|
||||
TrainConfigGTAUAV.baseline_mode = True
|
||||
TrainConfigGTAUAV.output_dir = "out/gtauav/baseline"
|
||||
TrainConfigGTAUAV.use_gradcam = False
|
||||
8
conf/gtauav_image_heavy.gin
Normal file
8
conf/gtauav_image_heavy.gin
Normal file
@@ -0,0 +1,8 @@
|
||||
# GTA-UAV Image-heavy: gate initialized high (more image weight).
|
||||
# query = sigma(0.9) * drone + 0.1 * text
|
||||
# Minimal text contribution test.
|
||||
|
||||
include 'conf/gtauav_balanced.gin'
|
||||
|
||||
TrainConfigGTAUAV.init_gate = 0.9
|
||||
TrainConfigGTAUAV.output_dir = "out/gtauav/image_heavy"
|
||||
8
conf/gtauav_text_heavy.gin
Normal file
8
conf/gtauav_text_heavy.gin
Normal file
@@ -0,0 +1,8 @@
|
||||
# GTA-UAV Text-heavy: gate initialized low (more text weight).
|
||||
# query = sigma(0.3) * drone + 0.7 * text
|
||||
# Stress test for text contribution.
|
||||
|
||||
include 'conf/gtauav_balanced.gin'
|
||||
|
||||
TrainConfigGTAUAV.init_gate = 0.3
|
||||
TrainConfigGTAUAV.output_dir = "out/gtauav/text_heavy"
|
||||
Reference in New Issue
Block a user