diff --git a/presets/gtauav_balanced/models.gin b/in/config_files/gtauav_balanced/models.gin similarity index 100% rename from presets/gtauav_balanced/models.gin rename to in/config_files/gtauav_balanced/models.gin diff --git a/presets/gtauav_balanced/pipeline.gin b/in/config_files/gtauav_balanced/pipeline.gin similarity index 100% rename from presets/gtauav_balanced/pipeline.gin rename to in/config_files/gtauav_balanced/pipeline.gin diff --git a/presets/gtauav_balanced_asym/models.gin b/in/config_files/gtauav_balanced_asym/models.gin similarity index 100% rename from presets/gtauav_balanced_asym/models.gin rename to in/config_files/gtauav_balanced_asym/models.gin diff --git a/presets/gtauav_balanced_asym/pipeline.gin b/in/config_files/gtauav_balanced_asym/pipeline.gin similarity index 100% rename from presets/gtauav_balanced_asym/pipeline.gin rename to in/config_files/gtauav_balanced_asym/pipeline.gin diff --git a/presets/gtauav_balanced_sofia/models.gin b/in/config_files/gtauav_balanced_sofia/models.gin similarity index 100% rename from presets/gtauav_balanced_sofia/models.gin rename to in/config_files/gtauav_balanced_sofia/models.gin diff --git a/presets/gtauav_balanced_sofia/pipeline.gin b/in/config_files/gtauav_balanced_sofia/pipeline.gin similarity index 100% rename from presets/gtauav_balanced_sofia/pipeline.gin rename to in/config_files/gtauav_balanced_sofia/pipeline.gin diff --git a/presets/gtauav_balanced_sofia_v1/models.gin b/in/config_files/gtauav_balanced_sofia_v1/models.gin similarity index 100% rename from presets/gtauav_balanced_sofia_v1/models.gin rename to in/config_files/gtauav_balanced_sofia_v1/models.gin diff --git a/presets/gtauav_balanced_sofia_v1/pipeline.gin b/in/config_files/gtauav_balanced_sofia_v1/pipeline.gin similarity index 100% rename from presets/gtauav_balanced_sofia_v1/pipeline.gin rename to in/config_files/gtauav_balanced_sofia_v1/pipeline.gin diff --git a/presets/gtauav_balanced_stripnet/models.gin b/in/config_files/gtauav_balanced_stripnet/models.gin similarity index 100% rename from presets/gtauav_balanced_stripnet/models.gin rename to in/config_files/gtauav_balanced_stripnet/models.gin diff --git a/presets/gtauav_balanced_stripnet/pipeline.gin b/in/config_files/gtauav_balanced_stripnet/pipeline.gin similarity index 100% rename from presets/gtauav_balanced_stripnet/pipeline.gin rename to in/config_files/gtauav_balanced_stripnet/pipeline.gin diff --git a/presets/gtauav_balanced_stripnet_unfrozen/models.gin b/in/config_files/gtauav_balanced_stripnet_unfrozen/models.gin similarity index 100% rename from presets/gtauav_balanced_stripnet_unfrozen/models.gin rename to in/config_files/gtauav_balanced_stripnet_unfrozen/models.gin diff --git a/presets/gtauav_balanced_stripnet_unfrozen/pipeline.gin b/in/config_files/gtauav_balanced_stripnet_unfrozen/pipeline.gin similarity index 100% rename from presets/gtauav_balanced_stripnet_unfrozen/pipeline.gin rename to in/config_files/gtauav_balanced_stripnet_unfrozen/pipeline.gin diff --git a/presets/gtauav_baseline/models.gin b/in/config_files/gtauav_baseline/models.gin similarity index 100% rename from presets/gtauav_baseline/models.gin rename to in/config_files/gtauav_baseline/models.gin diff --git a/presets/gtauav_baseline/pipeline.gin b/in/config_files/gtauav_baseline/pipeline.gin similarity index 100% rename from presets/gtauav_baseline/pipeline.gin rename to in/config_files/gtauav_baseline/pipeline.gin diff --git a/presets/gtauav_baseline_asym/models.gin b/in/config_files/gtauav_baseline_asym/models.gin similarity index 100% rename from presets/gtauav_baseline_asym/models.gin rename to in/config_files/gtauav_baseline_asym/models.gin diff --git a/presets/gtauav_baseline_asym/pipeline.gin b/in/config_files/gtauav_baseline_asym/pipeline.gin similarity index 100% rename from presets/gtauav_baseline_asym/pipeline.gin rename to in/config_files/gtauav_baseline_asym/pipeline.gin diff --git a/presets/gtauav_baseline_sofia/models.gin b/in/config_files/gtauav_baseline_sofia/models.gin similarity index 100% rename from presets/gtauav_baseline_sofia/models.gin rename to in/config_files/gtauav_baseline_sofia/models.gin diff --git a/presets/gtauav_baseline_sofia/pipeline.gin b/in/config_files/gtauav_baseline_sofia/pipeline.gin similarity index 100% rename from presets/gtauav_baseline_sofia/pipeline.gin rename to in/config_files/gtauav_baseline_sofia/pipeline.gin diff --git a/presets/gtauav_baseline_sofia_v1/models.gin b/in/config_files/gtauav_baseline_sofia_v1/models.gin similarity index 100% rename from presets/gtauav_baseline_sofia_v1/models.gin rename to in/config_files/gtauav_baseline_sofia_v1/models.gin diff --git a/presets/gtauav_baseline_sofia_v1/pipeline.gin b/in/config_files/gtauav_baseline_sofia_v1/pipeline.gin similarity index 100% rename from presets/gtauav_baseline_sofia_v1/pipeline.gin rename to in/config_files/gtauav_baseline_sofia_v1/pipeline.gin diff --git a/presets/gtauav_baseline_stripnet/models.gin b/in/config_files/gtauav_baseline_stripnet/models.gin similarity index 100% rename from presets/gtauav_baseline_stripnet/models.gin rename to in/config_files/gtauav_baseline_stripnet/models.gin diff --git a/presets/gtauav_baseline_stripnet/pipeline.gin b/in/config_files/gtauav_baseline_stripnet/pipeline.gin similarity index 100% rename from presets/gtauav_baseline_stripnet/pipeline.gin rename to in/config_files/gtauav_baseline_stripnet/pipeline.gin diff --git a/presets/gtauav_baseline_stripnet_unfrozen/models.gin b/in/config_files/gtauav_baseline_stripnet_unfrozen/models.gin similarity index 100% rename from presets/gtauav_baseline_stripnet_unfrozen/models.gin rename to in/config_files/gtauav_baseline_stripnet_unfrozen/models.gin diff --git a/presets/gtauav_baseline_stripnet_unfrozen/pipeline.gin b/in/config_files/gtauav_baseline_stripnet_unfrozen/pipeline.gin similarity index 100% rename from presets/gtauav_baseline_stripnet_unfrozen/pipeline.gin rename to in/config_files/gtauav_baseline_stripnet_unfrozen/pipeline.gin diff --git a/presets/gtauav_image_heavy/models.gin b/in/config_files/gtauav_image_heavy/models.gin similarity index 100% rename from presets/gtauav_image_heavy/models.gin rename to in/config_files/gtauav_image_heavy/models.gin diff --git a/presets/gtauav_image_heavy/pipeline.gin b/in/config_files/gtauav_image_heavy/pipeline.gin similarity index 100% rename from presets/gtauav_image_heavy/pipeline.gin rename to in/config_files/gtauav_image_heavy/pipeline.gin diff --git a/presets/gtauav_text_heavy/models.gin b/in/config_files/gtauav_text_heavy/models.gin similarity index 100% rename from presets/gtauav_text_heavy/models.gin rename to in/config_files/gtauav_text_heavy/models.gin diff --git a/presets/gtauav_text_heavy/pipeline.gin b/in/config_files/gtauav_text_heavy/pipeline.gin similarity index 100% rename from presets/gtauav_text_heavy/pipeline.gin rename to in/config_files/gtauav_text_heavy/pipeline.gin diff --git a/in/config_files/hardware.gin b/in/config_files/hardware.gin deleted file mode 100644 index 8b13789..0000000 --- a/in/config_files/hardware.gin +++ /dev/null @@ -1 +0,0 @@ - diff --git a/presets/gtauav_balanced/hardware.gin b/in/config_files/hardware_default.gin similarity index 100% rename from presets/gtauav_balanced/hardware.gin rename to in/config_files/hardware_default.gin diff --git a/presets/gtauav_baseline_sofia/hardware.gin b/in/config_files/hardware_no_gradckpt.gin similarity index 100% rename from presets/gtauav_baseline_sofia/hardware.gin rename to in/config_files/hardware_no_gradckpt.gin diff --git a/in/config_files/models.gin b/in/config_files/models.gin deleted file mode 100644 index 8b13789..0000000 --- a/in/config_files/models.gin +++ /dev/null @@ -1 +0,0 @@ - diff --git a/in/config_files/pipeline.gin b/in/config_files/pipeline.gin deleted file mode 100644 index 8b13789..0000000 --- a/in/config_files/pipeline.gin +++ /dev/null @@ -1 +0,0 @@ - diff --git a/presets/preprocess/preprocess.gin b/in/config_files/preprocess/preprocess.gin similarity index 100% rename from presets/preprocess/preprocess.gin rename to in/config_files/preprocess/preprocess.gin diff --git a/in/config_files/tracking.gin b/in/config_files/tracking.gin index 8b13789..1442120 100644 --- a/in/config_files/tracking.gin +++ b/in/config_files/tracking.gin @@ -1 +1,16 @@ +# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. +TrackingConfig.use_wandb = False +TrackingConfig.use_tb = True +TrackingConfig.wandb_project = 'caption-test-gtauav' +TrackingConfig.wandb_run_name = None +TrackingConfig.wandb_entity = None + +TrackingConfig.log_grad_norms = True +TrackingConfig.use_gradcam = False +TrackingConfig.gradcam_every = 5 +TrackingConfig.gradcam_samples = 8 + +TrackingConfig.use_profiler = False +TrackingConfig.profiler_warmup = 3 +TrackingConfig.profiler_active = 5 diff --git a/in/config_files/training.gin b/in/config_files/training.gin index 8b13789..500f55e 100644 --- a/in/config_files/training.gin +++ b/in/config_files/training.gin @@ -1 +1,31 @@ +# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. +TrainingConfig.loss_type = 'symmetric' +TrainingConfig.tau_init = 0.07 +TrainingConfig.tau_min = 0.01 +TrainingConfig.tau_max = 0.1 +TrainingConfig.learnable_temperature = True +TrainingConfig.label_smoothing = 0.1 +TrainingConfig.tau_final = 0.01 +TrainingConfig.weight_q2g = 0.6 +TrainingConfig.weight_g2q = 0.4 +TrainingConfig.hard_mining_k = 0 +TrainingConfig.neg_bank_size = 0 + +# WeightedInfoNCE-only (unused when loss_type='symmetric'). +TrainingConfig.weighted_loss_k = 5.0 + +TrainingConfig.learning_rate = 1e-4 +TrainingConfig.text_lr_factor = 0.1 +TrainingConfig.weight_decay = 1e-4 +TrainingConfig.grad_clip = 1.0 + +TrainingConfig.sampler_type = 'mutex' +TrainingConfig.dss_warmup_epochs = 1 +TrainingConfig.dss_reembed_every = 1 +TrainingConfig.dss_knn_device = 'cuda' +TrainingConfig.dss_use_lsh = False +TrainingConfig.dss_lsh_num_tables = 8 +TrainingConfig.dss_lsh_num_bits = 14 +TrainingConfig.dss_cache_dir = None +TrainingConfig.use_mutex_sampler = True diff --git a/presets/gtauav_balanced/tracking.gin b/presets/gtauav_balanced/tracking.gin deleted file mode 100644 index 111a337..0000000 --- a/presets/gtauav_balanced/tracking.gin +++ /dev/null @@ -1,15 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 diff --git a/presets/gtauav_balanced/training.gin b/presets/gtauav_balanced/training.gin deleted file mode 100644 index 500f55e..0000000 --- a/presets/gtauav_balanced/training.gin +++ /dev/null @@ -1,31 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True diff --git a/presets/gtauav_balanced_asym/hardware.gin b/presets/gtauav_balanced_asym/hardware.gin deleted file mode 100644 index ab351a2..0000000 --- a/presets/gtauav_balanced_asym/hardware.gin +++ /dev/null @@ -1,10 +0,0 @@ -# RTX 4090 profile, shared encoder (DINOv3). -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = True -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 - diff --git a/presets/gtauav_balanced_asym/tracking.gin b/presets/gtauav_balanced_asym/tracking.gin deleted file mode 100644 index 1442120..0000000 --- a/presets/gtauav_balanced_asym/tracking.gin +++ /dev/null @@ -1,16 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 - diff --git a/presets/gtauav_balanced_asym/training.gin b/presets/gtauav_balanced_asym/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_balanced_asym/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/presets/gtauav_balanced_sofia/hardware.gin b/presets/gtauav_balanced_sofia/hardware.gin deleted file mode 100644 index ab09c0a..0000000 --- a/presets/gtauav_balanced_sofia/hardware.gin +++ /dev/null @@ -1,9 +0,0 @@ -# SOFIA v7.1 from-scratch — keep activations live (no gradient checkpointing). -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = False -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 diff --git a/presets/gtauav_balanced_sofia/tracking.gin b/presets/gtauav_balanced_sofia/tracking.gin deleted file mode 100644 index 1442120..0000000 --- a/presets/gtauav_balanced_sofia/tracking.gin +++ /dev/null @@ -1,16 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 - diff --git a/presets/gtauav_balanced_sofia/training.gin b/presets/gtauav_balanced_sofia/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_balanced_sofia/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/presets/gtauav_balanced_sofia_v1/hardware.gin b/presets/gtauav_balanced_sofia_v1/hardware.gin deleted file mode 100644 index 7fac8b0..0000000 --- a/presets/gtauav_balanced_sofia_v1/hardware.gin +++ /dev/null @@ -1,8 +0,0 @@ -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = False -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 diff --git a/presets/gtauav_balanced_sofia_v1/tracking.gin b/presets/gtauav_balanced_sofia_v1/tracking.gin deleted file mode 100644 index 1442120..0000000 --- a/presets/gtauav_balanced_sofia_v1/tracking.gin +++ /dev/null @@ -1,16 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 - diff --git a/presets/gtauav_balanced_sofia_v1/training.gin b/presets/gtauav_balanced_sofia_v1/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_balanced_sofia_v1/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/presets/gtauav_balanced_stripnet/hardware.gin b/presets/gtauav_balanced_stripnet/hardware.gin deleted file mode 100644 index ab351a2..0000000 --- a/presets/gtauav_balanced_stripnet/hardware.gin +++ /dev/null @@ -1,10 +0,0 @@ -# RTX 4090 profile, shared encoder (DINOv3). -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = True -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 - diff --git a/presets/gtauav_balanced_stripnet/tracking.gin b/presets/gtauav_balanced_stripnet/tracking.gin deleted file mode 100644 index 1442120..0000000 --- a/presets/gtauav_balanced_stripnet/tracking.gin +++ /dev/null @@ -1,16 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 - diff --git a/presets/gtauav_balanced_stripnet/training.gin b/presets/gtauav_balanced_stripnet/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_balanced_stripnet/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/presets/gtauav_balanced_stripnet_unfrozen/hardware.gin b/presets/gtauav_balanced_stripnet_unfrozen/hardware.gin deleted file mode 100644 index ab351a2..0000000 --- a/presets/gtauav_balanced_stripnet_unfrozen/hardware.gin +++ /dev/null @@ -1,10 +0,0 @@ -# RTX 4090 profile, shared encoder (DINOv3). -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = True -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 - diff --git a/presets/gtauav_balanced_stripnet_unfrozen/tracking.gin b/presets/gtauav_balanced_stripnet_unfrozen/tracking.gin deleted file mode 100644 index 1442120..0000000 --- a/presets/gtauav_balanced_stripnet_unfrozen/tracking.gin +++ /dev/null @@ -1,16 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 - diff --git a/presets/gtauav_balanced_stripnet_unfrozen/training.gin b/presets/gtauav_balanced_stripnet_unfrozen/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_balanced_stripnet_unfrozen/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/presets/gtauav_baseline/hardware.gin b/presets/gtauav_baseline/hardware.gin deleted file mode 100644 index ab351a2..0000000 --- a/presets/gtauav_baseline/hardware.gin +++ /dev/null @@ -1,10 +0,0 @@ -# RTX 4090 profile, shared encoder (DINOv3). -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = True -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 - diff --git a/presets/gtauav_baseline/tracking.gin b/presets/gtauav_baseline/tracking.gin deleted file mode 100644 index 111a337..0000000 --- a/presets/gtauav_baseline/tracking.gin +++ /dev/null @@ -1,15 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 diff --git a/presets/gtauav_baseline/training.gin b/presets/gtauav_baseline/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_baseline/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/presets/gtauav_baseline_asym/hardware.gin b/presets/gtauav_baseline_asym/hardware.gin deleted file mode 100644 index dfc9be7..0000000 --- a/presets/gtauav_baseline_asym/hardware.gin +++ /dev/null @@ -1,9 +0,0 @@ -# RTX 4090 profile, shared encoder (DINOv3). -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = True -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 diff --git a/presets/gtauav_baseline_asym/tracking.gin b/presets/gtauav_baseline_asym/tracking.gin deleted file mode 100644 index 111a337..0000000 --- a/presets/gtauav_baseline_asym/tracking.gin +++ /dev/null @@ -1,15 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 diff --git a/presets/gtauav_baseline_asym/training.gin b/presets/gtauav_baseline_asym/training.gin deleted file mode 100644 index 500f55e..0000000 --- a/presets/gtauav_baseline_asym/training.gin +++ /dev/null @@ -1,31 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True diff --git a/presets/gtauav_baseline_sofia/tracking.gin b/presets/gtauav_baseline_sofia/tracking.gin deleted file mode 100644 index 1442120..0000000 --- a/presets/gtauav_baseline_sofia/tracking.gin +++ /dev/null @@ -1,16 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 - diff --git a/presets/gtauav_baseline_sofia/training.gin b/presets/gtauav_baseline_sofia/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_baseline_sofia/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/presets/gtauav_baseline_sofia_v1/hardware.gin b/presets/gtauav_baseline_sofia_v1/hardware.gin deleted file mode 100644 index 1a58885..0000000 --- a/presets/gtauav_baseline_sofia_v1/hardware.gin +++ /dev/null @@ -1,9 +0,0 @@ -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = False -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 - diff --git a/presets/gtauav_baseline_sofia_v1/tracking.gin b/presets/gtauav_baseline_sofia_v1/tracking.gin deleted file mode 100644 index 1442120..0000000 --- a/presets/gtauav_baseline_sofia_v1/tracking.gin +++ /dev/null @@ -1,16 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 - diff --git a/presets/gtauav_baseline_sofia_v1/training.gin b/presets/gtauav_baseline_sofia_v1/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_baseline_sofia_v1/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/presets/gtauav_baseline_stripnet/hardware.gin b/presets/gtauav_baseline_stripnet/hardware.gin deleted file mode 100644 index ab351a2..0000000 --- a/presets/gtauav_baseline_stripnet/hardware.gin +++ /dev/null @@ -1,10 +0,0 @@ -# RTX 4090 profile, shared encoder (DINOv3). -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = True -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 - diff --git a/presets/gtauav_baseline_stripnet/tracking.gin b/presets/gtauav_baseline_stripnet/tracking.gin deleted file mode 100644 index 1442120..0000000 --- a/presets/gtauav_baseline_stripnet/tracking.gin +++ /dev/null @@ -1,16 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 - diff --git a/presets/gtauav_baseline_stripnet/training.gin b/presets/gtauav_baseline_stripnet/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_baseline_stripnet/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/presets/gtauav_baseline_stripnet_unfrozen/hardware.gin b/presets/gtauav_baseline_stripnet_unfrozen/hardware.gin deleted file mode 100644 index ab351a2..0000000 --- a/presets/gtauav_baseline_stripnet_unfrozen/hardware.gin +++ /dev/null @@ -1,10 +0,0 @@ -# RTX 4090 profile, shared encoder (DINOv3). -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = True -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 - diff --git a/presets/gtauav_baseline_stripnet_unfrozen/tracking.gin b/presets/gtauav_baseline_stripnet_unfrozen/tracking.gin deleted file mode 100644 index 1442120..0000000 --- a/presets/gtauav_baseline_stripnet_unfrozen/tracking.gin +++ /dev/null @@ -1,16 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 - diff --git a/presets/gtauav_baseline_stripnet_unfrozen/training.gin b/presets/gtauav_baseline_stripnet_unfrozen/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_baseline_stripnet_unfrozen/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/presets/gtauav_image_heavy/hardware.gin b/presets/gtauav_image_heavy/hardware.gin deleted file mode 100644 index ab351a2..0000000 --- a/presets/gtauav_image_heavy/hardware.gin +++ /dev/null @@ -1,10 +0,0 @@ -# RTX 4090 profile, shared encoder (DINOv3). -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = True -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 - diff --git a/presets/gtauav_image_heavy/tracking.gin b/presets/gtauav_image_heavy/tracking.gin deleted file mode 100644 index 1442120..0000000 --- a/presets/gtauav_image_heavy/tracking.gin +++ /dev/null @@ -1,16 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 - diff --git a/presets/gtauav_image_heavy/training.gin b/presets/gtauav_image_heavy/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_image_heavy/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/presets/gtauav_text_heavy/hardware.gin b/presets/gtauav_text_heavy/hardware.gin deleted file mode 100644 index 6ea808e..0000000 --- a/presets/gtauav_text_heavy/hardware.gin +++ /dev/null @@ -1,10 +0,0 @@ - -# RTX 4090 profile, shared encoder (DINOv3). -HardwareConfig.device = 'cuda' -HardwareConfig.batch_size = 8 -HardwareConfig.grad_accum_steps = 8 -HardwareConfig.num_workers = 4 -HardwareConfig.use_amp = True -HardwareConfig.gradient_checkpointing = True -HardwareConfig.reserve_gb = 2.0 -HardwareConfig.total_vram_gb = 24.0 diff --git a/presets/gtauav_text_heavy/tracking.gin b/presets/gtauav_text_heavy/tracking.gin deleted file mode 100644 index 111a337..0000000 --- a/presets/gtauav_text_heavy/tracking.gin +++ /dev/null @@ -1,15 +0,0 @@ -# Default tracking: TensorBoard on, W&B off, no Grad-CAM, no profiler. -TrackingConfig.use_wandb = False -TrackingConfig.use_tb = True -TrackingConfig.wandb_project = 'caption-test-gtauav' -TrackingConfig.wandb_run_name = None -TrackingConfig.wandb_entity = None - -TrackingConfig.log_grad_norms = True -TrackingConfig.use_gradcam = False -TrackingConfig.gradcam_every = 5 -TrackingConfig.gradcam_samples = 8 - -TrackingConfig.use_profiler = False -TrackingConfig.profiler_warmup = 3 -TrackingConfig.profiler_active = 5 diff --git a/presets/gtauav_text_heavy/training.gin b/presets/gtauav_text_heavy/training.gin deleted file mode 100644 index ffb8c32..0000000 --- a/presets/gtauav_text_heavy/training.gin +++ /dev/null @@ -1,32 +0,0 @@ -# Loss + optimizer + sampler — symmetric InfoNCE, AdamW, mutex sampler. -TrainingConfig.loss_type = 'symmetric' -TrainingConfig.tau_init = 0.07 -TrainingConfig.tau_min = 0.01 -TrainingConfig.tau_max = 0.1 -TrainingConfig.learnable_temperature = True -TrainingConfig.label_smoothing = 0.1 - -TrainingConfig.tau_final = 0.01 -TrainingConfig.weight_q2g = 0.6 -TrainingConfig.weight_g2q = 0.4 -TrainingConfig.hard_mining_k = 0 -TrainingConfig.neg_bank_size = 0 - -# WeightedInfoNCE-only (unused when loss_type='symmetric'). -TrainingConfig.weighted_loss_k = 5.0 - -TrainingConfig.learning_rate = 1e-4 -TrainingConfig.text_lr_factor = 0.1 -TrainingConfig.weight_decay = 1e-4 -TrainingConfig.grad_clip = 1.0 - -TrainingConfig.sampler_type = 'mutex' -TrainingConfig.dss_warmup_epochs = 1 -TrainingConfig.dss_reembed_every = 1 -TrainingConfig.dss_knn_device = 'cuda' -TrainingConfig.dss_use_lsh = False -TrainingConfig.dss_lsh_num_tables = 8 -TrainingConfig.dss_lsh_num_bits = 14 -TrainingConfig.dss_cache_dir = None -TrainingConfig.use_mutex_sampler = True - diff --git a/src/conf/config_loader.py b/src/conf/config_loader.py index a453a8f..b5e9617 100644 --- a/src/conf/config_loader.py +++ b/src/conf/config_loader.py @@ -1,8 +1,24 @@ """Single entry point for loading all configs in a training run. -Reads every .gin file in path2cfg (one preset directory) and instantiates -the 4 universal configs + ModelsCommonConfig + the family-specific Models -config selected by ModelsCommonConfig.backbone. +Layout (per REQUIREMENTS_GIN_STYLE.md §1, extended for multi-experiment): + + in/config_files/ + ├── training.gin # common: shared by all training presets + ├── hardware_default.gin # common: for DINOv3 / StripNet + ├── hardware_no_gradckpt.gin # common: for SOFIA backbones + ├── tracking.gin # common: shared by all + └── / + ├── pipeline.gin # local: output_dir, paths, schedule + └── models.gin # local: backbone-specific bindings + +`load_all_configs` parses common files at the path2cfg root + preset locals +in `path2cfg//`. Two-pass loading: + Pass 1: read /models.gin to learn the backbone. + Pass 2: parse common files + preset locals in one batch. + +Override semantics: if the preset directory contains its own training.gin / +hardware.gin / tracking.gin, those files are appended AFTER the common +versions, so their bindings win (gin: last write wins). """ from __future__ import annotations @@ -33,49 +49,114 @@ _BACKBONE_TO_MODELS_CLS = { "sofia_v71": SOFIAv71ModelsConfig, } +# Sofia backbones disable gradient checkpointing. +_NO_GRADCKPT_BACKBONES = {"sofia_v1", "sofia_v71"} -def load_all_configs(path2cfg: str) -> dict[str, Any]: - """Parse every .gin in path2cfg and instantiate all configs. +# Common filenames at the path2cfg root. +_COMMON_TRAINING = "training.gin" +_COMMON_TRACKING = "tracking.gin" +_COMMON_HARDWARE_DEFAULT = "hardware_default.gin" +_COMMON_HARDWARE_NO_GRADCKPT = "hardware_no_gradckpt.gin" + +# Files a preset must always have locally (in //). +_LOCAL_REQUIRED = ("pipeline.gin", "models.gin") + +# Files that can optionally be overridden locally; if present in the preset +# directory, they win over the common version. +_LOCAL_OVERRIDABLE = ("training.gin", "hardware.gin", "tracking.gin") + + +def load_all_configs(path2cfg: str, preset_name: str) -> dict[str, Any]: + """Parse common gin files + preset gin files and return all configs. Args: - path2cfg: Path to a preset directory ending with '/', e.g. - '/home/user/caption-test/in/config_files/'. + path2cfg: Path to in/config_files/ (per REQUIREMENTS_GIN_STYLE.md §5). + Must contain training.gin, hardware_default.gin, + hardware_no_gradckpt.gin, tracking.gin at its root, plus + per-preset subdirectories. + preset_name: Name of the preset subdirectory under path2cfg, e.g. + 'gtauav_balanced'. Returns: - Dict with keys: - 'pipeline' → PipelineConfig - 'hardware' → HardwareConfig - 'training' → TrainingConfig - 'tracking' → TrackingConfig - 'models_common' → ModelsCommonConfig - 'models' → DINOv3 | StripNet | SOFIAv1 | SOFIAv71 ModelsConfig - (selected by models_common.backbone) + Dict with keys: 'pipeline', 'hardware', 'training', 'tracking', + 'models_common', 'models'. Raises: - FileNotFoundError: If path2cfg contains no .gin files. - ValueError: If models_common.backbone is not one of the known values. + FileNotFoundError: If path2cfg, preset directory, or a required file is missing. + ValueError: If models_common.backbone is not a known value. """ - cfg_dir = Path(path2cfg) - gin_files = sorted(cfg_dir.glob("*.gin")) - if not gin_files: - raise FileNotFoundError(f"No .gin files found in {cfg_dir}") + common_dir = Path(path2cfg) + preset_dir = common_dir / preset_name - # MANDATORY: reset gin global state — without clear_config(), bindings - # from previous parses accumulate. + # Sanity checks. + if not common_dir.is_dir(): + raise FileNotFoundError( + f"Config root not found: {common_dir}. " + f"Per REQUIREMENTS_GIN_STYLE.md §5, this should be " + f"/in/config_files/.", + ) + if not preset_dir.is_dir(): + raise FileNotFoundError( + f"Preset directory not found: {preset_dir}. " + f"Available presets in {common_dir}: " + f"{sorted(d.name for d in common_dir.iterdir() if d.is_dir())}", + ) + for required in _LOCAL_REQUIRED: + if not (preset_dir / required).is_file(): + raise FileNotFoundError( + f"Preset {preset_name} is missing required file '{required}' " + f"(looked in {preset_dir})", + ) + + # ===== Pass 1: peek at models.gin to learn the backbone. ===== + gin.clear_config() + gin.parse_config_file(str(preset_dir / "models.gin")) + backbone = ModelsCommonConfig().backbone + if backbone not in _BACKBONE_TO_MODELS_CLS: + raise ValueError( + f"Unknown backbone={backbone!r} in {preset_dir / 'models.gin'}; " + f"expected one of {sorted(_BACKBONE_TO_MODELS_CLS)}", + ) + + # ===== Pass 2: build the full file list and parse in one batch. ===== + # Order: common first, preset locals last (so locals win on overrides). + gin_files: list[Path] = [ + common_dir / _COMMON_TRAINING, + common_dir / ( + _COMMON_HARDWARE_NO_GRADCKPT if backbone in _NO_GRADCKPT_BACKBONES + else _COMMON_HARDWARE_DEFAULT + ), + common_dir / _COMMON_TRACKING, + # Always-required preset locals. + preset_dir / "pipeline.gin", + preset_dir / "models.gin", + ] + + # Optional preset overrides (rare). + for overridable in _LOCAL_OVERRIDABLE: + local = preset_dir / overridable + if local.is_file(): + gin_files.append(local) + logger.info("Preset %s overrides %s locally", preset_name, overridable) + + # Sanity: all chosen files must exist. + for f in gin_files: + if not f.is_file(): + raise FileNotFoundError(f"Required gin file not found: {f}") + + # MANDATORY: clear gin global state before parsing. gin.clear_config() gin.parse_config_files_and_bindings( config_files=[str(f) for f in gin_files], bindings=[], ) - logger.info("Loaded %d gin files from %s", len(gin_files), cfg_dir) + logger.info( + "Loaded preset %s with %d gin files (backbone=%s)", + preset_name, len(gin_files), backbone, + ) - # Build common first to learn which backbone to use. + # Build all configs from gin global state. models_common = ModelsCommonConfig() - if models_common.backbone not in _BACKBONE_TO_MODELS_CLS: - raise ValueError( - f"Unknown backbone={models_common.backbone!r}; " - f"expected one of {sorted(_BACKBONE_TO_MODELS_CLS)}", - ) models_specific = _BACKBONE_TO_MODELS_CLS[models_common.backbone]() return { diff --git a/tests/test_config_loader.py b/tests/test_config_loader.py new file mode 100644 index 0000000..56c3b2c --- /dev/null +++ b/tests/test_config_loader.py @@ -0,0 +1,125 @@ +"""Tests for config_loader.load_all_configs with _common/ + preset structure.""" + +from __future__ import annotations +from pathlib import Path +import pytest +from src.conf.config_loader import load_all_configs + + +def _make_minimal_preset_layout(root: Path) -> None: + """Create _common/ + base files matching the production layout.""" + common = root / "_common" + common.mkdir() + (common / "training.gin").write_text("TrainingConfig.tau_init = 0.07\n") + (common / "hardware_default.gin").write_text("HardwareConfig.batch_size = 8\n") + (common / "hardware_no_gradckpt.gin").write_text( + "HardwareConfig.batch_size = 8\n" + "HardwareConfig.gradient_checkpointing = False\n", + ) + (common / "tracking.gin").write_text("TrackingConfig.use_tb = True\n") + + +def _make_preset(root: Path, name: str, models_body: str, output_dir: str) -> None: + """Create a preset directory with required pipeline.gin + models.gin.""" + preset = root / name + preset.mkdir() + (preset / "pipeline.gin").write_text( + f"PipelineConfig.output_dir = '{output_dir}'\n", + ) + (preset / "models.gin").write_text(models_body) + + +def test_load_returns_six_keys(tmp_path: Path) -> None: + """load_all_configs returns the 6 expected keys.""" + _make_minimal_preset_layout(tmp_path) + _make_preset( + tmp_path, "test_dinov3", + models_body="ModelsCommonConfig.backbone = 'dinov3'\n", + output_dir="out/test_dinov3", + ) + + cfgs = load_all_configs("test_dinov3", str(tmp_path)) + assert set(cfgs.keys()) == { + "pipeline", "hardware", "training", "tracking", "models_common", "models", + } + assert cfgs["pipeline"].output_dir == "out/test_dinov3" + assert cfgs["models_common"].backbone == "dinov3" + + +def test_sofia_uses_no_gradckpt_hardware(tmp_path: Path) -> None: + """Sofia backbones get hardware_no_gradckpt.gin (gradient_checkpointing=False).""" + _make_minimal_preset_layout(tmp_path) + _make_preset( + tmp_path, "test_sofia", + models_body="ModelsCommonConfig.backbone = 'sofia_v71'\n", + output_dir="out/test_sofia", + ) + + cfgs = load_all_configs("test_sofia", str(tmp_path)) + assert cfgs["hardware"].gradient_checkpointing is False + + +def test_dinov3_uses_default_hardware(tmp_path: Path) -> None: + """DINOv3/StripNet backbones get hardware_default.gin (gradient_checkpointing=True default).""" + _make_minimal_preset_layout(tmp_path) + # Override gradient_checkpointing=True in default profile to test routing. + (tmp_path / "_common" / "hardware_default.gin").write_text( + "HardwareConfig.batch_size = 8\n" + "HardwareConfig.gradient_checkpointing = True\n", + ) + _make_preset( + tmp_path, "test_dinov3_hw", + models_body="ModelsCommonConfig.backbone = 'dinov3'\n", + output_dir="out/test_dinov3_hw", + ) + cfgs = load_all_configs("test_dinov3_hw", str(tmp_path)) + assert cfgs["hardware"].gradient_checkpointing is True + + +def test_local_override_wins(tmp_path: Path) -> None: + """Local training.gin in preset dir overrides _common/training.gin.""" + _make_minimal_preset_layout(tmp_path) + _make_preset( + tmp_path, "test_override", + models_body="ModelsCommonConfig.backbone = 'dinov3'\n", + output_dir="out/test_override", + ) + # Drop a local training.gin that overrides tau_init. + (tmp_path / "test_override" / "training.gin").write_text( + "TrainingConfig.tau_init = 0.123\n", + ) + + cfgs = load_all_configs("test_override", str(tmp_path)) + assert cfgs["training"].tau_init == 0.123 + + +def test_unknown_backbone_raises(tmp_path: Path) -> None: + """Invalid backbone string in models.gin → ValueError.""" + _make_minimal_preset_layout(tmp_path) + _make_preset( + tmp_path, "test_bad", + models_body="ModelsCommonConfig.backbone = 'mistral_42b'\n", + output_dir="out/bad", + ) + + with pytest.raises(ValueError, match="Unknown backbone"): + load_all_configs("test_bad", str(tmp_path)) + + +def test_missing_preset_raises(tmp_path: Path) -> None: + """Non-existent preset directory → FileNotFoundError.""" + _make_minimal_preset_layout(tmp_path) + with pytest.raises(FileNotFoundError, match="Preset directory not found"): + load_all_configs("nonexistent", str(tmp_path)) + + +def test_missing_required_file_raises(tmp_path: Path) -> None: + """Preset missing pipeline.gin → FileNotFoundError.""" + _make_minimal_preset_layout(tmp_path) + bad_preset = tmp_path / "test_bad_preset" + bad_preset.mkdir() + (bad_preset / "models.gin").write_text("ModelsCommonConfig.backbone = 'dinov3'\n") + + with pytest.raises(FileNotFoundError, match="missing required file 'pipeline.gin'"): + load_all_configs("test_bad_preset", str(tmp_path)) +