diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0755056b..a37fd176 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,8 @@ Keep changes focused and preserve Colibri's dependency-free default CPU path. it into `main`. This keeps `main` clean instead of taking every PR one at a time. Every PR — on either branch — is reviewed for a clean build (0 warnings), the oracle -(32/32 TF + 20/20 greedy), and its own targeted validation before merge. +(~30-32/32 TF depending on floating-point near-ties + 20/20 greedy), and its own +targeted validation before merge. ## Local checks diff --git a/README.md b/README.md index 8b48ee59..d501f311 100644 --- a/README.md +++ b/README.md @@ -157,8 +157,9 @@ math on the unified-memory GPU. ### Faithful model, compressed state -The forward pass is validated **token-exact against a `transformers` oracle** -(teacher-forcing 32/32). MLA attention stores a compressed KV state — 576 +The forward pass is validated against a `transformers` oracle (teacher-forcing +typically 30-32/32; two tiny-oracle positions are floating-point near-ties and +toolchain-dependent). MLA attention stores a compressed KV state — 576 floats/token instead of 32,768 (**57× smaller**) — and persists it across restarts (`.coli_kv`): conversations reopen warm with zero re-prefill, byte-identical to an uninterrupted session. DSA sparse attention (GLM-5.2's diff --git a/README.zh-TW.md b/README.zh-TW.md index 2576eba1..1ee60577 100644 --- a/README.zh-TW.md +++ b/README.zh-TW.md @@ -101,9 +101,10 @@ VRAM/RAM/硬碟層級長條,以及角落的即時迷你大腦。
### 忠實模型,壓縮狀態 -前向傳遞已透過 `transformers` oracle 驗證為**逐 token 完全一致** -(teacher-forcing 32/32)。MLA 注意力儲存壓縮後的 KV 狀態——每個 token 為 576 個 -浮點數,而非 32,768 個(**縮小 57×**)——並跨重新啟動持久保存 +前向傳遞已透過 `transformers` oracle 驗證(teacher-forcing 通常為 +30-32/32;tiny oracle 中有兩個位置是浮點數近似平手,結果會受工具鏈影響)。 +MLA 注意力儲存壓縮後的 KV 狀態——每個 token 為 576 個浮點數,而非 32,768 個 +(**縮小 57×**)——並跨重新啟動持久保存 (`.coli_kv`):對話可暖啟恢復,不需重新 prefill,結果與不中斷的工作階段 逐位元組相同。DSA 稀疏注意力(GLM-5.2 的 lightning indexer)已忠實實作, 並透過強制選取所有 key,驗證可精確重現稠密注意力。 diff --git a/c/colibri.c b/c/colibri.c index fef41369..3ec624a4 100644 --- a/c/colibri.c +++ b/c/colibri.c @@ -6666,7 +6666,7 @@ int main(int argc, char **argv){ fprintf(stderr, "ERROR: no PROMPT given, so this is oracle self-test mode — but ref_glm.json is the TINY\n" " model's oracle (max token %d) and your model's vocab is %d. Nothing to validate here.\n" - " Engine self-test: SNAP=./glm_tiny TF=1 ./glm 64 16 16 (expect 32/32)\n" + " Engine self-test: SNAP=./glm_tiny TF=1 ./glm 64 16 16 (expect ~30-32/32; FP near-ties are toolchain-dependent)\n" " Real generation: PROMPT=\"Hello\" NGEN=32 SNAP=