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>
This commit is contained in:
@@ -13,9 +13,16 @@
|
||||
include 'conf/gtauav_balanced.gin'
|
||||
|
||||
TrainConfigGTAUAV.baseline_mode = True
|
||||
TrainConfigGTAUAV.output_dir = "out/gtauav/baseline_mutex"
|
||||
TrainConfigGTAUAV.output_dir = "out/gtauav/baseline_inbatch"
|
||||
TrainConfigGTAUAV.use_gradcam = False
|
||||
|
||||
# ---- Diagnostic overrides ----
|
||||
TrainConfigGTAUAV.sampler_type = "mutex" # was "dss" — disable hard-batch construction
|
||||
InfoNCELoss.hard_mining_k = 0 # was 512 — use full queue without per-query top-K
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user