Skip to content

BuildNot yet confirmed elsewhere1 publisher3 min readPublished

A 26M-parameter edit tagger out-corrects LoRA-tuned Gemma 3 270M and SmolLM2 360M on a phone keyboard

A 26M-parameter edit tagger scored F0.5 0.799 at phone-keyboard grammar correction against 0.663 for fine-tuned small LLMs, its authors report. It altered correct text 2.4% of the time against 20.1%, on a benchmark the authors ran themselves.

The Engineer · Build desk

How we use AISend a correction

Tagger changes correct text less often than LLMs The authors' reported rate of altered correct text, the tagger's phone speed, the iOS keyboard memory limit and total training time.

Key figures: the tagger (v1.5) changed correct text 2.4% of the time, against 20.1% for the LoRA fine-tunes; it takes about 4 ms per sentence on a phone CPU; an iOS keyboard extension gets about 60 to 80 MB of memory; training took about 9 hours on one laptop GPU.

Tagger changes correct text less often than LLMs
FigureValueNoteClaim
Correct text changed by the tagger (v1.5)2.4%against 20.1% for the comparison2
Per sentence, phone CPU4 ms, about3
iOS keyboard extension memory, at least60 MB, aboutup to about 80 MB before jetsam kills it5
Total training, one GPU9 hours, about12

What happened

  • It ships as a 26 MB Core ML model on iOS and a 27 MB int8 ONNX model on Android, at about 4 ms per sentence on a phone CPU.
  • Instead of generating text, the model predicts one edit label per word, applies the labels, and reruns on its own output for up to three passes.
  • Training the whole pipeline took about nine hours on one RTX 3080 Ti laptop GPU.

Why it matters

  • constraint On iOS the 26 MB model is roughly a third to 43% of the 60 to 80 MB a keyboard extension gets, if resident memory tracks file size.
  • exposure At the reported rates a user would see roughly one correct sentence in five altered by the LLMs and about one in 42 by the tagger.
  • capability Apache-2.0 weights let a keyboard team measure the tagger on its own text before trusting the authors' set.

The gap starts with what each model is allowed to output. A generative corrector rewrites the sentence token by token. The post's authors describe the consequence: "Generative correction regenerates every token, so every token is a chance to change something that was fine." [9] Fine-tuning reduces that risk a lot, they wrote, but does not remove it. [22]

The tagger's output space is a fixed set of 15,000 edit labels on an 8-layer encoder with 26.2M parameters. [11] $KEEP is a real answer: 30% of the 12.02M training pairs are identity pairs. [13] The model has roughly 10 to 14 times fewer parameters than the two LLMs it was compared with [30], and its F0.5 is 0.136 higher [27].

Three additions sit around the network, and the authors say they "do a lot of the work". [23] A constant added to the $KEEP logit sets strictness. Values 1, 2 and 3 map to the "Catch more", "Balanced" and "Only sure fixes" settings. [14] Inside a detected name, number, email or URL only $KEEP is allowed, and the suite shows 0.0% lost protected spans for every tagger version. [15] A $REPLACE is accepted only if it is a known kind of fix or a small edit distance. [16]

The post's summary gives one set of LLM numbers. The portion we have does not break them out by model, and does not say whether the LoRA models ran behind equivalent filters. If they did not, part of the 0.136 gap belongs to the filters.

Treat the 0.799 as a claim about this workload. The LLM side is one configuration: LoRA r32 on the same correction data, served with llama.cpp. [8] The tagger's training mix leans on synthetic phone typos such as QWERTY neighbours, apostrophes, their/there/they're and agreement errors, plus real misspellings, CoEdIT and casual messages written by a local Qwen2.5-14B. [24] The 4,356 test cases were kept out of training by a deterministic hash split. [7] For the score to transfer, your users' errors have to look like that mix, and the LoRA run has to be a fair stand-in for what you would tune.

The false-change rate also moves with the set. The summary says 2.4%; on the 2,000 held-out real-style messages v1.5 scores 1.9%. [2][17] Tense is still weak, according to the authors. [26]

The post documents a failure in full. Versions 1.3 and 1.4 lost to 1.2, with false positives on correct text going from 3.1% to 7.4% and 9.1%. [18] The fine-tune script set the number of training steps from a time budget, using the speed it timed at step 300. For v1.2, that timing landed during a VRAM spill into WSL shared memory, and the run was accidentally given a short schedule. [19] So the best early version owed its short schedule to a GPU that was swapping. Once the spill was fixed, v1.3 and v1.4 ran 2.6 to 2.9 epochs against 1.4. [19] The authors wrote: "The comparison wasn't fair, and the long runs were the bad ones." [20] The extra errors were mostly preposition swaps next to names, such as "booked table 27 at Kyiv" becoming "in Kyiv". [21]

The evidence supports a narrow claim. One task, two LLMs and one LoRA configuration produced a win for a purpose-built tagger on the authors' own benchmark. [1][8] We think the design is the right trade for a keyboard. The iOS extension has no GPU guarantees [5], the OS enforces the no-network rule [25], and the authors wrote that "A false correction costs more user trust than a missed one". [6] Whether that generalises to other on-device tasks is not tested here. The weights are Apache-2.0, so anyone can run the check on their own text. [4]

What to watch

  • Whether the next tagger version fixes tense errors without pushing false changes on correct text back up.
  • Independent runs of the Apache-2.0 weights on keyboard text the authors did not write or score.
  • A per-model breakdown of F0.5, false changes and latency for Gemma 3 270M and SmolLM2 360M.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence50
Adoption
Insufficient
Hype gap+12
Incentives45
Confidence50
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    The authors compared LoRA fine-tunes of Gemma 3 270M and SmolLM2 360M with a GECToR-style edit tagger trained from scratch, for grammar correction inside a phone keyboard that runs on-device only.

    ReportedSupportedSource: dev.to post by the tagger's authorsView cited source
  2. [2]

    The 26M tagger (v1.5) scored F0.5 0.799 against 0.663 and changed correct text 2.4% of the time against 20.1%.

    ReportedSupportedSource: dev.to post by the tagger's authorsView cited source
  3. [3]

    The tagger ships as a 26 MB Core ML model on iOS and a 27 MB int8 ONNX model on Android, and takes about 4 ms per sentence on a phone CPU.

    ReportedSupportedView cited source

Sources

1 independent publisher whose own reporting we read for this story.

  1. dev.to

    1 article · October 12, 2026

    A 26M-parameter tagger beat our fine-tuned small LLMs at grammar correction, and runs in ~4 ms on a phone

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

Entities

Loading related stories