Downloads ยท 30 days
213
48% of all-time downloads
vrfai/LFM2.5-2.6B-FP8
LFM2.5-2.6B-FP8 is a text generation model from vrfai. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as other.
Quantized build of LiquidAI/LFM2.5-2.6B, produced by vrfai.
Downloads ยท 30 days
213
48% of all-time downloads
All-time downloads
446
Public
Parameters
2.7B
3 GB on disk
Likes
2
Public
Click a slice to open those files.
.safetensors3 GB ยท 99%
How the weights are stored.
F8_E4M32.4B ยท 90%
From the Hugging Face model README
Quantized build of LiquidAI/LFM2.5-2.6B, produced by vrfai.
Format: FP8 (W8A8), SmoothQuant + static per-tensor activation scales
from calibration, serialized as compressed-tensors.
Size: 2.77 GB (base model: 5.0 GB, 55% of original).
LFM2.5-2.6B is a hybrid stack: 30 Lfm2DecoderLayers, 8 full_attention
and 22 conv (Lfm2ShortConv โ a depthwise causal nn.Conv1d, kernel size
3, not an SSM with a learned decay gate the way Gated DeltaNet is, so
unlike that architecture there is no fragile recurrence-decay sub-component
inside the conv block worth protecting). Only lm_head is held at bf16;
every other Linear quantizes โ 1 module(s) excluded
(lm_head).
| Component | Precision |
|---|---|
self_attn.{q,k,v}_proj / out_proj (8 attention layers) | FP8 |
conv.in_proj / conv.out_proj (22 conv layers) | FP8 |
feed_forward.{w1,w2,w3} (all 30 layers) | FP8 |
lm_head | bf16 |
90.28% of all nn.Linear weight (by parameter count) is quantized โ
see the source pipeline's inspect_model.py for the full per-role census.
| Method | llmcompressor 0.13.0 โ SmoothQuant + static FP8 |
| SmoothQuant | enabled, strength = 0.8, 60 mappings (one operator_norm + one ffn_norm pair per decoder layer, built from the live module tree since attention/conv layers have different SmoothQuant balance targets) |
| Calibration data | abisee/cnn_dailymail (512 samples @ 2048 tokens, text-only โ correct for a text-only LLM) |
| Weights | 8-bit float (E4M3), per-tensor scale |
| Activations | 8-bit float (E4M3), per-tensor static scale from calibration |
Two tasks, chosen because they exist in the installed lm_eval harness
and are the closest deterministic (no LLM-judge) match to what
LiquidAI's own model card reports for LFM2.5-2.6B: IFBench/Multi-IF
(instruction-following) โ ifeval; AIME25 (math reasoning) โ aime25,
a literal name match to the card's own reported score.
LFM2.5's chat template unconditionally opens every generation with
<think> (no non-thinking toggle exists โ verified directly against
chat_template.jinja), so both tasks run in a _think variant that strips
everything up to </think> before scoring, and a mild
repetition_penalty=1.1 (fully deterministic, no sampling) is applied โ
without it, plain greedy decoding measurably got stuck in degenerate
token-repeat loops on ifeval for both checkpoints, inflating truncated
responses with a cause that has nothing to do with quantization.
| Task | Metric | bf16 baseline | This model (fp8) | ฮ (abs) | ฮ (rel) |
|---|---|---|---|---|---|
| AIME25 | exact_match | 40.00% (n=30) | 33.33% (n=30) | -6.67 | -16.7% |
| IFEval | prompt_level_strict_acc | 69.32% (n=541) | 73.75% (n=541) | +4.44 | +6.4% |
Both deltas are within run-to-run noise at these sample sizes (two-proportion z-test, p > 0.05) โ no measurable regression from FP8 quantization on either task. AIME25 (n=30) has limited statistical power by nature of the dataset size; IFEval (n=541) is the more reliable signal of the two and shows FP8 matching or slightly exceeding the bf16 baseline.
No quantization flag is required โ vLLM reads the format from config.json.
vllm serve vrfai/LFM2.5-2.6B-FP8 --trust-remote-code
from vllm import LLM, SamplingParams
llm = LLM(model="vrfai/LFM2.5-2.6B-FP8", trust_remote_code=True)
print(llm.generate(["The capital of France is"],
SamplingParams(temperature=0.0, max_tokens=64))[0].outputs[0].text)
[!WARNING] Everything below this line is reproduced verbatim from the base model card, LiquidAI/LFM2.5-2.6B. The benchmark tables it contains (AA-Omni, AIME25, LiveCodeBench, IFBench, BFCL, ...) were measured by LiquidAI on the original weights. They were not measured on this quantized checkpoint. For numbers measured on these weights, see the Benchmark results section above.
LFM2.5-2.6B is part of LFM2.5, a family of hybrid models designed for on-device deployment. It builds on the LFM2 architecture with a 128K context window and agentic post-training.
Find more information about LFM2.5-2.6B in our blog post.

[!NOTE] ๐ป Demos: Try LFM2.5-2.6B's agentic capabilities in a Hugging Face space without any setup: Research Agent in your browser: helps you research a specific question and generates a summary
| Model | Parameters | Description |
|---|---|---|
| LFM2.5-2.6B-Base | 2.6B | Pre-trained base model for fine-tuning |
| LFM2.5-2.6B | 2.6B | Post-trained for agentic workloads |
LFM2.5-2.6B is a general-purpose text-only model with the following features:
temperature: 0.1top_k: 50repetition_penalty: 1.1| Model | Description |
|---|---|
| LFM2.5-2.6B | Original model checkpoint in native format. Best for fine-tuning or inference with Transformers, vLLM, and SGLang. |
| LFM2.5-2.6B-GGUF | Quantized format for llama.cpp and compatible tools. Optimized for CPU inference and local deployment with reduced memory usage. |
| LFM2.5-2.6B-ONNX | ONNX Runtime format for cross-platform deployment. Enables hardware-accelerated inference across diverse environments (cloud, edge, mobile). |
| LFM2.5-2.6B-MLX | MLX format for Apple Silicon. Optimized for fast inference on Mac devices using the MLX framework. |
| LFM2.5-2.6B-DSpark | Speculative decoding drafter (328M). Pair it with this model for ~2.6x faster decoding with identical outputs. |
We recommend using it for agentic workloads, tool use, data extraction, RAG, and long-context workflows. It is not recommended for agentic coding and knowledge-heavy tasks.
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.
[!TIP] ๐ก Note: LFM2.5-2.6B is a pure reasoning model that always thinks before it answers. It adds a
<think>tag directly in the chat template when starting an assistant answer.
LFM2.5 supports function calling in four steps:
tokenizer.apply_chat_template() with tools=....<|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.tool role.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|>
LFM2.5-2.6B is pre-trained on ~34T tokens, with a mid-training phase that extends the context window to 128K. Post-training then turns the base model into an agent in four stages: supervised fine-tuning (two rounds), per-domain teacher specialization, multi-domain on-policy distillation, and agentic reinforcement learning.

In particular, agentic reinforcement learning allows us to directly train the model inside popular agentic harnesses. It exposes the model to their tools, system prompts, and interaction patterns, helping it work reliably across agent environments.

LFM2.5 is supported by many inference frameworks. See the Inference documentation for the full list.
| Name | Description | Docs | Notebook |
|---|---|---|---|
| Transformers | Simple inference with direct access to model internals. | <a href="https://docs.liquid.ai/lfm/inference/transformers">Link</a> | <a href="https://colab.research.google.com/drive/1_q3jQ6LtyiuPzFZv7Vw8xSfPU5FwkKZY?usp=sharing"><img src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/vlOyMEjwHa_b_LXysEu2E.png" width="110" alt="Colab link"></a> |
| vLLM | High-throughput production deployments with GPU. | <a href="https://docs.liquid.ai/lfm/inference/vllm">Link</a> | <a href="https://colab.research.google.com/drive/1VfyscuHP8A3we_YpnzuabYJzr5ju0Mit?usp=sharing"><img src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/vlOyMEjwHa_b_LXysEu2E.png" width="110" alt="Colab link"></a> |
| SGLang | High-throughput production deployments with GPU. | <a href="https://docs.liquid.ai/deployment/gpu-inference/sglang">Link</a> | โ |
| llama.cpp | Cross-platform inference with CPU offloading. | <a href="https://docs.liquid.ai/lfm/inference/llama-cpp">Link</a> | <a href="https://colab.research.google.com/drive/1ohLl3w47OQZA4ELo46i5E4Z6oGWBAyo8?usp=sharing"><img src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/vlOyMEjwHa_b_LXysEu2E.png" width="110" alt="Colab link"></a> |
| MLX | Apple's machine learning framework optimized for Apple Silicon. | <a href="https://docs.liquid.ai/lfm/inference/mlx">Link</a> | โ |
| LM Studio | Desktop application for running LLMs locally. | <a href="https://docs.liquid.ai/deployment/on-device/lm-studio">Link</a> | โ |
[!TIP] โก Faster decoding: attach LFM2.5-2.6B-DSpark, a 328M speculative-decoding drafter, for ~2.6x faster decoding in SGLang and on Apple silicon via Metal with exactly the same outputs.
LFM2.5-2.6B can be used for direct inference or as a backend for agentic workflows.
Get started with Transformers (compatible with transformers>=5.0.0):
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
model_id = "LiquidAI/LFM2.5-2.6B"
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.1,
max_new_tokens=512,
streamer=streamer,
)
LFM2.5-2.6B supports tool calling for agentic workflows. Serve it locally with any OpenAI-compatible backend (see ๐ Inference, then configure your agent harness to connect to it. For full setup instructions including installation and additional options, see our Agent Harnesses guide.
Note: The port depends on your serving backend โ llama.cpp and MLX use 8080, vLLM uses 8000, SGLang uses 30000, and LM Studio uses 1234. Adjust the URLs below accordingly.
Either use the interactive wizard or set it directly:
hermes config set model.provider custom
hermes config set model.base_url http://localhost:8080/v1
hermes config set model.default LFM2.5-2.6B
hermes config set model.context_length 131072
hermes config set model.api_mode chat_completions
hermes config set agent.tool_use_enforcement true
Add to your config to models.providers:
local: {
baseUrl: "http://localhost:8080/v1",
apiKey: "sk-local",
api: "openai-completions",
models: [{
id: "LFM2.5-2.6B",
name: "LFM2.5-2.6B",
contextWindow: 131072,
maxTokens: 8192,
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }
}]
}
Add to your config to ~/.pi/agent/models.json:
{
"providers": {
"local": {
"baseUrl": "http://localhost:8080/v1",
"api": "openai-completions",
"apiKey": "local",
"models": [{ "id": "LFM2.5-2.6B" }]
}
}
}
We recommend fine-tuning LFM2.5 for your specific use case to achieve the best results.
| Name | Description | Docs | Notebook |
|---|---|---|---|
| CPT (Unsloth) | Continued Pre-Training using Unsloth for text completion. | <a href="https://docs.liquid.ai/lfm/fine-tuning/unsloth">Link</a> | <a href="https://colab.research.google.com/drive/10fm7eNMezs-DSn36mF7vAsNYlOsx9YZO?usp=sharing"><img src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/vlOyMEjwHa_b_LXysEu2E.png" width="110" alt="Colab link"></a> |
| CPT (Unsloth) | Continued Pre-Training using Unsloth for translation. | <a href="https://docs.liquid.ai/lfm/fine-tuning/unsloth">Link</a> | <a href="https://colab.research.google.com/drive/1gaP8yTle2_v35Um8Gpu9239fqbU7UgY8?usp=sharing"><img src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/vlOyMEjwHa_b_LXysEu2E.png" width="110" alt="Colab link"></a> |
| SFT (Unsloth) | Supervised Fine-Tuning with LoRA using Unsloth. | <a href="https://docs.liquid.ai/lfm/fine-tuning/unsloth">Link</a> | <a href="https://colab.research.google.com/drive/1vGRg4ksRj__6OLvXkHhvji_Pamv801Ss?usp=sharing"><img src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/vlOyMEjwHa_b_LXysEu2E.png" width="110" alt="Colab link"></a> |
| SFT (TRL) | Supervised Fine-Tuning with LoRA using TRL. | <a href="https://docs.liquid.ai/lfm/fine-tuning/trl">Link</a> | <a href="https://colab.research.google.com/drive/1j5Hk_SyBb2soUsuhU0eIEA9GwLNRnElF?usp=sharing"><img src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/vlOyMEjwHa_b_LXysEu2E.png" width="110" alt="Colab link"></a> |
| DPO (TRL) | Direct Preference Optimization with LoRA using TRL. | <a href="https://docs.liquid.ai/lfm/fine-tuning/trl">Link</a> | <a href="https://colab.research.google.com/drive/1MQdsPxFHeZweGsNx4RH7Ia8lG8PiGE1t?usp=sharing"><img src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/vlOyMEjwHa_b_LXysEu2E.png" width="110" alt="Colab link"></a> |
| GRPO (TRL) | GRPO with LoRA using TRL. | <a href="https://docs.liquid.ai/lfm/fine-tuning/trl">Link</a> | <a href="https://colab.research.google.com/github/Liquid4All/cookbook/blob/main/finetuning/notebooks/grpo_for_verifiable_tasks.ipynb"><img src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/vlOyMEjwHa_b_LXysEu2E.png" width="110" alt="Colab link"></a> |
We compared LFM2.5-2.6B with relevant sub-10B models on a diverse suite of benchmarks.
| Benchmark | LFM2.5-2.6B (2.6B) | gemma-4-E2B-it (5.1B) | gemma-4-E4B-it (8B) | Qwen3.5-4B (4.7B) | Qwen3.5-9B (9.7B) |
|---|---|---|---|---|---|
| AA-Omni-Public Index | -29.50 | -74.47 | -49.03 | -54.30 | -50.43 |
| AA-Omni-Public Acc | 8.13 | 6.37 | 8.33 | 17.63 | 21.30 |
| AA-Omni-Public Non-hallu | 59.04 | 13.67 | 37.42 | 12.66 | 8.84 |
| AIME25 | 51.87 | 26.33 | 34.27 | 49.33 | 56.07 |
| LiveCodeBenchv6 | 59.41 | 54.92 | 63.77 | 60.85 | 69.86 |
| IFBench | 59.17 | 34.08 | 39.24 | 48.40 | 56.47 |
| Multi-IF | 80.07 | 69.44 | 77.35 | 55.67 | 62.55 |
| IFStruct | 85.49 | 64.85 | 76.65 | 36.25 | 78.50 |
| BFCLv4 | 56.88 | 36.98 | 46.39 | 50.56 | 60.13 |
| ToolSandbox | 77.83 | 52.40 | 65.00 | 75.55 | 76.44 |
| ฯยณ-Bench Banking | 5.67 | 3.35 | 4.12 | 5.45 | 5.15 |
| Claw-Eval average (EN) | 62.85 | 53.14 | 58.02 | 62.28 | 66.53 |
| PinchBench | 68.22 | 44.24 | 55.09 | 71.26 | 71.45 |
| BrowseComp+ (OpenClaw) | 26.89 | 8.31 | 15.90 | 24.46 | 27.23 |
Due to its efficient LFM2 architecture, LFM2.5-2.6B is the fastest model we tested, with decode speeds of 220 tokens/s on an M5 Max and 113 tokens/s on a Ryzen AI Max+ 395. At 30 tokens/s, it allows you to run capable agents even on a phone.

LFM2.5-2.6B is the fastest model in its size class, reaching almost 15K output tokens per second at high concurrency, roughly 1.3B tokens per day on a single H100.

@article{liquidAI202626B,
author = {Liquid AI},
title = {LFM2.5-2.6B: Agents Everywhere},
journal = {Liquid AI Blog},
year = {2026},
note = {www.liquid.ai/blog/lfm2-5-2-6b},
}
@article{liquidai2025lfm2,
title = {LFM2 Technical Report},
author = {Liquid AI},
journal = {arXiv preprint arXiv:2511.23404},
year = {2025}
}