Back to blog
    lfm2.5liquid-aion-device-aismall-modelsfine-tuningmodel-comparisonedge-ai

    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.

    Edward Xi Yang

    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 toPickQ4_K_M download
    Hold a multi-turn conversation, run an agent loopLFM2.5 1.2B731 MB
    Call tools, extract fields, emit JSON, one request at a timeLFM2.5 350M229 MB
    Do all that inside a browser tab or a Raspberry PiLFM2.5 230M153 MB
    Know things about the worldSomething biggern/a
    The Add Model dialog in Ertas Studio showing the LFM group with three entries: LFM2.5 1.2B, LFM2.5 230M and LFM2.5 350M, each labelled Liquid AI, with the Llama group below
    All three sizes in the Ertas Studio model picker. Every one of them trains on a T4 and fits inside the Free plan's 5B parameter ceiling.

    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 230MLFM2.5 350MLFM2.5 1.2B
    Parameters230M350M1.17B
    Layers14 (8 conv + 6 GQA)16 (10 conv + 6 GQA)16 (10 conv + 6 GQA)
    Pre-training budget19T tokens28T tokens28T tokens
    Context length32,76832,76832,768
    Languages1098
    Released25 Jun 202631 Mar 20265 Jan 2026
    Ertas GPU tierT4T4T4
    Free planYesYesYes

    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:

    BenchmarkLFM2.5 1.2BQwen3-1.7BGranite-4.0-h-1bGemma 3 1BLlama 3.2 1B
    IFEval86.2373.6880.0863.2552.37
    IFBench47.3321.3324.9320.4715.93
    MMLU-Pro44.3542.9127.6414.0420.80
    GPQA38.8934.8524.3424.2416.57
    AIME2514.009.33110.33

    LFM2.5-230M and 350M against the sub-1B field:

    BenchmarkLFM2.5 230MLFM2.5 350MLFM2-350MGranite 4.0-H-350MQwen3.5-0.8BGemma 3 1B IT
    IFEval71.7176.9664.9661.2759.9463.49
    IFBench38.4040.6918.2017.2222.8720.33
    Multi-IF37.7044.9232.9228.7041.6844.25
    BFCLv343.2644.1122.9543.0735.0816.61
    BFCLv421.0321.8612.2913.2818.707.17
    CaseReportBench22.5132.4511.6712.4413.832.28
    MMLU-Pro20.2520.0119.2913.1437.4214.04
    GPQA Diamond25.4130.6427.5822.3227.4123.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.

    Bar chart of LFM2.5 230M performance as a percentage of the LFM2.5 1.2B on three benchmarks. IFEval, instruction following, is 83 percent. IFBench, harder constraints, is 81 percent. MMLU-Pro, world knowledge, is 46 percent.
    The 350M and the 230M land within a quarter of a point of each other on MMLU-Pro, so almost all of the knowledge drop happens in the first step down from 1.2B.

    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.

    The shipped 1.2B answering in the game's own dialogue box, running locally at Q4_K_M. Read the full build story.

    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.

    Quantisation230M350M1.2B
    Q4_0149 MB219 MB696 MB
    Q4_K_M153 MB229 MB731 MB
    Q5_K_M172 MB260 MB843 MB
    Q6_K191 MB293 MB963 MB
    Q8_0247 MB379 MB1.25 GB
    BF16462 MB712 MB2.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.

    Bar chart of Q4_K_M download size across the LFM2.5 family, drawn to scale, with the IFEval score each model holds. LFM2.5 1.2B is 731 MB at IFEval 86.2. LFM2.5 350M is 229 MB at IFEval 77.0. LFM2.5 230M is 153 MB at IFEval 71.7.
    Quality moves far less than size does across this range, which is why the choice between them usually comes down to the conversation test rather than the benchmark numbers.

    Running footprints, all measured by Liquid AI on named hardware:

    DeviceModelMemoryDecode
    iPhone 13 Mini (Cactus)350M56 MB88 tok/s
    Snapdragon 8 Elite NPU350M169 MB15 tok/s
    Raspberry Pi 5230M293 MB42 tok/s
    Galaxy S25 Ultra230M375 MB213 tok/s
    AMD Ryzen AI Max 395+350M434 MB313 tok/s
    Galaxy S25 Ultra1.2B719 MB70 tok/s
    AMD Ryzen AI 9 HX 3701.2B856 MB116 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:

    SettingValue
    Learning rate3e-4 to 5e-4
    Batch size4
    Gradient accumulation2
    Epochs8 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