Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions DEVLOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,32 @@

---

## 2026-09-23 (夜):兩條學習曲線與 OOS 消融完成

### 本次工作 / 執行摘要
- 協定凍結後(lr 5e-5、S_min 400、5 epochs)依序單獨執行,每條以程式印出的完成行為證據(不看離開碼):
- `make curve MODEL=bert`:`completed 18/18 encoder points (bert)`,18:26 到 19:24。k=1 到 50 的 15 點新訓練;k=100 的 3 點重用 AC2(判定為等價 run,archive 完整)。
- `make curve MODEL=modernbert`:`completed 18/18 encoder points (modernbert)`,19:25 到 21:47,18 點全部新訓練。
- `make oos-ablation`:`completed 3/3 ablation points`,21:48 到 22:47(ModernBERT、k=100、OOS 訓練 0 筆 × 3 seeds)。
- `make verify-logits`:75 個 archive 全部與 manifest SHA-256 一致(AC2 3 + 基準 36 + BERT 新 15 + ModernBERT 18 + 消融 3)。
- 曲線權重全部刪除,只保留 logits。

### 核心發現 / 數據
- (本條只記錄執行完成;數字分析在步驟 4 由分析程式從 logits 產生,不在此手抄)

### Blockers / 遇到的問題
- 第一次開跑(17:22)的 shell 迴圈在 zsh 下沒拆 `make $t`,兩條曲線沒跑卻 exit 0。PR #11 加上完成性檢查與 Makefile 無目標防護(`make "curve MODEL=bert"` 現在 exit 2),並有測試對應這次事故。

### Next
- [ ] logits 附到 GitHub Release
- [ ] 步驟 4:重跑 Haiku(需 `ANTHROPIC_API_KEY`,預算 ≤ US$5)→ 不確定性分析、fallback、oracle

### Files / Budget
- `results/curves/{bert,modernbert,oos-ablation}.json`、`results/runs/*.json`、`results/logits-manifest.json`
- API 花費:US$0

---

## 2026-09-23 (晚 2):S_min pilot(validation only),協定凍結

### 本次工作 / 執行摘要
Expand Down
315 changes: 315 additions & 0 deletions results/curves/bert.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,315 @@
{
"name": "bert",
"model_name": "google-bert/bert-base-uncased",
"model_revision": "86b5e0934494bd15c9632b12f734a8a67f723594",
"learning_rate": 5e-05,
"min_train_steps": 400,
"points": [
{
"k": 1,
"seed": 42,
"oos_train": null,
"run_name": "bert-base-uncased-k1-seed42",
"logits_file": "bert-base-uncased-k1-seed42.npz",
"logits_sha256": "33464fd83ba26e6de38f2df4a347659dc396c57d98ce9fca16b78ab31101da2d",
"train_rows": 153,
"oos_train_rows": 3,
"train_sample_sha256": "8f04aca1ffa32368a0e811795f70067f9d2b6d1551e10a3be5e08f5c954db166",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 400,
"epoch_steps": 25,
"decided_by": "min_train_steps",
"global_step": 400,
"reused_from": null
},
{
"k": 1,
"seed": 43,
"oos_train": null,
"run_name": "bert-base-uncased-k1-seed43",
"logits_file": "bert-base-uncased-k1-seed43.npz",
"logits_sha256": "de95f070e64b443b4761f3ca786da624343fe8a5dc20e3f341220333e586cff3",
"train_rows": 153,
"oos_train_rows": 3,
"train_sample_sha256": "4c659defaf9b9c6f28f4d5e67ef92b466627cdb200623552ba46ced1d2750c9c",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 400,
"epoch_steps": 25,
"decided_by": "min_train_steps",
"global_step": 400,
"reused_from": null
},
{
"k": 1,
"seed": 44,
"oos_train": null,
"run_name": "bert-base-uncased-k1-seed44",
"logits_file": "bert-base-uncased-k1-seed44.npz",
"logits_sha256": "db5595875d86d5b3476689bb5932f72bdb7651effb3686d8636cb308e8279881",
"train_rows": 153,
"oos_train_rows": 3,
"train_sample_sha256": "d69635e70893d70759a46fd0fa54561eae262653eca95898076348b9c660b96a",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 400,
"epoch_steps": 25,
"decided_by": "min_train_steps",
"global_step": 400,
"reused_from": null
},
{
"k": 5,
"seed": 42,
"oos_train": null,
"run_name": "bert-base-uncased-k5-seed42",
"logits_file": "bert-base-uncased-k5-seed42.npz",
"logits_sha256": "12e3d723ecbdeda888a687bd3b539ef5b8bc07515bd72f28293b0dfc4314f94d",
"train_rows": 763,
"oos_train_rows": 13,
"train_sample_sha256": "bfabf08971d3a16a502e25b2d5a7f1ce204504a526d5b3cb34fec9346dd8caa7",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 400,
"epoch_steps": 120,
"decided_by": "min_train_steps",
"global_step": 400,
"reused_from": null
},
{
"k": 5,
"seed": 43,
"oos_train": null,
"run_name": "bert-base-uncased-k5-seed43",
"logits_file": "bert-base-uncased-k5-seed43.npz",
"logits_sha256": "78dd86d8b8a700aa8986c7bf23fef4a99720a8f226df3e6d0d21d896cae3aa8a",
"train_rows": 763,
"oos_train_rows": 13,
"train_sample_sha256": "4e289193d9669c26c40d083246f6c34426bca5ff041ac526796a5f976ca9c638",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 400,
"epoch_steps": 120,
"decided_by": "min_train_steps",
"global_step": 400,
"reused_from": null
},
{
"k": 5,
"seed": 44,
"oos_train": null,
"run_name": "bert-base-uncased-k5-seed44",
"logits_file": "bert-base-uncased-k5-seed44.npz",
"logits_sha256": "175a274248600f6f85681b2e8a824dd9bf17f281782044110b1c3facb10f1da5",
"train_rows": 763,
"oos_train_rows": 13,
"train_sample_sha256": "ba57c52c7c416c611ba215bb10a393fba470ec511aaebad2b416914ca674988d",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 400,
"epoch_steps": 120,
"decided_by": "min_train_steps",
"global_step": 400,
"reused_from": null
},
{
"k": 10,
"seed": 42,
"oos_train": null,
"run_name": "bert-base-uncased-k10-seed42",
"logits_file": "bert-base-uncased-k10-seed42.npz",
"logits_sha256": "51df91b493b56ae7d49fdd3195bc1d53d55099ec5b1cf011dfa9579a8a6320a3",
"train_rows": 1525,
"oos_train_rows": 25,
"train_sample_sha256": "2606cc878d85759a5885e1b9be35205023b156e6cf8a4eea85bd635c3b492e74",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 400,
"epoch_steps": 240,
"decided_by": "min_train_steps",
"global_step": 400,
"reused_from": null
},
{
"k": 10,
"seed": 43,
"oos_train": null,
"run_name": "bert-base-uncased-k10-seed43",
"logits_file": "bert-base-uncased-k10-seed43.npz",
"logits_sha256": "113c11c8b72a8f20ac46e70a1c8492ee1a4d0571b1b86caba1b583cc85d0faf8",
"train_rows": 1525,
"oos_train_rows": 25,
"train_sample_sha256": "072190bdfc028a2e0bc6ec85d39e26ae1b27854281c6226be57b8f8b9d20e165",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 400,
"epoch_steps": 240,
"decided_by": "min_train_steps",
"global_step": 400,
"reused_from": null
},
{
"k": 10,
"seed": 44,
"oos_train": null,
"run_name": "bert-base-uncased-k10-seed44",
"logits_file": "bert-base-uncased-k10-seed44.npz",
"logits_sha256": "b60ca5253fc8ff28108fcfa32d4aa79139357e9f5639d187b2270a266c594adb",
"train_rows": 1525,
"oos_train_rows": 25,
"train_sample_sha256": "31a30630bb8f711a55173e8837eaf4500c2c5dcd5efe461b561a04e843cddd55",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 400,
"epoch_steps": 240,
"decided_by": "min_train_steps",
"global_step": 400,
"reused_from": null
},
{
"k": 25,
"seed": 42,
"oos_train": null,
"run_name": "bert-base-uncased-k25-seed42",
"logits_file": "bert-base-uncased-k25-seed42.npz",
"logits_sha256": "5397a2237935d24210a1b8e47ed837f1807db8beb0a4c18f31d24d0681bef1cc",
"train_rows": 3813,
"oos_train_rows": 63,
"train_sample_sha256": "51184b580bdbe58ab700d2545887a30c442950389b98497c3b7edaa7ca47174c",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 600,
"epoch_steps": 600,
"decided_by": "epochs",
"global_step": 600,
"reused_from": null
},
{
"k": 25,
"seed": 43,
"oos_train": null,
"run_name": "bert-base-uncased-k25-seed43",
"logits_file": "bert-base-uncased-k25-seed43.npz",
"logits_sha256": "cf40024e86a42cfe34703b4b04e58696d93a03f3408a44f820960b11d554d626",
"train_rows": 3813,
"oos_train_rows": 63,
"train_sample_sha256": "92f91be6e0948dbc01e82b81485c72829dd232443955fa0ae214b1451a0a704f",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 600,
"epoch_steps": 600,
"decided_by": "epochs",
"global_step": 600,
"reused_from": null
},
{
"k": 25,
"seed": 44,
"oos_train": null,
"run_name": "bert-base-uncased-k25-seed44",
"logits_file": "bert-base-uncased-k25-seed44.npz",
"logits_sha256": "c4de18e8e6d5e96011ab20178ec669bd2462c6aae44cd2fd40ae8ba3ce077f30",
"train_rows": 3813,
"oos_train_rows": 63,
"train_sample_sha256": "790cd7cf9eb24143276f6c59c7bac29c4a0b42f14bef38e9634e96253e6315fb",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 600,
"epoch_steps": 600,
"decided_by": "epochs",
"global_step": 600,
"reused_from": null
},
{
"k": 50,
"seed": 42,
"oos_train": null,
"run_name": "bert-base-uncased-k50-seed42",
"logits_file": "bert-base-uncased-k50-seed42.npz",
"logits_sha256": "42bd57f63c3f37264962334df25861a73c5279f7559302c9a467d5fadd246b7d",
"train_rows": 7625,
"oos_train_rows": 125,
"train_sample_sha256": "8a9a52f8ae41506d9847bd9ceba987edadc6bc3304487be22e664a95e1b9b18f",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 1195,
"epoch_steps": 1195,
"decided_by": "epochs",
"global_step": 1195,
"reused_from": null
},
{
"k": 50,
"seed": 43,
"oos_train": null,
"run_name": "bert-base-uncased-k50-seed43",
"logits_file": "bert-base-uncased-k50-seed43.npz",
"logits_sha256": "21bb8489d1c181fa6982ff89fb8a587505a5fb00ad53031246c0bdecb16bd949",
"train_rows": 7625,
"oos_train_rows": 125,
"train_sample_sha256": "836ad6186d05a042ae00b3ab45efc560eb45f774644bf5e4f9b13a6e66d82982",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 1195,
"epoch_steps": 1195,
"decided_by": "epochs",
"global_step": 1195,
"reused_from": null
},
{
"k": 50,
"seed": 44,
"oos_train": null,
"run_name": "bert-base-uncased-k50-seed44",
"logits_file": "bert-base-uncased-k50-seed44.npz",
"logits_sha256": "e335e894b2eb54e9f4074b861f202c478078700f308503c82ecc34ec7fc1c6fa",
"train_rows": 7625,
"oos_train_rows": 125,
"train_sample_sha256": "5db5ce1ae1864ba63a4164a799b09a7c1d783a4acbd55efc587613d986752013",
"train_sample_sha256_source": "recorded by train()",
"planned_steps": 1195,
"epoch_steps": 1195,
"decided_by": "epochs",
"global_step": 1195,
"reused_from": null
},
{
"k": 100,
"seed": 42,
"oos_train": null,
"run_name": "bert-base-uncased-full-seed42",
"logits_file": "bert-base-uncased-full-seed42.npz",
"logits_sha256": "673a4c11200dd61ddd6310f174ab9fb27580cf5b512c7ba3b5db19088958bab2",
"train_rows": 15250,
"oos_train_rows": 250,
"train_sample_sha256": "7a3ebd2cd2f985a26e815c229cc54add6763f783bee572c5e7948636c66c7553",
"train_sample_sha256_source": "computed at index time from curve_sample(k, seed); the run predates the field",
"planned_steps": 2385,
"epoch_steps": 2385,
"decided_by": "epochs",
"global_step": 2385,
"reused_from": "bert-base-uncased-full-seed42"
},
{
"k": 100,
"seed": 43,
"oos_train": null,
"run_name": "bert-base-uncased-full-seed43",
"logits_file": "bert-base-uncased-full-seed43.npz",
"logits_sha256": "b6963da29f5886b915d2c5626391721fbd18c7f54a68b7720bf2d10d6cc2c58f",
"train_rows": 15250,
"oos_train_rows": 250,
"train_sample_sha256": "7a3ebd2cd2f985a26e815c229cc54add6763f783bee572c5e7948636c66c7553",
"train_sample_sha256_source": "computed at index time from curve_sample(k, seed); the run predates the field",
"planned_steps": 2385,
"epoch_steps": 2385,
"decided_by": "epochs",
"global_step": 2385,
"reused_from": "bert-base-uncased-full-seed43"
},
{
"k": 100,
"seed": 44,
"oos_train": null,
"run_name": "bert-base-uncased-full-seed44",
"logits_file": "bert-base-uncased-full-seed44.npz",
"logits_sha256": "0324b20d4736ca9ad913b97269100b398475ab06a2bd130f653af55de239c277",
"train_rows": 15250,
"oos_train_rows": 250,
"train_sample_sha256": "7a3ebd2cd2f985a26e815c229cc54add6763f783bee572c5e7948636c66c7553",
"train_sample_sha256_source": "computed at index time from curve_sample(k, seed); the run predates the field",
"planned_steps": 2385,
"epoch_steps": 2385,
"decided_by": "epochs",
"global_step": 2385,
"reused_from": "bert-base-uncased-full-seed44"
}
]
}
Loading
Loading