OpenWeights · research · 2026-09-07
ExecuTorch fixes a model's context window when the model is exported. This page asks whether that choice changes anything but memory. Pick a model or condition; every chart follows.
Decide whether a full sweep of five windows, five models and four chips (about 50 device hours) was worth running, by measuring the same weights exported at 2k, 4k, 8k, 16k and 32k on the same prompts. Five windows of LFM2.5-1.2B ran on the Dimensity 9400; the other model and phone pairs ran the smallest and largest window.
90 prompts per cell: 30 GSM8K (the last number in the reply must equal the reference), 30 IFEval (every instruction in the prompt must be satisfied, checked by the benchmark's own code), 30 BFCL (exactly one call to the right function with the right arguments). Greedy decoding, thinking off, replies capped at 640 tokens (384 for BFCL). The 2.6B was also rerun at a 2048 cap.
| Model | Dimensity | 8 Elite | Tensor G5 | Exynos |
|---|---|---|---|---|
| LFM2.5-1.2B | 63 | 12 | 43 | 35 |
| LFM2.5-2.6B, 640 cap | 129 | 75 | 128 | 117 |
| LFM2.5-2.6B, 2048 cap | 146 | 130 | 213 | 195 |
| Qwen3-1.7B | 33 | 19 | 57 | 25 |
Minutes the model spent generating, summed over every run in that cell; 23.7 hours in all. Loading, cooling and Test Lab queueing came on top. Run on 2026-09-07.
Answers and tool calls
No consistent directional effect found
Two windows agree on 12 to 19 of 90 replies; the same file run twice agrees on 7 to 15. Grades move both ways between windows by about as much as between repeats.
Speed
Paired medians close; Qwen3 32k slower
Same prompt, same turn, Dimensity 9400: LFM2.5 windows within 2.4% of each other. Qwen3 32k was 5.9% slower on prefill and 4.7% on decode than 2k.
Memory
The one thing the window buys, at load
LFM2.5 pays 25 to 33 KB per token of window; Qwen3-1.7B pays 224 KB, so its 32k export needs over 6 GB before the first prompt and 12 GB phones kill it.
Where the window did matter
At 2k, 14 of 60 long replies hit the window
The 2.6B reasons before it answers. At 2k, prompt plus reply reached the window and was cut; at 4k and above only the reply cap cut them. Grades barely moved.
The full sweep
Screen the endpoints before any full sweep
Compute the KV cost, run the smallest and largest window per model and chip, and add middle windows only where those two diverge or fail.
Resident memory of the test process right after each export loaded, Dimensity 9400, from the fixed-prompt probe. The picked model is drawn solid.
Each window's throughput as a ratio of the model's smallest window, same 929-token prompt, same turn against same turn, six pairs per file. Dot is the median, bar the range. Dimensity 9400 only.
The full matrix, as rendered from the graded reports by window_report.py. Prefill ms is the runtime's prefill of the whole prompt, the engine-side part of time to first token. ms/token is decode time over generated tokens; replies differ per cell, so it is not a paired comparison. Capped counts replies that ran to the token cap (640, or 384 for BFCL). RSS is resident memory right after load and at the end of the run.