PeetPedro commited on
Commit
b0ac489
·
verified ·
1 Parent(s): 41c3185

card: thresholded-ternary best 2.1469 (per-group scale, zero state)

Browse files
Files changed (1) hide show
  1. README.md +17 -10
README.md CHANGED
@@ -39,25 +39,32 @@ Rust.
39
  | Matrices | 168 ayeOS per-layer files (`m000.json` … `m167.json`) |
40
  | Runtime assets | `embeddings.f16` `[151936, 896]`, `norms.f32` `[49, 896]` |
41
  | Training | continued-train, masked CE, deployed-forward QAT |
42
- | Validation (masked, n=90) | **0.5597** |
43
- | Checkpoint sha256 | `69af3001...0409` (final, epoch 21) |
44
 
45
  ## Training
46
 
47
- - **Data**: 14,330 text samples (konstellation corpus: kompress + domain +
48
  c3), stratified 90-sample held-out val.
49
  - **Loss**: masked cross-entropy — pad tokens (id 0) weighted out, honest mean
50
  over valid tokens. Dynamic per-batch padding bucketed to multiples of 64.
51
- - **Optimizer**: AdamW, weight decay 0.1, grad clip off, lr 5e-5 → cosine →
52
- 5e-6 (2% warmup), early stop patience 5 / min-delta 0.02, 40-epoch cap.
53
- - **Hardware**: vast.ai H100 (80 GB) — the SOTA run, B8/256, 14,330 samples.
 
 
 
 
 
 
54
  - **Forward**: deployed-forward QAT — the exact forward the Rust runner uses
55
  (weight-quant-only BitLinear, per-projection RMSNorm + activation quant
56
  skipped), so training ≡ inference. The Rust runner reproduces the forward
57
- to **1e-5** (golden-logits gate, both prompts, identical argmax).
58
- - **Val trajectory** (SOTA run): 2.90 → 1.68 → 1.27 → 0.77 → 0.67 → 0.63 →
59
- 0.60 → **0.5597** (epoch 21, early stop). Prior runs: 1.6998 (7,000
60
- samples, L40), 3.2862 (2,785, 3090); the old artifact measured 11.34.
 
61
 
62
  ## Layout
63
 
 
39
  | Matrices | 168 ayeOS per-layer files (`m000.json` … `m167.json`) |
40
  | Runtime assets | `embeddings.f16` `[151936, 896]`, `norms.f32` `[49, 896]` |
41
  | Training | continued-train, masked CE, deployed-forward QAT |
42
+ | Validation (masked, n=90) | **2.1469** |
43
+ | Checkpoint sha256 | `21294c68...8285` (best, epoch 2 / early stop) |
44
 
45
  ## Training
46
 
47
+ - **Data**: 20,007 text samples (konstellation corpus: kompress + domain +
48
  c3), stratified 90-sample held-out val.
49
  - **Loss**: masked cross-entropy — pad tokens (id 0) weighted out, honest mean
50
  over valid tokens. Dynamic per-batch padding bucketed to multiples of 64.
51
+ - **Optimizer**: AdamW, weight decay 0.1, grad clip off, lr 3e-4 → cosine →
52
+ 3e-5 (2% warmup), early stop patience 5 / min-delta 0.02, 40-epoch cap.
53
+ - **Hardware**: vast.ai RTX PRO 6000 (96 GB) — the nightly run, B12/256,
54
+ 20,007 samples. `MLX_CUDA_GRAPH_CACHE_SIZE=2000`.
55
+ - **Quantizer**: true thresholded ternary — `weight_quant` uses a per-group
56
+ (64) scale and a real zero state (`|w| < 0.5·scale → 0`), so ~30% of the
57
+ weights land on zero. The old sign-based collapse wasted the third state;
58
+ this one earns it. Training forward ≡ export ≡ Rust (per-group scale, same
59
+ dequant `(code−1)·scale`).
60
  - **Forward**: deployed-forward QAT — the exact forward the Rust runner uses
61
  (weight-quant-only BitLinear, per-projection RMSNorm + activation quant
62
  skipped), so training ≡ inference. The Rust runner reproduces the forward
63
+ to **1.3e-5** (golden-logits gate, both prompts, identical argmax 71703).
64
+ - **Val trajectory** (nightly run): 2.38 → **2.1469** (epoch 2, best) → 2.25
65
+ → 2.49 → 2.72 → 2.76 → 3.07 (overfit after epoch 2; early stop). Prior
66
+ runs: 1.6998 (7,000 samples, L40), 3.2862 (2,785, 3090); the old artifact
67
+ measured 11.34.
68
 
69
  ## Layout
70