Skip to content
All research

About 4×

the median IFEval gain from raising the reply cap to 2048 tokens: 18 to 21 of 30, up from 3 to 6

OpenWeights, 7 September 2026

A 640-token reply cap was cutting off the LFM2.5 2.6B.

The model reasons before it answers, so a 640-token cap cut it off. Raising only the cap lifted its scores on every phone. The same day's reruns also tested repeats of one file and a run that had died.

What we found

  • The 640-token cap held the 2.6B back

    At 2048 it scored 23 to 28 of 30 on GSM8K and 18 to 21 on IFEval, against 10 to 19 and 3 to 6.

  • At 2k, 14 of 60 replies hit the window

    At 4k and 32k none did; the long ones stopped at the 2048 reply cap instead.

  • Repeats still disagree

    The Exynos 2400 repeat of the 1.2B matched its first run on 7 of 90 raw replies.

  • Two memory guards, one 6 GB limit

    The stopped runs' logs, from MIUI and from Samsung's Heimdall, both report a 6 GB threshold. The Pixel run finished all 90 prompts.

The results

Grades, cuts, repeats, memory and timing

The 2.6B under two reply caps

Prompts passed out of 30, per phone and window. The hollow marker is the 640-token cap the suite uses, the solid one the 2048-token rerun. BFCL was not rerun; its 640-cap grades and calls stay in the original rows.

The chart scrolls sideways on a narrow screen.

GSM8K0102030Dimensitys · 2kDimensitys · 32k8 Elite · 4k8 Elite · 32kTensor G5 · 4kTensor G5 · 32kExynos 2400 · 4kExynos 2400 · 32kIFEval0102030

DimensitysSnapdragon 8 EliteTensor G5Exynos 2400640 cap2048 cap

Where the long replies were cut

The 60 GSM8K and IFEval replies of each 2048-cap cell: finished, cut by the window (prompt plus reply reached the window's limit), or cut by the reply cap.

The chart scrolls sideways on a narrow screen.

015304560Replies out of 60Dimensitys · 2k4614 windowDimensitys · 32k5010 cap8 Elite · 4k4911 cap8 Elite · 32k4515 capTensor G5 · 4k4713 capTensor G5 · 32k4812 capExynos 2400 · 4k4713 capExynos 2400 · 32k5010 cap

FinishedCut by the windowCut by the 2048 cap

Reply length at 2k and at 32k

Dimensitys, 2048 cap, 60 replies per window, both panels on one scale. Each bar is a 128-token bin of prompt plus reply. At 2k, 14 replies end at the window limit, 2,047 tokens in all; at 32k, 10 of 60 reached the reply cap and the rest finished earlier.

The chart scrolls sideways on a narrow screen.

2k window: 14 of 60 stopped at the window01432k window: 10 of 60 stopped at the reply cap0140512102415362048Prompt plus reply, tokens

2048 tokens, the 2k window

Same file, run twice

Five controls: the same export, same prompts, same phone, a second time. How many replies came back byte-identical (raw stream and shown text over 90 prompts, parsed tool calls over the 30 BFCL prompts), and how far each grade moved.

The chart scrolls sideways on a narrow screen.

0%25%50%75%100%Replies identical between the two runsLFM2.5-1.2B 16kDimensitysLFM2.5-1.2B 32kDimensitysLFM2.5-2.6B 2kDimensitysQwen3-1.7B 2kDimensitysLFM2.5-1.2B 4kExynos 2400

Raw streamShown textTool calls

Qwen3-1.7B at 32k against the 6 GB rule

Resident memory (RSS) of the test process right after the 32k export loaded, on each phone, with the phone's RAM. The dashed line is the 6 GB threshold the killed runs' logs reported; that threshold is measured in PSS at kill time, a different measure from the bars, so the bars show which phones were near it, not the moment they crossed it. Three of four processes were stopped within the first dozen prompts.

The chart scrolls sideways on a narrow screen.

0 GB4 GB8 GB12 GB16 GB12 GB RAM6.2 GBDimensityskilled after 6 prompts12 GB RAM6.1 GBSnapdragon 8 Elitekilled after 12 prompts16 GB RAM8.5 GBTensor G5finished 90 prompts12 GB RAM6.4 GBExynos 2400killed after 7 prompts

6 GB, the PSS threshold Samsung Heimdall and MIUI reported when they stopped the processThe phone's RAM

Time to first token and time per output token

Every rerun recorded prefill and decode time per prompt. TTFT here is the runtime's prefill of the whole prompt, the engine's part of the wait before the first token; TPOT is decode time over generated tokens. Each row pairs a rerun with the earlier run of the same cell: the hollow marker is the earlier run, the solid one the rerun. Medians over the prompts each run completed, so they are per-cell figures, not a paired speed test.

What to take from it: the capped rerun's lower TTFT is a prompt-mix effect, not a speed change. Its 60 GSM8K and IFEval prompts are shorter than the 30 BFCL prompts with their tool definitions, which the 640-cap rows include. TPOT, which does not depend on prompt length, agrees within 5% on the Dimensitys and Exynos 2400, differs by 8 to 11% on the 8 Elite and on the Tensor G5 at 4k, and by 26% on the Tensor G5 at 32k (81 then 102 ms), the size of the launch-to-launch swing seen on that phone before. Of the five repeats, three agree within 4% on both figures; the 1.2B repeats at 32k on the Dimensity and at 4k on the Exynos were 7 to 12% slower the second time.

The chart scrolls sideways on a narrow screen.

LFM2.5-2.6B 2k · Dimensitys640 cap then 2048 capLFM2.5-2.6B 32k · Dimensitys640 cap then 2048 capLFM2.5-2.6B 4k · 8 Elite640 cap then 2048 capLFM2.5-2.6B 32k · 8 Elite640 cap then 2048 capLFM2.5-2.6B 4k · Tensor G5640 cap then 2048 capLFM2.5-2.6B 32k · Tensor G5640 cap then 2048 capLFM2.5-2.6B 4k · Exynos 2400640 cap then 2048 capLFM2.5-2.6B 32k · Exynos 2400640 cap then 2048 capLFM2.5-2.6B 2k · Dimensitysfirst run then second runQwen3-1.7B 2k · Dimensitysfirst run then second runLFM2.5-1.2B 16k · Dimensitysfirst run then second runLFM2.5-1.2B 32k · Dimensitysfirst run then second runLFM2.5-1.2B 4k · Exynos 2400first run then second runTTFT, prefill ms03006009001200TPOT, ms per token0306090120

DimensitysSnapdragon 8 EliteTensor G5Exynos 2400Earlier runRerun

What the reruns showed

What the cut replies mean
A reply cut by the window exceeded the export's prompt-plus-reply length in this test; a reply cut by the cap is one the benchmark chose not to wait for. In every cell 10 to 15 of 60 replies were cut. At 2k on the Poco all 14 reached the window limit and none the cap; in the seven other cells, at 4k and 32k on every phone, 10 to 15 reached the 2048 cap and none the window. Some prompts make this model reason past 2000 tokens.
The kill rule
Samsung's Heimdall wrote "Trigger Global kill before GC, Usage 8.67 GB, Threshold 6 GB" on the S25 Ultra and S24+. MIUI on the Poco wrote "used too many pss resource, pss used 8653468kb, pss threshold 6291456kb". Different code, same number: on those phones a process whose PSS passes 6 GB is stopped. The 32k Qwen3 export needs about 7 GB of KV cache before the first prompt; it measured 6.1 to 6.4 GB resident after load on the three runs that were stopped and 8.5 GB on the Pixel run that finished.

The rerun tables

The rerun cells and controls. The full matrix, with the 640-cap rows and the fixed-prompt speed probe, is on the window page.

LFM2.5-2.6B under two reply caps8 cells, GSM8K and IFEval. Passed out of 30 at the 640-token cap and at the 2048-token rerun, and how the 60 rerun replies ended.Show
PhoneWindowGSM8K at 640GSM8K at 2048IFEval at 640IFEval at 2048FinishedCut by windowCut by cap
Dimensitys2k15/3024/304/3021/3046140
Dimensitys32k13/3026/305/3021/3050010
Snapdragon 8 Elite4k13/3025/305/3019/3049011
Snapdragon 8 Elite32k13/3024/305/3021/3045015
Tensor G54k17/3023/306/3021/3047013
Tensor G532k19/3028/304/3018/3048012
Exynos 24004k10/3025/305/3021/3047013
Exynos 240032k18/3027/303/3019/3050010
Same file, run twice5 controls. Replies byte-identical between the two runs, and each set's grade in the first and the second run.Show
ModelPhoneWindowRaw identicalText identicalCalls identicalGSM8KIFEvalBFCL
LFM2.5-1.2BDimensitys16k13/9020/9023/3013 then 1420 then 1627 then 28
LFM2.5-1.2BDimensitys32k15/9018/9025/3012 then 1218 then 1527 then 27
LFM2.5-2.6BDimensitys2k0/9029/9024/3015 then 134 then 624 then 24
Qwen3-1.7BDimensitys2k31/9031/9030/3020 then 1715 then 1824 then 24
LFM2.5-1.2BExynos 24004k7/9011/9023/3013 then 1517 then 2126 then 27
Timing of every rerun cellTTFT, TPOT, throughput and memory, against the earlier run of the same cellShow

Medians over the prompts each run completed. Prefill ms is the runtime's prefill of the whole prompt; ms per token is decode time over generated tokens. RSS is resident memory after load and at the end of the run.

CellRunPrefill msms per tokenPrefill tok/sDecode tok/sRSS after load MBRSS at end MB
LFM2.5-2.6B 2k, Dimensitys640 cap, 90 prompts88260.310816.619791958
2048 cap, 60 prompts69362.810515.919591783
LFM2.5-2.6B 4k, Snapdragon 8 Elite640 cap, 90 prompts119755.4721820582194
2048 cap, 60 prompts86651.18219.620552139
LFM2.5-2.6B 4k, Tensor G5640 cap, 90 prompts106692.28810.820542221
2048 cap, 60 prompts77681.910612.220552188
LFM2.5-2.6B 4k, Exynos 2400640 cap, 90 prompts114283.5811221362189
2048 cap, 60 prompts89387.18411.521362187
LFM2.5-2.6B 32k, Dimensitys640 cap, 90 prompts88259.710916.829372185
2048 cap, 60 prompts62159.511316.829222262
LFM2.5-2.6B 32k, Snapdragon 8 Elite640 cap, 90 prompts109649.78120.129503082
2048 cap, 60 prompts98254.58018.429502626
LFM2.5-2.6B 32k, Tensor G5640 cap, 90 prompts96881.110112.329623120
2048 cap, 60 prompts842102.4809.829623123
LFM2.5-2.6B 32k, Exynos 2400640 cap, 90 prompts108584.58011.830323084
2048 cap, 60 prompts92487.88211.430283080
LFM2.5-1.2B 4k, Exynos 2400first run4603419529.411261213
second run51637.518026.711261217
LFM2.5-1.2B 16k, Dimensitysfirst run35425.926238.6-993
second run36826.225938.214161528
LFM2.5-1.2B 32k, Dimensitysfirst run36626.325738-1903
second run39228.823734.817981901
LFM2.5-2.6B 2k, Dimensitysfirst run88260.310816.619791958
second run87259.611016.819841871
Qwen3-1.7B 2k, Dimensitysfirst run53245.117422.217581833
second run53245.717421.917661900
Qwen3-1.7B 32k on four phonesThe kill evidenceShow
PhoneDeviceRAMResident after loadPrompts completedWhat the log says
DimensitysPoco X8 Pro12 GB6188 MB6 of 90MIUI ActivityManager, 6 GB PSS threshold (rerun: 7 prompts, 8.65 GB)
Snapdragon 8 EliteGalaxy S25 Ultra12 GB6127 MB12 of 90Samsung Heimdall, 6 GB threshold (8.67 GB used)
Exynos 2400Galaxy S24+12 GB6396 MB7 of 90Samsung Heimdall, 6 GB threshold
Tensor G5Pixel 10 Pro XL16 GB8499 MB90 of 90finished all 90

How we ran it

What was rerun and why
After the window matrix was published, every cell was checked for a failed or noisy run, and the three things the first pass left in doubt were rerun the same day: the 2.6B's grades, which its 640-token cap had cut short; the Poco's Qwen3 32k run, which had died without a recorded cause; and whether a second run of the same file on another phone varies as much as it did on the Poco.
Grading
The matrix's prompts and graders: GSM8K by the last number in the reply, IFEval by the benchmark's instruction checkers, BFCL by one call to the right function with the right arguments. Greedy, thinking off. Every run also recorded prefill and decode time per prompt and resident memory. The 2.6B rerun raised only the reply cap, from 640 to 2048, on its 60 GSM8K and IFEval prompts; the repeats used all 90.
Why the 2.6B needed a rerun
Its chat template opens a thinking block before every answer, and the suite runs thinking off with a 640-token cap. Most of its GSM8K and IFEval replies were still reasoning when generation reached the cap, so those grades confound answer quality with the 640-token limit. The rerun keeps the same prompts, graders and thinking-off rule and only raises the cap to 2048. The 640-cap rows stay in the matrix as their own condition.
Cost
One day. The cloud reruns took 22 Test Lab launches, one set per launch and continued where the 38-minute budget cut them; 20 ran and 2 were refused when the Blaze plan's quota of 50 physical-device tests per day ran out at 13:19. They resumed at 15:05 after the reset and finished at 18:51. The Poco ran its four steps in 3 h 20 min.
Where the numbers come from
Grades, controls and memory figures are the rendered matrix's. The cut reasons and the reply-length histogram come from the graded JSON reports, which record prompt and reply token counts per prompt; a reply is counted as cut by the window when prompt plus reply reached the window's last usable token, 2,047 at 2k, and as cut by the cap when the reply alone reached 2,047 tokens at the 2048 cap. Phone RAM is the manufacturer's figure for each device. Launch times and counts are from the run logs.
How long each run tookWall clock per run. Generation time alone for the 2.6B at 2048: 130 to 213 minutes per phone.Show

The Test Lab span includes a pause from 13:19 to 15:05 for the daily quota.

RunWhereWall clock
Qwen3 32k with a logPoco2 min, killed
2.6B 2k repeat, 90 promptsPoco48 min
2.6B 2k at 2048, 60 promptsPoco80 min
2.6B 32k at 2048, 60 promptsPoco66 min
2.6B 4k and 32k at 2048, 1.2B 4k repeatTest Lab, 3 phones22 launches, 12:40 to 18:51
TermsWhat a cell, an export, greedy, TTFT, TPOT, RSS and PSS mean hereShow
Cell
One export on one phone over the prompt set.
Export
The model compiled for ExecuTorch at a fixed context window.
Greedy
The most likely token is always taken, so a run should repeat exactly.
Thinking off
The model is not given room to reason before answering, though the 2.6B's template does so anyway.
Benchmarks
GSM8K is grade-school maths, IFEval instruction following, BFCL tool calling.
Identity
Raw stream is every token generated, shown text is what a user would see after tool-call markup is removed, parsed tool calls are the function calls the app would act on.
TTFT and TPOT
TTFT is time to first token, measured here as the runtime's prefill of the prompt; TPOT is time per output token, decode time over generated tokens.
RSS and PSS
RSS is the process's resident memory; PSS is its proportional share, the figure the memory guards read.
KV cache
The memory a model keeps per token of window.
Heimdall
Samsung's memory guard.
Test Lab
Firebase's rented-phone service.

Limits

What was not rerun
The cloud phones' suite timings, which differed by up to threefold between two launches of the same Tensor G5 cell and may reflect different thermal states. A repeat would be as launch-dependent; a paired probe on those phones is required to compare their speed.

Sources

Under the results folder, the capped rerun is in -cap2048 files, continued sets are @n, second runs have a repeat- prefix, and the Poco kill evidence is under qwen3-32k-poco-rerun/. The LFM2.5-2.6B and LFM2.5-1.2B exports were also published on Hugging Face.

Keep reading

All research
  • Over 6 GB

    for Qwen3 at 32k, before the first prompt

    OpenWeights, 7 September 2026

    Does the exported window matter?

    Whether the context window fixed at export, from 2k to 32k, changes anything but memory.

  • 18 of 25

    model and chip pairs reached the first token sooner on ExecuTorch

    OpenWeights, 3 and 4 September 2026

    Five chips, two runtimes

    How fast five small models answer on five phone chips, in llama.cpp and in ExecuTorch.

  • 9 of 9

    models were fastest with NPU prefill

    OpenWeights, 2 to 4 November 2026

    Prefill and decode on CPU, GPU and NPU

    Which processor should prefill and which should decode: nine models, every pairing, on a Snapdragon 8 Elite Gen 5.