LiquidAI LFM2.5-2.6B: Een hybride model voor on-device agentische workloads

Belangrijkste kenmerken

  • Best-in-class agent: Concurrerend met modellen die vier keer groter zijn wat betreft toolgebruik, het opvolgen van instructies en agentische taken in meerdere stappen.
  • Agentisch reinforcement learning: Getraind binnen de meest populaire agentic harnesses om de compatibiliteit te verbeteren.
  • Efficiënte inferentie: Behaalt 220 tok/s op een Apple M5 Max en 113 tok/s op een AMD Ryzen CPU, met een geheugengebruik van minder dan 2,5 GB.

---

Modeldetails

Technische specificaties

LFM2.5-2.6B is een algemeen tekstmodel met de volgende eigenschappen:

  • Totaal aantal parameters: 2,69 miljard (2.69B)
  • Aantal lagen: 30 (bestaande uit 22 double-gated short convolution blocks en 8 GQA)
  • Trainingsbudget: 34 biljoen tokens
  • Vocabulaire grootte: 128.000
  • Contextlengte: 131.072 tokens
  • Ondersteunde talen: Engels, Arabisch, Chinees, Frans, Duits, Italiaans, Japans, Koreaans, Portugees, Spaans, Vietnamees, Thai, Indonesisch, Hindi, Russisch en Pools.

Aanbevolen generatieparameters:

  • Temperature: 0.1
  • Top_k: 50
  • Repetition_penalty: 1.1

Modelvarianten

ModelBeschrijving
LFM2.5-2.6B-BasePre-trained basismodel, geschikt voor fine-tuning.
LFM2.5-2.6BPost-trained model, geoptimaliseerd voor agentische workloads.
LFM2.5-2.6B-GGUFGekwantiseerd formaat voor llama.cpp en compatibele tools; geoptimaliseerd voor CPU-inferentie en lokale implementatie met gereduceerd geheugengebruik.
LFM2.5-2.6B-ONNXONNX Runtime-formaat voor crossplatform implementatie (cloud, edge, mobiel).
LFM2.5-2.6B-MLXMLX-formaat geoptimaliseerd voor snelle inferentie op Apple Silicon Mac-apparaten.

Toepassingen: Het model wordt aanbevolen voor agentische workloads, toolgebruik, data-extractie, RAG en workflows met een lange context. Het is niet aanbevolen voor agentisch programmeren (coding) of taken die zeer specifieke, uitgebreide kennis vereisen.

---

Chat Template en Redeneren

LFM2.5 maakt gebruik van een formaat dat lijkt op ChatML.

Voorbeeld:

<|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

Let op: LFM2.5-2.6B is een puur redeneermodel dat altijd nadenkt voordat het antwoordt. Het voegt automatisch een <think> tag toe in de chat template bij de start van het antwoord van de assistent.

---

Toolgebruik (Function Calling)

LFM2.5 ondersteunt function calling in vier stappen:

  1. Functiedefinitie: De lijst met tools wordt als een JSON-object in de systeemprompt verstrekt (of via tokenizer.applychattemplate() met tools=....).
  2. Functieaanroep: Standaard schrijft LFM2.5 Python-achtige functieaanroepen (een Python-lijst tussen de speciale tokens <|toolcallstart|> en <|toolcallend|>). Dit gedrag kan worden overschreven door in de systeemprompt te vragen om JSON-functieaanroepen.
  3. Functie-uitvoering: De aanroep wordt uitgevoerd en het resultaat wordt teruggestuurd met de rol tool.
  4. Eindantwoord: LFM2.5 interpreteert de output van de tool en geeft een antwoord in platte tekst terug.

Voorbeeld van interactie:

<|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|>

---

Training

Het model is pre-trained op ongeveer 34 biljoen tokens. Tijdens een mid-training fase is het contextvenster uitgebreid naar 128K. De post-training transformeert het basismodel tot een agent via vier fasen:

  1. Supervised fine-tuning (twee rondes).
  2. Per-domein teacher specialization.
  3. Multi-domein on-policy distillatie.
  4. Agentisch reinforcement learning.

Met name het agentische reinforcement learning stelt het model in staat om direct getraind te worden binnen populaire agentic harnesses, waardoor het betrouwbaarder werkt met tools, systeemprompts en interactiepatronen uit die omgevingen.

---

Inferentie en Implementatie

LFM2.5 wordt ondersteund door diverse frameworks:

FrameworkBeschrijving
TransformersEenvoudige inferentie met directe toegang tot model-internals.
vLLMHigh-throughput productie-implementaties met GPU.
llama.cppCrossplatform inferentie met CPU offloading.
MLXMachine learning framework van Apple, geoptimaliseerd voor Apple Silicon.
LM StudioDesktopapplicatie voor het lokaal draaien van LLM's.
SGLangHigh-throughput productie-implementaties met GPU.

Snelstart met Transformers (compatibel met 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" # ontkies op compatibele 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,
)

Gebruik met vLLM (Server setup)

# Installeer vLLM via pip:
pip install vllm

# Start de vLLM server:
vllm serve "LiquidAI/LFM2.5-2.6B"

# Roep de server aan via curl (OpenAI-compatibele API):
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "LiquidAI/LFM2.5-2.6B",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'

---

Fine-Tuning

Voor optimale resultaten wordt aangeraden LFM2.5 te fine-tunen voor specifieke use cases. Ondersteunde methoden zijn:

  • CPT (Unsloth): Continued Pre-Training voor tekstaanvulling of vertaling.
  • SFT (Unsloth/TRL): Supervised Fine-Tuning met LoRA.
  • DPO (TRL): Direct Preference Optimization met LoRA.
  • GRPO (TRL): GRPO met LoRA.

---

Prestaties

Benchmarks

Vergelijking van LFM2.5-2.6B met andere modellen onder de 10B parameters:

BenchmarkLFM2.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 Acc8.136.378.3317.6321.30
AA-Omni-Public Non-hallu59.0413.6737.4212.668.84
AIME2551.8726.3334.2749.3356.07
LiveCodeBenchv659.4154.9263.7760.8569.86
IFBench59.1734.0839.2448.4056.47
Multi-IF80.0769.4477.3555.6762.55
IFStruct85.4964.8576.6536.2578.50
BFCLv456.8836.9846.3950.5660.13
ToolSandbox77.8352.4065.0075.5576.44
$\tau^3$-Bench Banking5.673.354.125.455.15
Claw-Eval average (EN)62.8553.1458.0262.2866.53
PinchBench68.2244.2455.0971.2671.45
BrowseComp+ (OpenClaw)26.898.3115.9024.4627.23

Inferentiesnelheid

  • CPU: Dankzij de efficiënte LFM-architectuur is dit het snelste geteste model, met decodeersnelheden van 220 tokens/s op een M5 Max en 113 tokens/s op een Ryzen AI Max+ 395. Met 30 tokens/s kunnen geavanceerde agenten zelfs op een telefoon worden gedraaid.
  • GPU: Het is het snelste model in zijn grootteklasse, met bijna 15K output-tokens per seconde bij hoge concurrency (ongeveer 1,3 miljard tokens per dag op een enkele H100).

---

Referenties

Citatieformaten:

@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}
}