SecludedCorner commited on
Commit
fc172e2
Β·
verified Β·
1 Parent(s): 58050ef

model card (frozen)

Browse files
Files changed (1) hide show
  1. README.md +195 -0
README.md ADDED
@@ -0,0 +1,195 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language: en
3
+ license: apache-2.0
4
+ library_name: transformers
5
+ pipeline_tag: text-generation
6
+ inference: false
7
+ tags:
8
+ - babylm
9
+ - babylm-2026
10
+ - strict-small
11
+ - linear-attention
12
+ - state-tracking
13
+ - delta-rule
14
+ - custom_code
15
+ ---
16
+
17
+ # bind2_0
18
+
19
+ > ## ⚠️ The official benchmark badge is NOT the point of this repo
20
+ >
21
+ > On the official BabyLM 2026 strict-small zero-shot surface this model is **statistically tied** with its
22
+ > matched monolithic and bind1 controls (mean-4 excl. entity: **56.92** vs 56.60/56.63 at 23.9M; slightly
23
+ > above the GPT-2 baseline on BLiMP, **66.11** vs 65.08). It wins nothing there, and that is part of the
24
+ > finding.
25
+ >
26
+ > **What this stage actually shows** (three results, all kept):
27
+ > 1. **The mechanism is trainable**: with direct-task training on a purpose-built synthetic swap-tracking
28
+ > task (n=800 per eval, 5-way, chance 0.20), the forced-bottleneck architecture reached **0.9988
29
+ > accuracy** β€” with a sharp grokking transition between 5M and 10M training tokens
30
+ > (0.179 β†’ 0.969 β†’ 0.996) β€” while matched monolithic, bind1-style, and no-binding controls stayed at
31
+ > chance (0.2125 / 0.1938 / 0.1938).
32
+ > 2. **It does not emerge from plain LM pretraining**: after standard BabyLM strict-small pretraining,
33
+ > zero-shot give-verb state-tracking probes (n=60, chance 0.50) show **no model above chance**; this
34
+ > build (23.9M) scored 0.200 β€” significantly below chance, i.e. strong recency capture. The synthetic
35
+ > grok did not transfer.
36
+ > 3. **The architecture costs ~nothing on general language** ("no tax, no win"): official zero-shot scores
37
+ > tied across architectures; raw LM perplexity is slightly worse than the monolithic control
38
+ > (11.0 vs 9.7 at 23.9M), as expected for a forced bottleneck.
39
+ >
40
+ > The full falsification-timeline context (what came before this stage and what it forced next) lives at
41
+ > the hub: [`SecludedCorner/bind-evolution`](https://huggingface.co/datasets/SecludedCorner/bind-evolution).
42
+
43
+ ## Model description (family level)
44
+
45
+ bind2_0 is a small causal LM (main branch = **23.9M params**; branch `27m` = **27M params**) combining:
46
+
47
+ - **Delta-rule fast-weight memory**: gated delta-rule recurrent value dynamics (GatedDeltaNet), using the
48
+ third-party MIT-licensed [`flash-linear-attention` (fla)](https://github.com/fla-org/flash-linear-attention)
49
+ implementation as the core recurrent layer. The delta-rule/fast-weight design follows Yang, Kautz &
50
+ Hatamizadeh, *Gated Delta Networks: Improving Mamba2 with Delta Rule* (ICLR 2025, arXiv:2412.06464);
51
+ only the permissively licensed fla implementation is used here.
52
+ - **A forced bottleneck**: attention is chunk-local; information can cross chunk boundaries **only**
53
+ through the recurrent state S. This makes the recurrent state the sole carrier of long-range bindings β€”
54
+ the design hypothesis under test at this stage.
55
+
56
+ Later family members are not described here; see the hub for the family narrative.
57
+
58
+ ## Training data
59
+
60
+ Official **BabyLM 2026 Strict-Small** corpus (the provided ~10M-word text-only corpus; no custom data).
61
+ Training: 150M tokens over the 16.3M-token encoding (SEQ256, batch 16, vocab 16k), recurrent state reset
62
+ per block. Final training perplexity: 11.0 (23.9M build), 10.8 (27M build); matched monolithic control: 9.7.
63
+
64
+ ## Results (official pipeline, strict-small zero-shot, single seed)
65
+
66
+ Main branch (23.9M):
67
+
68
+ | task | bind2_0 | mono control | bind1 control | GPT-2 baseline |
69
+ |---|---:|---:|---:|---:|
70
+ | BLiMP | 66.11 | 65.35 | 65.50 | 65.08 |
71
+ | BLiMP supplement | 58.11 | 58.17 | 58.35 | 57.25 |
72
+ | EWoK | 51.95 | 51.32 | 51.57 | β€” |
73
+ | entity_tracking (filtered) | 19.02 | 21.16 | 19.22 | 21.07 |
74
+ | COMPS | 51.49 | 51.55 | 51.11 | 51.81 |
75
+ | mean(4, excl. entity) | **56.92** | 56.60 | 56.63 | β€” |
76
+
77
+ Branch `27m` (27M; mono control at this tier is 27.4M):
78
+
79
+ | task | bind2_0 | mono control | bind1 control | GPT-2 baseline |
80
+ |---|---:|---:|---:|---:|
81
+ | BLiMP | 65.14 | 64.35 | 66.68 | 65.08 |
82
+ | BLiMP supplement | 60.81 | 58.55 | 60.90 | 57.25 |
83
+ | EWoK | 51.16 | 50.70 | 51.90 | β€” |
84
+ | entity_tracking (filtered) | 20.53 | 19.24 | 20.00 | 21.07 |
85
+ | COMPS | 50.89 | 51.00 | 51.36 | 51.81 |
86
+ | mean(4, excl. entity) | 57.00 | 56.15 | 57.71 | β€” |
87
+
88
+ entity_tracking is ~chance for every model under the current filtered standard (non-discriminative), hence
89
+ excluded from the mean. The mean-of-4 is NOT the official leaderboard "Overall" (which also weights GLUE,
90
+ reading, AoA, and more). All numbers single-seed; the across-architecture spread (~1.5pp) is within seed
91
+ noise.
92
+
93
+ ## Honest limitations β€” what this stage cannot do
94
+
95
+ - **It does not track state zero-shot.** After plain LM pretraining, give-verb state-tracking probes are at
96
+ or below chance (0.200 at 23.9M = strong recency capture). Do not use this model expecting emergent
97
+ entity/state tracking.
98
+ - **It does not beat its controls on the official benchmark.** Tied within noise; that is the honest
99
+ reading, not modesty.
100
+ - **The synthetic grok required direct-task training** β€” it is evidence the bottleneck can force state into
101
+ the recurrent path, not evidence of a general capability.
102
+ - Single seed per build; raw LM perplexity pays a small bottleneck tax (11.0 vs 9.7).
103
+
104
+ ## What this stage forced next
105
+
106
+ The gap between "trainable in principle (0.9988 synthetic grok)" and "does not emerge from LM pretraining
107
+ (chance zero-shot)" forced the next question on the ladder: split the confound β€” first prove the mechanism
108
+ is *causally real at depth* under a pre-registered gate, separately from transfer. That question β€”
109
+ including a preregistered NULL we report as NULL, and the causal evidence around it β€” is answered on the
110
+ hub: [`SecludedCorner/bind-evolution`](https://huggingface.co/datasets/SecludedCorner/bind-evolution).
111
+
112
+ ## How to load
113
+
114
+ ```python
115
+ from transformers import AutoModelForCausalLM, AutoTokenizer
116
+ tok = AutoTokenizer.from_pretrained("SecludedCorner/bind2_0",
117
+ revision="<40-char commit SHA>")
118
+ model = AutoModelForCausalLM.from_pretrained("SecludedCorner/bind2_0",
119
+ revision="<40-char commit SHA>",
120
+ trust_remote_code=True)
121
+ ```
122
+
123
+ - `trust_remote_code=True` is **required** for the model (the config's `auto_map` points at the inlined
124
+ `modeling_babylm.py` shipped in this repo). The tokenizer loads without it.
125
+ - **A CUDA GPU with a working Triton is required for inference.** The fla 0.5.1 GatedDeltaNet path
126
+ dispatches to Triton kernels; on CPU-only environments the forward pass fails at kernel launch
127
+ (`RuntimeError: 0 active drivers`). The checkpoint itself loads fine on CPU; only the forward pass needs
128
+ a GPU.
129
+
130
+ ## Dependency pins
131
+
132
+ Exact versions the checkpoints were trained/exported/validated with (Python 3.11.15; also shipped as
133
+ `requirements_pins.txt` in this repo):
134
+
135
+ ```
136
+ torch==2.12.1+cu126
137
+ transformers==5.13.0
138
+ triton-windows==3.7.1.post27
139
+ flash-linear-attention==0.5.1
140
+ fla-core==0.5.1
141
+ safetensors==0.8.0
142
+ numpy==2.4.6
143
+ ```
144
+
145
+ Notes:
146
+
147
+ - **fla** is required at runtime: the inlined modeling code lazily imports `fla.layers.GatedDeltaNet`,
148
+ which this architecture instantiates. Installed from PyPI as release **0.5.1** (no commit pin β€” the
149
+ environment records the plain PyPI release; `fla-core` 0.5.1 comes with it).
150
+ - **triton**: the training/export environment is Windows and uses the `triton-windows` fork
151
+ (3.7.1.post27); on Linux use the upstream `triton` matching your torch build.
152
+ - **torch** build is CUDA 12.6 (`+cu126`); pick the equivalent build for your platform.
153
+
154
+ ## Export fidelity & known-defect disclosure
155
+
156
+ **Export fidelity (verified twice):**
157
+
158
+ - At grid-evaluation time (2026-07-12) the HF export was verified logit-identical to the training model
159
+ (wrapper-vs-original logit diff = 0.00e+00).
160
+ - On 2026-07-15 a dedicated round-trip validation re-checked both exports, as they sit on disk, against the
161
+ original training checkpoints: **all 186 weight tensors bitwise identical** (max abs diff 0.0, no
162
+ missing/extra keys) and **logits bitwise identical** (max abs diff 0.00e+00 across 4 deterministic
163
+ batches of 8Γ—128 tokens, fp32, passing at both atol 1e-4 and atol 1e-5) for **both** the 23.9M and 27M
164
+ builds. Caveat, disclosed: that re-check ran on CPU, where fla's Triton kernels cannot execute, so three
165
+ fla components were replaced by math-equivalent pure-PyTorch implementations applied identically to both
166
+ sides. It therefore validates **export fidelity** (weights and module wiring survive
167
+ `.pt β†’ safetensors β†’ AutoModelForCausalLM` exactly), not Triton-kernel numerics; a GPU re-run with stock
168
+ kernels remains the gold check.
169
+
170
+ **Known defect β€” `attention_mask` is accepted but ignored:**
171
+
172
+ - The exported wrapper accepts `attention_mask` in `forward()` and never uses it β€” on the causal-LM path
173
+ and, for this architecture, on the AutoModel (sequence-classification) path as well. Empirically,
174
+ `attention_mask=ones`, `=zeros`, and omitted all produce bitwise-identical logits on both builds.
175
+ - **Consequence:** in a batch, right-padding is silently attended over as real tokens β€” **batched padded
176
+ inference gives wrong results.** Run unbatched, or length-sorted/unpadded. Per-example inference is
177
+ unaffected; the published zero-shot numbers above came from the per-example evaluation setting and are
178
+ unaffected by this defect.
179
+
180
+ ## How to cite this model
181
+
182
+ Always cite at a pinned revision: pass `revision="<40-char commit SHA>"` to `from_pretrained`, or use the
183
+ `/tree/<sha>` URL form. Authoritative per-branch SHAs are recorded at push time in the project
184
+ `PUBLISH_LEDGER`; the final SHAs are noted in a dated addendum below after publication.
185
+
186
+ ## Card freeze policy
187
+
188
+ **The body of this card is frozen at publish.** Any later information (including the final commit SHAs and
189
+ resolved links) is added only as clearly dated addendum sections below this line β€” the text above is never
190
+ silently edited.
191
+
192
+ ## Branches
193
+
194
+ - `main` β€” 23.9M-parameter build (the primary artifact)
195
+ - `27m` β€” 27M-parameter build (same architecture and recipe, wider)