The mutex-only run still collapsed at epoch 1 — same pattern as the DSS run. Val loss locks to log(8) ≈ 2.08 (uniform over the in-batch sat), train loss grows monotonically (4.80 → 5.56), train R@1 drops 7.79% → 0.34%. Mode collapse, not sampler-induced. The smoking gun is the queue: WeightedInfoNCELoss (the OLD-run loss) silently ignored `queue_negatives`, so the OLD-run effective task was in-batch-only contrast against 8 negatives. Switching to InfoNCELoss made the queue active — 4096 stale embeddings without a momentum encoder to keep them consistent with the live model. With the trimmed adapter surface (MONA in last 12/24 blocks → 3.5M trainable), the model can't reconcile fresh representations against stale negatives and collapses. Disable the queue entirely (`neg_bank_size = 0`). Matches OLD's effective setup — same 8 in-batch negatives, but with the new SymmetricInfoNCE + mutex sampler + tau clamp 0.1 + per-sample mask + full-gallery eval. Output → `out/gtauav/baseline_inbatch` (separate from the failed mutex run). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
29 lines
1.4 KiB
Plaintext
29 lines
1.4 KiB
Plaintext
# GTA-UAV Baseline: no text fusion (gate forced to 1.0).
|
|
# query = drone_only -> InfoNCE vs satellite
|
|
# Reference R@1 for delta computation.
|
|
#
|
|
# Diagnostic mode (2026-04-24): DSS and hard-negative mining disabled after
|
|
# the previous run collapsed (R@1 = 0.6% at epoch 8, train loss growing).
|
|
# Hypothesis: DSS packs visually-identical drones at bs=8 and the hard-mining
|
|
# queue amplifies that hardness — together they prevent convergence from a
|
|
# nearly-random start. Run with mutex-only sampling and the full queue as
|
|
# uniform negatives first, restore the extras incrementally once baseline
|
|
# converges.
|
|
|
|
include 'conf/gtauav_balanced.gin'
|
|
|
|
TrainConfigGTAUAV.baseline_mode = True
|
|
TrainConfigGTAUAV.output_dir = "out/gtauav/baseline_inbatch"
|
|
TrainConfigGTAUAV.use_gradcam = False
|
|
|
|
# ---- Diagnostic overrides ----
|
|
# Previous mutex-only run still collapsed at epoch 1 (val loss locked at log(8)).
|
|
# Hypothesis refined: the MoCo-style queue stays stale because we have no
|
|
# momentum encoder, and with reduced trainable surface (MONA-12) the model
|
|
# can't reconcile fresh representations against 4096 stale negatives —
|
|
# mode collapse. Disable the queue entirely so InfoNCE sees only the 8
|
|
# fresh in-batch negatives, matching the OLD run's effective setup.
|
|
TrainConfigGTAUAV.sampler_type = "mutex" # was "dss"
|
|
TrainConfigGTAUAV.neg_bank_size = 0 # was 4096 — disable MoCo queue (no momentum encoder)
|
|
InfoNCELoss.hard_mining_k = 0 # was 512 — irrelevant when queue is empty
|