unparallelled commited on
Commit
cf6f1a1
·
verified ·
1 Parent(s): ff4addc

Upload docs/EVAL_COMPARISON_2026-09-02.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. docs/EVAL_COMPARISON_2026-09-02.md +70 -0
docs/EVAL_COMPARISON_2026-09-02.md CHANGED
@@ -134,3 +134,73 @@ Caveat recorded: the flux haystack contains ~6 `<|endoftext|>` tokens per
134
  16,360-token prompt (document separators a base model may treat as resets). Not
135
  a factor for the depth-1.0 failure, and the NLL needles used the same filler, so
136
  the two remain comparable on that axis.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  16,360-token prompt (document separators a base model may treat as resets). Not
135
  a factor for the depth-1.0 failure, and the NLL needles used the same filler, so
136
  the two remain comparable on that axis.
137
+
138
+ ---
139
+
140
+ # ADDENDUM (same day, later) — a YaRN config bug, and why the numbers above are provisional
141
+
142
+ ## The bug
143
+
144
+ `YARNOps.cpp:57` defaults `YARN_ORIG_MAXPOS` to **1024**, but the base model (run8)
145
+ trained at `context_length 4096`. So every run in this project — training, the NLL
146
+ probes, and all the generative numbers above — emitted:
147
+
148
+ ```
149
+ [YaRN][warn] seq_len(16384) != scale(4.000)*orig_maxpos(1024.0)=4096.0
150
+ -- cache scaled for a different context than it is sized for
151
+ ```
152
+
153
+ The YaRN interpolation ramp targeted 4096 positions while the cache was *sized* 16384.
154
+ Setting `YARN_ORIG_MAXPOS=4096` makes `scale x orig == seq_len` exactly and moves the
155
+ ramp from `low=7 high=25` to `low=14 high=32`.
156
+
157
+ ## What the fix does — niah_single, buggy -> corrected
158
+
159
+ context base arm_a arm_b arm_c
160
+ 1,024 84 -> 90 78 -> 86 64 -> 70 76 -> 82
161
+ 2,048 82 -> 94 66 -> 78 56 -> 64 70 -> 80
162
+ 4,096 74 -> 16 ! 62 -> 54 48 -> 42 60 -> 48
163
+ 8,192 40 -> 36 36 -> 42 36 -> 32 40 -> 44
164
+ 16,360 0 -> 17 0 -> 17 0 -> 4 0 -> 18
165
+
166
+ At 16,360 with N=100/cell the depth curve goes from flat zero to:
167
+ d0.50 0-5%, d0.75 20-30%, d1.00 55-65%. That is 0/100 -> 17/100, p<0.001.
168
+
169
+ So the cache bug was suppressing real ability **at every depth and every length**, not
170
+ only at 16k. Depth 0.0 (needle at the window start) improves too: base 75 -> 85%,
171
+ arm_a 35 -> 55% when pooled over 1k+2k.
172
+
173
+ ## The unexplained 4,096 collapse
174
+
175
+ Every model drops at 4,096 under the corrected cache, and `base` falls **74% -> 16%**.
176
+ A 58-point collapse at one length for one model, while its neighbours at 2k and 8k both
177
+ improve, is not a smooth capability change. The suspicious coincidence: 4,096 is
178
+ exactly `orig_maxpos`, so the ramp hits a boundary case there.
179
+
180
+ **This has not been diagnosed, and it invalidates the corrected-cache reach column** —
181
+ `base`'s "best reach" appears to fall 3,482 -> 2,048 purely because that one row went
182
+ to zero. Isolation needed: re-run base at 4,096 with N=100 to confirm it reproduces
183
+ rather than being a 50-sample fluke, and bracket at 3,840 / 4,352 to see whether the
184
+ failure is pinned to exactly `orig_maxpos`.
185
+
186
+ ## What this means for the main report above
187
+
188
+ - STILL HOLDS: no U-shape in either metric (pure recency, no primacy bump at depth 0)
189
+ under both cache parameterisations; arm_b worst in every measurement; forward
190
+ retrieval works and backward retrieval does not; the NLL/generative ranking
191
+ disagreement (NLL puts arm_c first, generation puts the untrained base first).
192
+ - NOW PROVISIONAL: every reach number, including the "saturates at 2,700-3,500
193
+ tokens" headline and the "NLL overstates 2-4.7x" factor. All of those were measured
194
+ under the buggy cache, and the corrected-cache column cannot replace them until the
195
+ 4,096 anomaly is understood.
196
+ - PREMATURE: retraining with the corrected value. Training on a parameterisation that
197
+ has a pathological point would bake the pathology in.
198
+
199
+ ## Correction to a claim in section 6 above
200
+
201
+ I wrote that reach and the p90 training-document length (2,721) are "the same number."
202
+ That is arithmetically true but I selected the percentile that matched — the mean
203
+ (1,340) and median (826) are both well below the measured reach. The defensible claim
204
+ is that reach lands in the **upper range** of the document-length distribution, not that
205
+ it equals p90. The mechanism (99.7% of documents end before 16k, so no gradient signal
206
+ for attending further) is unaffected.