LFM2.5 sizes compared: 230M vs 350M vs 1.2B on-device
Liquid AI ships LFM2.5 at three sizes. Benchmarks, export sizes, and what we learned fine-tuning two of them into shipped products, including the failure no metric caught.
Liquid AI's LFM2.5 family now sits in the Ertas catalogue at three sizes: 230M, 350M and 1.2B. All three are open-weight, all three carry a 32,768-token context window, all three run in under a gigabyte of memory, and all three train on our entry GPU tier inside the Free plan.
They all work. The interesting question is which one you should pick, and that turns out to have a cleaner answer than most model comparisons do.
The short version: pick the 1.2B if the model has to hold a conversation. Pick the 350M or the 230M if each request stands alone. The line between them is conversational coherence, and it is sharper than the benchmark scores suggest.
| If your model needs to | Pick | Q4_K_M download |
|---|---|---|
| Hold a multi-turn conversation, run an agent loop | LFM2.5 1.2B | 731 MB |
| Call tools, extract fields, emit JSON, one request at a time | LFM2.5 350M | 229 MB |
| Do all that inside a browser tab or a Raspberry Pi | LFM2.5 230M | 153 MB |
| Know things about the world | Something bigger | n/a |

The architecture is only partly a transformer
LFM2.5 interleaves double-gated short-range convolution blocks with grouped-query attention blocks. The 1.2B and the 350M both run 16 layers, split 10 convolution to 6 attention. The 230M runs 14 layers, split 8 to 6.
That split is the whole design. Attention costs quadratic time in sequence length; convolution costs linear. Mixing them keeps a long prompt affordable at parameter counts where a pure transformer starts paying for its own attention matrix. It is why a 230M model can carry a 32,768-token context at all, and why these models hold their throughput on a CPU where a same-size transformer would sag.
The vocabulary is 65,536 tokens across the family. That is a quarter the size of Gemma 3's 256K vocabulary, and at these parameter counts the embedding tables are a large share of the file. A compact vocabulary is most of the reason a 1.17B model exports smaller than a Gemma 3 1B does.
The three sizes side by side
| LFM2.5 230M | LFM2.5 350M | LFM2.5 1.2B | |
|---|---|---|---|
| Parameters | 230M | 350M | 1.17B |
| Layers | 14 (8 conv + 6 GQA) | 16 (10 conv + 6 GQA) | 16 (10 conv + 6 GQA) |
| Pre-training budget | 19T tokens | 28T tokens | 28T tokens |
| Context length | 32,768 | 32,768 | 32,768 |
| Languages | 10 | 9 | 8 |
| Released | 25 Jun 2026 | 31 Mar 2026 | 5 Jan 2026 |
| Ertas GPU tier | T4 | T4 | T4 |
| Free plan | Yes | Yes | Yes |
Two things in that table are worth pausing on.
The 350M gets the same 28 trillion token training budget as the 1.2B. Small models are usually undertrained relative to their capacity, because compute budgets follow parameter counts. Putting a full-size training run behind 350M parameters is a deliberate choice and it shows up in the scores.
The 230M was distilled from the 350M rather than trained from scratch at that size, then refined with direct preference optimisation and multi-domain reinforcement learning. It also covers the most languages of the three, picking up Italian.
Benchmarks
All figures below are Liquid AI's published numbers from the LFM2.5 launch post, the 350M post and the 230M post. The 1.2B was benchmarked against a different comparison set than its smaller siblings, so the two tables are kept separate.
LFM2.5-1.2B-Instruct against the 1B-to-1.7B field:
| Benchmark | LFM2.5 1.2B | Qwen3-1.7B | Granite-4.0-h-1b | Gemma 3 1B | Llama 3.2 1B |
|---|---|---|---|---|---|
| IFEval | 86.23 | 73.68 | 80.08 | 63.25 | 52.37 |
| IFBench | 47.33 | 21.33 | 24.93 | 20.47 | 15.93 |
| MMLU-Pro | 44.35 | 42.91 | 27.64 | 14.04 | 20.80 |
| GPQA | 38.89 | 34.85 | 24.34 | 24.24 | 16.57 |
| AIME25 | 14.00 | 9.33 | 1 | 1 | 0.33 |
LFM2.5-230M and 350M against the sub-1B field:
| Benchmark | LFM2.5 230M | LFM2.5 350M | LFM2-350M | Granite 4.0-H-350M | Qwen3.5-0.8B | Gemma 3 1B IT |
|---|---|---|---|---|---|---|
| IFEval | 71.71 | 76.96 | 64.96 | 61.27 | 59.94 | 63.49 |
| IFBench | 38.40 | 40.69 | 18.20 | 17.22 | 22.87 | 20.33 |
| Multi-IF | 37.70 | 44.92 | 32.92 | 28.70 | 41.68 | 44.25 |
| BFCLv3 | 43.26 | 44.11 | 22.95 | 43.07 | 35.08 | 16.61 |
| BFCLv4 | 21.03 | 21.86 | 12.29 | 13.28 | 18.70 | 7.17 |
| CaseReportBench | 22.51 | 32.45 | 11.67 | 12.44 | 13.83 | 2.28 |
| MMLU-Pro | 20.25 | 20.01 | 19.29 | 13.14 | 37.42 | 14.04 |
| GPQA Diamond | 25.41 | 30.64 | 27.58 | 22.32 | 27.41 | 23.89 |
The shape of both tables is the same. Instruction-following and function-calling scores are unusually high for the parameter count. World-knowledge scores are ordinary or worse. Qwen3.5-0.8B takes MMLU-Pro by a wide margin and loses every instruction-following column.
That is the trade the whole family makes, and it is the right one for on-device work. A model that reliably does what you tell it, with the facts supplied in the prompt, beats a model that knows more and follows worse. Pair these with retrieval and let the index carry the knowledge.


The other number to sit with: the 230M scores 43.26 on BFCLv3 against its 350M teacher's 44.11. The distillation carried function calling down a whole size class almost intact. Gemma 3 1B IT, with roughly four times the parameters, scores 16.61 on the same benchmark.
The bake-off we actually ran
Benchmarks got us to a shortlist. Picking between the 350M and the 1.2B took a build.
Chatty Valley is a Stardew Valley mod that replaces one villager's fixed dialogue with a fine-tuned model running on the player's own CPU. We trained both the 350M and the 1.2B on the same character dataset and ran the same evaluation suite over both.
I wanted the 350M to win. 229 MB is a far nicer thing to ask a stranger to download than 731 MB, and a fine-tuned 350M holds the character's voice and formatting beautifully. It produces single sentences that read exactly like the character.
It then loses the thread. Ask it something casual and slightly confusing and you get fluent, perfectly in-character word salad: an answer to a question you did not ask, followed by the same thought again in case you missed it. The 1.2B holds the conversation, so that is what shipped, at 697 MB quantised.
Here is the part worth carrying into your own build. Every automated metric said the 350M was fine. Dash-free rate, jailbreak leak rate, sentence-length distribution, degeneration, numeric-age leaks: all clean, on both sizes. The failure was only visible by talking to it.
So if you are fine-tuning anything conversational at this scale, write a scripted multi-turn probe that replays the conversational shape you care about, and run it before you trust a metrics dashboard. Automated axes catch regressions. Coherence is invisible to them.
For single-turn work, which is what the 350M and 230M are built for, none of this applies. Extraction, classification, structured output and tool calls are independent requests, and both smaller sizes handle them well.
A 230M model that runs in a browser tab
The 230M earns its place through download size. At 153 MB quantised it is small enough to fetch inside a web page.
Corporate Goblin is our demonstration of that: a LoRA fine-tune of LFM2.5-230M, merged and exported to q4 ONNX, running entirely client-side through transformers.js on WebGPU with a WASM fallback. No server, no API key, no per-request cost, and nothing typed into it leaves the visitor's machine. It answers every prompt as an over-confident growth guru and refuses to be useful, which is the point.
What it demonstrates seriously is that a 230M model holds a tight persona far better than the parameter count suggests, provided the task is narrow and the dataset is consistent about it. Small models are genuinely capable when the job is specific.
What each size costs to ship
Download size is the constraint that decides most on-device projects, so here are the real numbers, read from Liquid AI's published GGUF builds rather than estimated.
| Quantisation | 230M | 350M | 1.2B |
|---|---|---|---|
| Q4_0 | 149 MB | 219 MB | 696 MB |
| Q4_K_M | 153 MB | 229 MB | 731 MB |
| Q5_K_M | 172 MB | 260 MB | 843 MB |
| Q6_K | 191 MB | 293 MB | 963 MB |
| Q8_0 | 247 MB | 379 MB | 1.25 GB |
| BF16 | 462 MB | 712 MB | 2.34 GB |
At the two smaller sizes, the jump from Q4_K_M to Q6_K costs 38 MB and 64 MB respectively. That is cheap enough that it is worth testing whether the extra quality is effectively free for your task before defaulting to Q4.


Running footprints, all measured by Liquid AI on named hardware:
| Device | Model | Memory | Decode |
|---|---|---|---|
| iPhone 13 Mini (Cactus) | 350M | 56 MB | 88 tok/s |
| Snapdragon 8 Elite NPU | 350M | 169 MB | 15 tok/s |
| Raspberry Pi 5 | 230M | 293 MB | 42 tok/s |
| Galaxy S25 Ultra | 230M | 375 MB | 213 tok/s |
| AMD Ryzen AI Max 395+ | 350M | 434 MB | 313 tok/s |
| Galaxy S25 Ultra | 1.2B | 719 MB | 70 tok/s |
| AMD Ryzen AI 9 HX 370 | 1.2B | 856 MB | 116 tok/s |
For context, Qwen3-1.7B needs 1,306 MB on the same Galaxy S25 Ultra where the 1.2B holds 719 MB.
Fine-tuning LFM2.5 on Ertas
All three sizes train on the T4 tier, which is our entry tier and the one the Free plan uses. All three sit under the Free plan's 5B parameter ceiling, so a full training run on the largest of them costs nothing to start. The weights are bf16-native, so training runs at bf16 with no fp32 fallback penalty.
The recipe that works for sub-2B bases:
| Setting | Value |
|---|---|
| Learning rate | 3e-4 to 5e-4 |
| Batch size | 4 |
| Gradient accumulation | 2 |
| Epochs | 8 to 16 |
Small models need more passes over a small dataset than a 7B does before a behaviour holds, and they tolerate the higher learning rate without collapsing.
Exports come out as GGUF for llama.cpp, Ollama and LM Studio, or as safetensors LoRA adapters if you want to keep the adapter separate and merge it yourself. For browser deployment, merge the adapter and convert to q4 ONNX, which is the path Corporate Goblin takes.
One thing to plan for: tool calling in this family uses Pythonic function calls wrapped in dedicated <|tool_call_start|> and <|tool_call_end|> tokens by default. You can ask for JSON in the system prompt instead if your runtime expects that shape. Match your training data to whichever form you intend to ship.
One license caveat before you ship
LFM2.5 is released under the LFM Open License v1.0, which is Liquid AI's own document. Commercial use is permitted with conditions attached, and the terms differ from Apache 2.0 or MIT. The license travels with your fine-tune, so read it before shipping a commercial product on this base. Most of the rest of the Ertas catalogue is Apache 2.0, and it is easy to assume this one matches.
Frequently asked questions
What is the difference between LFM2.5 230M, 350M and 1.2B?
They share an architecture and a 32,768-token context window and differ in capacity. The 1.2B holds multi-turn conversation and agent loops. The 350M matches it closely on function calling and structured extraction at a third of the download size. The 230M is distilled from the 350M and gives up very little on tool calling while fitting in 153 MB, small enough for a browser.
Which LFM2.5 size is best for fine-tuning a chatbot?
The 1.2B. In our own testing, a fine-tuned 350M held a character's voice perfectly and then lost the thread of a casual multi-turn conversation, while the 1.2B held it. Every automated metric passed on both sizes, so the difference only surfaced through a scripted conversational probe.
Can LFM2.5 run in a web browser?
Yes. Export to ONNX, quantise to q4, and run through transformers.js on WebGPU with a WASM fallback. The 230M at 153 MB is the practical choice for a first-load download. Corporate Goblin at playground.ertas.ai is a working example.
Is LFM2.5 better than Qwen or Gemma at this size?
At instruction following and function calling, clearly. LFM2.5-1.2B scores 86.23 on IFEval against 73.68 for Qwen3-1.7B and 63.25 for Gemma 3 1B, and LFM2.5-350M scores 44.11 on BFCLv3 against 16.61 for Gemma 3 1B IT. At world knowledge it loses: Qwen3.5-0.8B takes MMLU-Pro at 37.42 against the 230M's 20.25. Pick on which of those your task needs.
How much does it cost to fine-tune LFM2.5?
Nothing to start. All three sizes are under the Ertas Free plan's 5B parameter ceiling and train on the T4 tier. See pricing for what the paid tiers add.
What is LFM2.5 bad at?
Liquid AI does not recommend the family for knowledge-intensive tasks or programming, and adds advanced maths and creative writing to that list for the 230M. Multi-turn conversation is the other limit at the two smaller sizes. Give these models the facts in the prompt and a specific job to do.
Model pages with full specs, benchmarks and hardware requirements: LFM2.5 family, LFM2.5 230M, LFM2.5 350M, LFM2.5 1.2B.
Ship AI that runs on your users' devices.
Free plan with 30 credits/mo, no card required. Paid plans from $10/mo USD.
Keep reading
Chatty Valley: an on-device AI mod for Stardew Valley (Part 1)
How I fine-tuned a 1.2B on-device AI model to give Linus real dialogue inside Stardew Valley, running on your CPU with no API key. Part 1 of the Chatty Valley build log.
Fine-Tuned 3B vs GPT-4: Why Smaller Models Win at Domain Tasks
Academic research shows fine-tuned 3B-7B models consistently beat GPT-4 on domain-specific tasks. Here's the evidence, the pattern, and how to apply it in your app.
The Cloud-to-Edge AI Pipeline: How Data Prep Fits Between Training and Deployment
The full cloud-to-edge AI pipeline spans raw data through on-device deployment. Data preparation is the step between raw enterprise data and cloud training — and it's where most edge AI projects fail.