Files
caption-test/conf/gtauav_baseline.gin
pikaliov 8f8cbb14dd Diagnostic baseline v2: also disable MoCo queue
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>
2026-04-25 05:57:14 +03:00

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