-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexperiments.jsonl
More file actions
66 lines (66 loc) · 18.8 KB
/
Copy pathexperiments.jsonl
File metadata and controls
66 lines (66 loc) · 18.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{"exp": 1, "hypothesis": "baseline run with starting hyperparameters to establish the bar.", "val_bpb": 6.7882, "result": "IMPROVED", "changes": "baseline: depth=4, d_model=192, n_heads=6, dropout=0.1, lr=3e-4, wd=0.1"}
{"exp": 2, "hypothesis": "Severe train/val gap (1.25 nats vs 6.79 bpb) suggests overfitting; raising dropout should regularize.", "val_bpb": 6.7546, "result": "IMPROVED", "changes": "DROPOUT 0.1 -> 0.3"}
{"exp": 3, "hypothesis": "Model has more parameters than tokens; shrinking d_model and heads reduces capacity and should beat just adding dropout.", "val_bpb": 6.6995, "result": "IMPROVED", "changes": "D_MODEL 192->128, N_HEADS 6->4"}
{"exp": 4, "hypothesis": "More weight decay should regularize further. Risk acknowledged.", "val_bpb": 6.7441, "result": "REGRESSED", "changes": "WEIGHT_DECAY 0.1 -> 0.5"}
{"exp": 5, "hypothesis": "Existing dropout only acts inside attention; adding residual+embedding dropout regularizes the rest of the stack and should beat any single-knob tweak.", "val_bpb": 6.2199, "result": "IMPROVED", "changes": "added nn.Dropout after attn residual, after FFN residual, and on token+pos embedding"}
{"exp": 6, "hypothesis": "DROPOUT=0.3 was tuned when only attention had dropout; now that it applies at 3 sites, total regularization is too strong.", "val_bpb": 6.1732, "result": "IMPROVED", "changes": "DROPOUT 0.3 -> 0.2"}
{"exp": 7, "hypothesis": "Strong regularization should let us add depth (4 -> 6).", "val_bpb": 6.5905, "result": "REGRESSED", "changes": "DEPTH 4 -> 6"}
{"exp": 8, "hypothesis": "Training was still descending at the end of the budget; higher peak LR (3e-4 -> 6e-4) should converge further inside 300s now that strong regularization is in place.", "val_bpb": 6.0065, "result": "IMPROVED", "changes": "LEARNING_RATE 3e-4 -> 6e-4"}
{"exp": 9, "hypothesis": "With residual dropout and higher LR in place, the wider d_model=192 may now be trainable.", "val_bpb": 6.3228, "result": "REGRESSED", "changes": "D_MODEL 128 -> 192, N_HEADS 4 -> 6"}
{"exp": 10, "hypothesis": "Higher LR=6e-4 may benefit from longer warmup. Bump WARMUP_STEPS 100 -> 200.", "val_bpb": 6.0866, "result": "REGRESSED", "changes": "WARMUP_STEPS 100 -> 200"}
{"exp": 11, "hypothesis": "Dataset 3.7x larger (53K -> 198K tokens). Dropout=0.2 was tuned for repetitive overfitting; with diverse data, lowering DROPOUT to 0.1 should let the model fit more without overfitting.", "val_bpb": 4.1787, "result": "IMPROVED", "changes": "DROPOUT 0.2 -> 0.1 (combined with 3.7x dataset expansion)"}
{"exp": 12, "hypothesis": "More data per step may now justify deeper model that exp-007 couldn't afford.", "val_bpb": 4.7146, "result": "REGRESSED", "changes": "DEPTH 4 -> 6"}
{"exp": 13, "hypothesis": "Train loss still 2.6 with significant fit headroom; reducing dropout further should let the model fit more.", "val_bpb": 3.7627, "result": "IMPROVED", "changes": "DROPOUT 0.1 -> 0.05"}
{"exp": 14, "hypothesis": "Train still descending; higher peak LR (6e-4 -> 1e-3) should converge further within budget.", "val_bpb": 3.5184, "result": "IMPROVED", "changes": "LEARNING_RATE 6e-4 -> 1e-3"}
{"exp": 15, "hypothesis": "With LR=1e-3 and lower dropout, wider d_model=192 may now converge in budget.", "val_bpb": 4.0191, "result": "REGRESSED", "changes": "D_MODEL 128 -> 192, N_HEADS 4 -> 6"}
{"exp": 16, "hypothesis": "Capacity attempts are compute-bound; halving TOTAL_BATCH_SIZE doubles step count without changing model size.", "val_bpb": 3.7106, "result": "REGRESSED", "changes": "TOTAL_BATCH_SIZE 2**14 -> 2**13"}
{"exp": 17, "hypothesis": "Bigger DEVICE_BATCH improves GPU throughput while keeping gradient quality at TOTAL_BATCH; should give more steps for free.", "val_bpb": 3.5807, "result": "REGRESSED", "changes": "DEVICE_BATCH_SIZE 16 -> 32"}
{"exp": 18, "hypothesis": "Dropout has improved at every reduction; with abundant data, 0 may be optimal.", "val_bpb": 4.7281, "result": "REGRESSED", "changes": "DROPOUT 0.05 -> 0.0"}
{"exp": 19, "hypothesis": "LR 1e-3 -> 1.5e-3 to push LR ceiling further; exp-014 showed train still descending.", "val_bpb": 3.8130, "result": "REGRESSED", "changes": "LEARNING_RATE 1e-3 -> 1.5e-3"}
{"exp": 20, "hypothesis": "Dropout=0.05 already provides regularization and data is abundant; lower WEIGHT_DECAY should let weights fit more without overfitting.", "val_bpb": 3.4955, "result": "IMPROVED", "changes": "WEIGHT_DECAY 0.1 -> 0.05"}
{"exp": 21, "hypothesis": "Continue WD reduction direction; if 0.05 helped, 0.02 may help more.", "val_bpb": 3.8409, "result": "REGRESSED", "changes": "WEIGHT_DECAY 0.05 -> 0.02"}
{"exp": "REGIME_CHANGE", "note": "TRAIN_BUDGET_SEC 300 -> 1800 (30 min). Prior results not directly comparable; warm-starting from exp-020 best (WD=0.05, LR=1e-3, dropout=0.05, D_MODEL=128, DEPTH=4, val_bpb=3.4955 at 300s)."}
{"exp": 22, "hypothesis": "Re-baseline current best at 1800s budget to disentangle compute from config.", "val_bpb": 6.3638, "result": "REGRESSED", "changes": "no config change, budget 300s -> 1800s. Train loss collapsed to 0.12 (memorization)."}
{"exp": 23, "hypothesis": "1800s budget gave 6x more steps to memorize; restore strong regularization with DROPOUT 0.2.", "val_bpb": 3.4927, "result": "IMPROVED", "changes": "DROPOUT 0.05 -> 0.2 (paired with 1800s budget)"}
{"exp": 24, "hypothesis": "With 1800s budget and DROPOUT=0.2, wider D_MODEL=192 should now converge.", "val_bpb": 5.0864, "result": "REGRESSED", "changes": "D_MODEL 128 -> 192, N_HEADS 4 -> 6. Train loss 0.22 — wider model memorized despite dropout."}
{"exp": 25, "hypothesis": "exp-023 train loss 0.72 still showed overfit room; pushing DROPOUT further should improve.", "val_bpb": 2.9034, "result": "IMPROVED", "changes": "DROPOUT 0.2 -> 0.3"}
{"exp": "REGIME_CHANGE", "note": "TRAIN_BUDGET_SEC 1800 -> 3600 (60 min, user-directed). Doubled compute increases memorization risk further; warm-starting from exp-025 best (DROPOUT=0.3, WD=0.05, LR=1e-3, D_MODEL=128, DEPTH=4, val_bpb=2.9034 at 1800s)."}
{"exp": 26, "hypothesis": "1800s -> 3600s budget doubles memorization risk; pushing DROPOUT 0.3 -> 0.4 should counter it (mirrors how 0.2 -> 0.3 worked at the 300s -> 1800s regime change).", "val_bpb": 2.7712, "result": "IMPROVED", "changes": "DROPOUT 0.3 -> 0.4 (paired with 3600s budget)"}
{"exp": 27, "hypothesis": "DROPOUT has improved monotonically at this regime (0.2 -> 0.3 -> 0.4); pushing to 0.5 may continue the trend or find the ceiling.", "val_bpb": 3.2986, "result": "REGRESSED", "changes": "DROPOUT 0.4 -> 0.5. Underfit (train loss ~1.99 vs exp-026's 1.37) — found the regularization ceiling at this regime."}
{"exp": 28, "hypothesis": "With DROPOUT=0.4 providing strong regularization at 3600s, modestly increasing DEPTH 4 -> 5 adds capacity without the failure mode of DEPTH=6 at lower budgets/dropout (exp-007, exp-012).", "val_bpb": 2.6983, "result": "IMPROVED", "changes": "DEPTH 4 -> 5"}
{"exp": 29, "hypothesis": "exp-028 showed DEPTH 4->5 IMPROVED at 3600s/DROPOUT=0.4; pushing DEPTH 5->6 should continue the capacity-increase trend now that prior DEPTH=6 failures (exp-007, exp-012) were at lower budget/dropout regimes.", "val_bpb": 2.7620, "result": "REGRESSED", "changes": "DEPTH 5 -> 6. Train loss 1.02 (vs exp-028 ~1.37) — deeper model overfit despite DROPOUT=0.4."}
{"exp": 30, "hypothesis": "DEPTH=6 (exp-029) overfit, but wider FFN per layer is a different capacity dimension that SwiGLU FFNs typically benefit from; D_FF_MULT 4->6 may avoid the depth-specific failure mode.", "val_bpb": 3.0848, "result": "REGRESSED", "changes": "D_FF_MULT 4 -> 6. Train loss ~1.00 (similar to exp-029). Wider FFN overfit similarly to deeper model — capacity is saturated at this dropout level."}
{"exp": 31, "hypothesis": "Capacity is saturated; pivot to training dynamics. WARMUP_STEPS=100 (~0.7% of ~14K steps) is short for the 3600s/high-dropout regime; raising to 1000 (~7%) follows modern LLM practice and may stabilize noisy-grad training.", "val_bpb": 2.7169, "result": "REGRESSED", "changes": "WARMUP_STEPS 100 -> 1000. Train loss ~1.18, 16256 steps. Slightly worse — at this regime longer warmup wastes early-training signal."}
{"exp": 32, "hypothesis": "DROPOUT=0.4 was tuned at DEPTH=4 (exp-026); with DEPTH=5 having more capacity, the dropout sweet spot may shift higher. 0.45 sits between exp-028's 0.4 (works) and exp-027's 0.5 (underfit at DEPTH=4).", "val_bpb": 2.7471, "result": "REGRESSED", "changes": "DROPOUT 0.4 -> 0.45. Train loss 1.40 (vs ~1.25 for exp-028). Slightly underfit — dropout sweet spot at DEPTH=5 is still 0.4."}
{"exp": 33, "hypothesis": "Cosine decay to 0 wastes last ~10% of training (lr ≈ 0); decaying to 10% of peak keeps optimization meaningful through end and may find a better minimum.", "val_bpb": 2.8731, "result": "REGRESSED", "changes": "cosine decay min_lr 0 -> 0.1*peak (1e-4 floor). Train loss 1.15. Sustained lr prevented settling into sharp minimum — cosine-to-zero is actually beneficial."}
{"exp": 34, "hypothesis": "AdamW beta2=0.95 (nanoGPT default) is tuned for short runs; with 14K steps and DROPOUT=0.4 producing high-variance grads, beta2=0.99 (standard AdamW default) gives smoother second-moment estimate and may stabilize updates.", "val_bpb": 2.7746, "result": "REGRESSED", "changes": "AdamW betas (0.9, 0.95) -> (0.9, 0.99). Train loss 1.15. Smoother variance estimate didn't help — beta2=0.95 is already well-suited for this regime."}
{"exp": "REGIME_CHANGE", "note": "Dataset expanded 10K -> 28K pairs (198K -> 427K train tokens, 22K -> 47K val tokens) via data/gen_diverse.py — 18K new pairs across animals, food, tools, nature, professions, body parts, household items, vehicles, abstractions. Tokenizer retrained. Prior results not directly comparable; warm-starting from exp-028 best config (DEPTH=5, DROPOUT=0.4, LR=1e-3, WD=0.05). Also fixed prepare.py:save_checkpoint bug that was clobbering best.pt on regressions."}
{"exp": 35, "hypothesis": "Dataset 2.16x larger; mirror exp-011 logic (more data -> less dropout). Multi-knob: DEPTH 5->6 (capacity that overfit before should now fit) + DROPOUT 0.4->0.2 (less reg needed at richer data). Tests whether prior DEPTH=6 overfit was data-limited.", "val_bpb": 2.5344, "result": "IMPROVED", "changes": "DEPTH 5->6 + DROPOUT 0.4->0.2 (paired with 28K-pair dataset). Train loss 0.88. Validates: prior DEPTH=6 failure was data-bottlenecked, not architectural."}
{"exp": "REGIME_CHANGE", "note": "Replaced dataset entirely (templated 28K -> natural 8.7K). 8K sentences from sentence-transformers/all-nli transformed by Claude Haiku via batch CLI calls + 720 gold from dvgodoy/yoda_sentences. Tokens: 196K train / 22K val (similar absolute size to original 198K but much higher diversity and natural English distribution). Tokenizer retrained. Prior templated-data results not comparable — restarting eval cycle. Removed gen_diverse.py (templated generator no longer used)."}
{"exp": "REGIME_CHANGE", "note": "Architecture pivot to encoder-decoder (4-hour demo). Decoder-only GPT replaced with TinyT5-style enc-dec with cross-attention from decoder to source. Rationale: Yoda OSV is a translation task; decoder-only had to regenerate every token through softmax with no mechanism to attend to source. New arch has bidirectional encoder over source + causal decoder with cross-attention. Also TRAIN_BUDGET_SEC 3600 -> 180 to enable visible iteration during demo. Prior val_bpb numbers not comparable."}
{"exp": 38, "hypothesis": "Encoder-decoder with cross-attention is the right architecture for Yoda OSV translation: decoder can directly attend to source words instead of regenerating them. Baseline at enc=4/dec=4/d_model=128/dropout=0.2 establishes the new metric.", "val_bpb": 0.7131, "result": "IMPROVED", "changes": "ARCH PIVOT: GPT decoder-only -> EncoderDecoder (4 enc layers + 4 dec layers, cross-attention). 2.6M params. 4513 steps in 180s. New metric baseline."}
{"exp": 39, "hypothesis": "180s budget yields ~4500 steps with loss still ~1.4 at end; higher peak LR (7e-4 -> 1.5e-3) should converge more inside budget.", "val_bpb": 0.8095, "result": "REGRESSED", "changes": "LEARNING_RATE 7e-4 -> 1.5e-3. Loss climbed to ~1.8 (vs baseline ~1.4) — too aggressive at this scale, training destabilized."}
{"exp": "REGIME_CHANGE", "note": "TRAIN_BUDGET_SEC 180 -> 600 (10 min). exp-038 baseline (val_bpb=0.7131) at 180s no longer comparable. Re-baselining at 10 min with default config (DEPTH 4+4, DROPOUT=0.2, LR=7e-4)."}
{"exp": 41, "hypothesis": "Re-baseline at 10-min budget after regime change. Default encoder-decoder config (enc=4, dec=4, d_model=128, dropout=0.2, lr=7e-4).", "val_bpb": 0.4141, "result": "IMPROVED", "changes": "no config change vs exp-038 baseline; new 600s budget. 14914 steps, train loss 0.34. New reference for 10-min regime."}
{"exp": 42, "hypothesis": "exp-041 train loss 0.34 suggested headroom; lowering DROPOUT 0.2 -> 0.1 should let model fit more.", "val_bpb": 0.5727, "result": "REGRESSED", "changes": "DROPOUT 0.2 -> 0.1. Train loss collapsed to 0.06 — clear overfit. Reverted."}
{"exp": 43, "hypothesis": "exp-042 overfit at DROPOUT=0.1; pushing the other way (0.2 -> 0.3) should improve val.", "val_bpb": 0.4565, "result": "REGRESSED", "changes": "DROPOUT 0.2 -> 0.3. Train loss 0.6 (vs baseline 0.34) — overshot, mild underfit. DROPOUT=0.2 is the sweet spot."}
{"exp": 44, "hypothesis": "DROPOUT=0.2 is sweet spot; add capacity. DEPTH_ENC+DEPTH_DEC 4+4 -> 5+5.", "val_bpb": 0.4601, "result": "REGRESSED", "changes": "DEPTH 4+4 -> 5+5. Steps dropped to 13275 (vs 14914), train loss 0.49 — slower steps + underfit in budget. Reverted."}
{"exp": 45, "hypothesis": "exp-039 LR=1.5e-3 too high, baseline LR=7e-4 may be conservative; LR 7e-4 -> 1e-3 between two extremes.", "val_bpb": 0.4372, "result": "REGRESSED", "changes": "LEARNING_RATE 7e-4 -> 1e-3. Train loss 0.58 (vs baseline 0.34) — slightly destabilized. LR=7e-4 is the sweet spot."}
{"exp": "REGIME_CHANGE", "note": "Tokenizer overhaul: VOCAB 2048 -> 4096, added GPT-2-style pre-tokenization regex (no merges across word/punct boundaries), added dedicated PAD/BOS/EOS special tokens (4093/4094/4095). Tokenizer now trained on raw en+yoda sentences instead of wrapped format. Sample: 'The robot fixed the broken engine.' tokenizes to 11 tokens. Prior val_bpb numbers not comparable (different vocab + different tokenization)."}
{"exp": 46, "hypothesis": "Re-baseline at new tokenizer regime (vocab 4096 + pre-tok + special tokens). Default config to establish reference for the new tokenizer.", "val_bpb": 0.4337, "result": "IMPROVED", "changes": "no config change vs exp-041 baseline; new tokenizer regime. 15284 steps, train loss 0.34. New reference for vocab=4096 regime."}
{"exp": 47, "hypothesis": "Translation is mostly syntactic reorder with strong copy prior — a much smaller model may suffice. Aggressive size reduction for ONNX/browser deployment.", "val_bpb": 0.4316, "result": "IMPROVED", "changes": "D_MODEL 128->64, N_HEADS 4->2, DEPTH_ENC 4->2, DEPTH_DEC 4->3, D_FF_MULT 4->2. 525K params (5x smaller). 20084 steps in budget (vs 15284). val_bpb slightly improved despite size cut — confirms task doesn't need 2.9M params."}
{"exp": 48, "hypothesis": "Decoder does the harder work (cross-attn + generation); push DEPTH_DEC 3->4 to give it more capacity while keeping encoder small.", "val_bpb": 0.5025, "result": "REGRESSED", "changes": "DEPTH_DEC 3 -> 4. 583K params, 16598 steps (vs 20084). Slower convergence outweighed capacity gain. Reverted."}
{"exp": 49, "hypothesis": "Modest FFN bump may help: D_FF_MULT 2 -> 3 (between underfit-prone 2 and full 4).", "val_bpb": 0.4783, "result": "REGRESSED", "changes": "D_FF_MULT 2 -> 3. 587K params, 19506 steps. Wider FFN didn't help in budget. Reverted."}
{"exp": 50, "hypothesis": "Small model may underfit at DROPOUT=0.2; lower to 0.15.", "val_bpb": 0.4740, "result": "REGRESSED", "changes": "DROPOUT 0.2 -> 0.15. 17706 steps. Val regressed — small model also wants DROPOUT=0.2. Reverted."}
{"exp": 51, "hypothesis": "Lower LR (7e-4 -> 5e-4) for finer convergence at small config.", "val_bpb": 0.5054, "result": "REGRESSED", "changes": "LEARNING_RATE 7e-4 -> 5e-4. 19434 steps. Underfit. LR=7e-4 is sweet spot. Reverted."}
{"exp": 52, "hypothesis": "Larger batches yield cleaner gradients; DEVICE_BATCH 32 -> 64.", "val_bpb": 0.4332, "result": "REGRESSED", "changes": "DEVICE_BATCH_SIZE 32 -> 64. 19142 steps. Marginal regression (0.4316 -> 0.4332). Reverted."}
{"exp": 53, "hypothesis": "N_HEADS 2 -> 4 at D_MODEL=64 (head_dim 32->16) gives more diverse attention. Also restored DROPOUT=0.2.", "val_bpb": 0.4590, "result": "REGRESSED", "changes": "N_HEADS 2 -> 4 + DROPOUT 0.15 -> 0.2. 19869 steps. More heads didn't help. Reverted."}
{"exp": 54, "hypothesis": "Label smoothing prevents overconfidence; LS 0 -> 0.1 may improve generalization.", "val_bpb": 0.5570, "result": "REGRESSED", "changes": "LABEL_SMOOTHING 0 -> 0.1 + DROPOUT 0.15 -> 0.2 (restoring proven best). 19821 steps. LS hurt val_bpb directly (val measures hard-target CE; LS biases logits flatter). Reverted."}
{"exp": 55, "hypothesis": "Shorter warmup gives more steps at peak LR; WARMUP_STEPS 300 -> 100. Also restored DROPOUT=0.2.", "val_bpb": 0.4873, "result": "REGRESSED", "changes": "WARMUP_STEPS 300 -> 100 + DROPOUT 0.15 -> 0.2. 18385 steps. Shorter warmup destabilized early training. Reverted."}
{"exp": 56, "hypothesis": "More L2 regularization: WEIGHT_DECAY 0.05 -> 0.1. Also restore DROPOUT=0.2.", "val_bpb": 0.5401, "result": "REGRESSED", "changes": "WEIGHT_DECAY 0.05 -> 0.1 + DROPOUT 0.15 -> 0.2. 16932 steps. Combined regularization too aggressive. Reverted."}
{"exp": 57, "hypothesis": "Less L2: WEIGHT_DECAY 0.05 -> 0.02 (DROPOUT already regularizing).", "val_bpb": 0.4720, "result": "REGRESSED", "changes": "WEIGHT_DECAY 0.05 -> 0.02. 16281 steps. Less reg hurt val. WD=0.05 sweet spot. Reverted."}
{"exp": 58, "hypothesis": "Encoder may benefit from one more layer for richer source representation; DEPTH_ENC 2 -> 3.", "val_bpb": 0.4872, "result": "REGRESSED", "changes": "DEPTH_ENC 2 -> 3. 566K params, 17890 steps. Slower convergence outweighed encoder capacity gain. Reverted."}
{"exp": 59, "hypothesis": "D_MODEL 64 -> 96 (50% wider) for more lexical detail capacity (e.g., better copying of capital-letter words like 'She').", "val_bpb": 0.4269, "result": "IMPROVED", "changes": "D_MODEL 64 -> 96. 978K params (vs 525K). 18548 steps. Better lexical capacity beat smaller-but-more-steps tradeoff."}
{"exp": 60, "hypothesis": "At D_MODEL=96, N_HEADS 2 -> 4 gives more attention diversity (head_dim 48 -> 24).", "val_bpb": 0.4118, "result": "IMPROVED", "changes": "N_HEADS 2 -> 4 at D_MODEL=96. 978K params (same), 19166 steps. More attention heads helps at this width."}
{"exp": 61, "hypothesis": "Wider FFN at D_MODEL=96: D_FF_MULT 2 -> 3 (modest capacity bump).", "val_bpb": 0.4161, "result": "REGRESSED", "changes": "D_FF_MULT 2 -> 3. 1.1M params, 22327 steps. Slight regression (0.4118 -> 0.4161). Reverted."}
{"exp": 62, "hypothesis": "At D_MODEL=96 with extra capacity headroom, decoder benefits from one more layer; DEPTH_DEC 3 -> 4.", "val_bpb": 0.4052, "result": "IMPROVED", "changes": "DEPTH_DEC 3 -> 4. 1.1M params, 19686 steps. Decoder benefits from depth at this width."}