alt.freeweights.lfm / LFM2.5-230M
From: unsloth <huggingface.co/unsloth>Newsgroups: alt.freeweights.lfmSubject:

LFM2.5-230M

Date: 2026-11-15Commit: 70a7edbSigned: 2DC28CC7B26A283B ✓

Text generation model with 230M parameters. Safetensors weights, 464 MB in all. Published by unsloth under LFM-1.0 (custom).

230M params464MBLFM2.5-230Msafetensorscustom terms
FactsParams230MSize464 MBFormatssafetensorsTasktext generationLicenseLFM-1.0 (custom)From sourcecustom termsread terms
# custom terms: read the license before you download
$ fw get unsloth/LFM2.5-230M
# manifest sha256 eb1e2da37883… · 464 MB · 9 files
$ fw verify ./LFM2.5-230M unsloth/LFM2.5-230M
From sourceHosted (signed)unsloth/LFM2.5-230MLast check: 2026-11-15 00:26 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Overview

Size
464 MB
Weights
459 MB (safetensors)
Parameters
230M
Formats
safetensors
Task
text generation
License
LFM-1.0 (custom) (custom)
Files
9, each with a sha256
Publisher
unsloth
Added
2026-11-15
Section
alt.freeweights.lfm
Lineage

Original release from the publisher.

Base model: LiquidAI/LFM2.5-230M

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 00:26 UTCpassed

Model card

From the publisher at commit 70a7edb. Shown as plain text with links; images open at the publisher.

Unsloth Dynamic 2.0 achieves superior accuracy & outperforms other leading quants.

https://github.com/unslothai/unsloth/ https://discord.gg/unsloth https://docs.unsloth.ai/

Image: Liquid AI

Try LFM • Docs • LEAP • Discord

LFM2.5-230M#

LFM2.5 is a family of hybrid models designed for on-device deployment. It builds on the LFM2 architecture with extended pre-training and reinforcement learning.

  • Our most compact model yet: 230M parameters that punch above their weight, bringing real capability to the tightest memory and compute budgets.
  • Fast edge inference: Best throughput from low-cost CPUs to production GPUs, running at 213 tok/s decode speed on Galaxy S25 Ultra and 42 tok/s on a Raspberry Pi 5.
  • Built for agentic tasks: Distilled from LFM2.5-350M and refined with multi-stage reinforcement learning, making it well-suited for tool use and data extraction.

Find more information about LFM2.5-230M in our blog post.

Image: lfm2_5_230m_benchmarks

🗒️ Model Details#

ModelParametersDescription
LFM2.5-230M-Base230MPre-trained base model for fine-tuning
LFM2.5-230M230MGeneral-purpose instruction-tuned model

LFM2.5-230M is a general-purpose text-only model with the following features:

  • Number of parameters: 230M
  • Number of layers: 14 (8 double-gated LIV convolution blocks + 6 GQA blocks)
  • Training budget: 19T tokens
  • Context length: 32,768 tokens
  • Vocabulary size: 65,536
  • Knowledge cutoff: Mid-2024
  • Languages: English, Arabic, Chinese, French, German, Italian, Japanese, Korean, Portuguese, Spanish
  • Generation parameters:
    • temperature: 0.1
    • top_k: 50
    • repetition_penalty: 1.05
ModelDescription
LFM2.5-230MOriginal model checkpoint in native format. Best for fine-tuning or inference with Transformers, vLLM, and SGLang.
LFM2.5-230M-GGUFQuantized format for llama.cpp and compatible tools. Optimized for edge inference and local deployment.
LFM2.5-230M-ONNXONNX Runtime format for cross-platform deployment.
LFM2.5-230M-MLXMLX format for Apple Silicon. Optimized for fast inference on Mac devices.

We recommend using it for data extraction and lightweight on-device agentic pipelines. It is not recommended for reasoning-heavy workloads such as advanced math, code generation, or creative writing.

Chat Template#

LFM2.5 uses a ChatML-like format. See the Chat Template documentation for details. Example:

<|startoftext|><|im_start|>system
You are a helpful assistant trained by Liquid AI.<|im_end|>
<|im_start|>user
What is C. elegans?<|im_end|>
<|im_start|>assistant

You can use tokenizer.apply_chat_template() to format your messages automatically.

Tool Use#

LFM2.5 supports function calling in four steps:

  1. Function definition: Provide the list of tools as a JSON object in the system prompt, or use tokenizer.apply_chat_template() with tools=....
  2. Function call: By default, LFM2.5 writes Pythonic function calls (a Python list between <|tool_call_start|> and <|tool_call_end|> special tokens), as the assistant answer. You can override this behavior by asking the model to output JSON function calls in the system prompt.
  3. Function execution: Execute the call and return the result with the tool role.
  4. Final answer: LFM2.5 interprets the tool output and returns a plain-text answer addressing the original prompt.

See the Tool Use documentation for the full guide. Example:

<|startoftext|><|im_start|>system
List of tools: [{"name": "get_candidate_status", "description": "Retrieves the current status of a candidate in the recruitment process", "parameters": {"type": "object", "properties": {"candidate_id": {"type": "string", "description": "Unique identifier for the candidate"}}, "required": ["candidate_id"]}}]<|im_end|>
<|im_start|>user
What is the current status of candidate ID 12345?<|im_end|>
<|im_start|>assistant
<|tool_call_start|>[get_candidate_status(candidate_id="12345")]<|tool_call_end|>Checking the current status of candidate ID 12345.<|im_end|>
<|im_start|>tool
[{"candidate_id": "12345", "status": "Interview Scheduled", "position": "Clinical Research Associate", "date": "2023-11-20"}]<|im_end|>
<|im_start|>assistant
The candidate with ID 12345 is currently in the "Interview Scheduled" stage for the position of Clinical Research Associate, with an interview date set for 2023-11-20.<|im_end|>

🏃 Inference#

LFM2.5 is supported by many inference frameworks. See the Inference documentation for the full list.

NameDescriptionDocsNotebook
TransformersSimple inference with direct access to model internals.LinkColab link
vLLMHigh-throughput production deployments with GPU.LinkColab link
llama.cppCross-platform inference with CPU offloading.LinkColab link
MLXApple's machine learning framework optimized for Apple Silicon.Link—
LM StudioDesktop application for running LLMs locally.Link—
SGLangHigh-throughput production deployments with GPU.Link-

Quick start with Transformers (compatible with transformers>=5.0.0):

from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer

model_id = "LiquidAI/LFM2.5-230M"
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
    dtype="bfloat16",
#   attn_implementation="flash_attention_2" <- uncomment on compatible GPU
)
tokenizer = AutoTokenizer.from_pretrained(model_id)
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)

prompt = "What is C. elegans?"

input_ids = tokenizer.apply_chat_template(
    [{"role": "user", "content": prompt}],
    add_generation_prompt=True,
    return_tensors="pt",
    tokenize=True,
)["input_ids"].to(model.device)

output = model.generate(
    input_ids,
    do_sample=True,
    temperature=0.1,
    top_k=50,
    repetition_penalty=1.05,
    max_new_tokens=512,
    streamer=streamer,
)

🔧 Fine-Tuning#

We recommend fine-tuning LFM2.5 for your specific use case to achieve the best results.

NameDescriptionDocsNotebook
CPT (Unsloth)Continued Pre-Training using Unsloth for text completion.LinkColab link
CPT (Unsloth)Continued Pre-Training using Unsloth for translation.LinkColab link
SFT (Unsloth)Supervised Fine-Tuning with LoRA using Unsloth.LinkColab link
SFT (TRL)Supervised Fine-Tuning with LoRA using TRL.LinkColab link
DPO (TRL)Direct Preference Optimization with LoRA using TRL.LinkColab link
GRPO (Unsloth)GRPO with LoRA using Unsloth.LinkColab link
GRPO (TRL)GRPO with LoRA using TRL.LinkColab link

📊 Performance#

Benchmarks#
ModelGPQA DiamondMMLU-ProIFEvalIFBenchMulti-IF
LFM2.5-230M25.4120.2571.7138.4037.70
LFM2.5-350M30.6420.0176.9640.6944.92
LFM2-350M27.5819.2964.9618.2032.92
Granite 4.0-H-350M22.3213.1461.2717.2228.70
Granite 4.0-350M25.9112.8453.4815.9824.21
Qwen3.5-0.8B (Instruct)27.4137.4259.9422.8741.68
Gemma 3 1B IT23.8914.0463.4920.3344.25
ModelCaseReportBenchBFCLv3BFCLv4τ²-Bench Telecomτ²-Bench Retail
LFM2.5-230M22.5143.2621.035.2613.68
LFM2.5-350M32.4544.1121.8618.8617.84
LFM2-350M11.6722.9512.2910.825.56
Granite 4.0-H-350M12.4443.0713.2813.746.14
Granite 4.0-350M0.8439.5813.732.926.14
Qwen3.5-0.8B (Instruct)13.8335.0818.7012.576.14
Gemma 3 1B IT2.2816.617.179.366.43
CPU Inference#

Image: image

GPU Inference#

Image: image

📬 Contact#

Citation#

@article{liquidAI2026230M,
  author = {Liquid AI},
  title = {LFM2.5-230M: Built to Run Anywhere},
  journal = {Liquid AI Blog},
  year = {2026},
  note = {www.liquid.ai/blog/lfm2-5-230m},
}
@article{liquidai2025lfm2,
  title={LFM2 Technical Report},
  author={Liquid AI},
  journal={arXiv preprint arXiv:2511.23404},
  year={2025}
}

Files

9 files · 464 MBWeights 459 MB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 9 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
LICENSE10.6 KB30adf9d6478191fb87f2424f63ba0728598335aaf99cd2848ef17e8e545fe94b
README.md14.9 KB852cc0e92836d46135b1f9919927a366cd4a69e07d05e8df73bad4f29cc03496
chat_template.jinja4.62 KB6d65c8804847ad74eea912dd7eca3dc1cf7a457b53a77f47d841a14121910963
config.json1.60 KB37ae5e9732e6950bddd82d3aaf8d38bc79733e232038337e560c489d3604f067
generation_config.json303 B4f88574c47c3215f7f952e1f520d1df7387422dde0345655228fb7b3fde6858c
model.safetensors459 MBf630da86651136c9aee893b04b7542007e90fdd718355358e57e7ecc31517cfd
tokenizer.json4.73 MB20b69858d59797c3c56d9352d1f17d95d31f18d8812aeeb13331881d3ba5ed0d
tokenizer_config.json5.40 KB902aa9d3ff754f32604b4905d88ed1724dd6ddd5008f0b40b76debe1a9401ac1
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
70a7edbaf3 pinned now2026-11-15 00:26 UTC9 files · 464 MB

Use it

# custom terms: read the license before you download
$ fw get unsloth/LFM2.5-230M
# manifest sha256 eb1e2da37883… · 464 MB · 9 files
$ fw verify ./LFM2.5-230M unsloth/LFM2.5-230M
Terms that come with these files. LFM 1.0: commercial use only for organisations under US$10M annual revenue. Keep a copy of the license with the files.
Custom license (custom). Read the license text first. Open this panel to show the commands once you accept its terms.
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/unsloth/LFM2.5-230M.json --dir ./LFM2.5-230M $ python3 fw.py verify ./LFM2.5-230M ./unsloth__LFM2.5-230M.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download unsloth/LFM2.5-230M --revision 70a7edbaf3c3afc75f4a052be6b8c12ec27713cd --local-dir ./LFM2.5-230M
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForCausalLM, AutoTokenizer tok = AutoTokenizer.from_pretrained("unsloth/LFM2.5-230M", revision="70a7edbaf3c3afc75f4a052be6b8c12ec27713cd") model = AutoModelForCausalLM.from_pretrained("unsloth/LFM2.5-230M", revision="70a7edbaf3c3afc75f4a052be6b8c12ec27713cd", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve unsloth/LFM2.5-230M --revision 70a7edbaf3c3afc75f4a052be6b8c12ec27713cd

License

Name
LFM Open License v1.0
Id
LicenseRef-LFM-1.0
Class
Custom terms
Redistribution
click-through
Listing
Hosted (signed)
Terms
LFM 1.0: commercial use only for organisations under US$10M annual revenue. Keep a copy of the license with the files.
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
LICENSE
Text sha256
30adf9d6478191fb87f2424f63ba0728598335aaf99cd2848ef17e8e545fe94b
Terms gate
Yes. The commands stay folded until you open them after reading the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: unsloth <huggingface.co/unsloth>Newsgroups: alt.freeweights.lfmSubject: LFM2.5-230MDate: 2026-11-15Commit: 70a7edbSigned: 2DC28CC7B26A283B ✓
Upstream
unsloth/LFM2.5-230M
Pinned commit
70a7edbaf3c3afc75f4a052be6b8c12ec27713cd
Manifest
LFM2.5-230M.json · .minisig
Manifest sha256
eb1e2da37883507e4eab01f8e87d25c1009fb5401641bd921b109ff74d619bd6
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 00:26 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/unsloth/LFM2.5-230M.json $ curl -O https://freeweights.allternit.com/manifests/unsloth/LFM2.5-230M.json.minisig $ minisign -Vm LFM2.5-230M.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

LiquidAI/LFM2.5-230M (not in this catalog) · this model is a finetune of it

No model in the catalog names this one as its parent.

Get it
Read license, then download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download unsloth/LFM2.5-230M
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. LFM2.5-230M.json. Provenance. Takedown history: none.
From: LiquidAI <huggingface.co/LiquidAI>Subject: LFM2-1.2B
From: LiquidAI <huggingface.co/LiquidAI>Subject: LFM2-1.2B-Extract
From: LiquidAI <huggingface.co/LiquidAI>Subject: LFM2-1.2B-RAG
From: LiquidAI <huggingface.co/LiquidAI>Subject: LFM2-1.2B-Tool
From: LiquidAI <huggingface.co/LiquidAI>Subject: LFM2-2.6B
From: LiquidAI <huggingface.co/LiquidAI>Subject: LFM2-2.6B-Exp