Downloads · 30 days
24
3% of all-time downloads
mkurman/LiquidAI-LFM2.5-350M-SYNTH
LiquidAI-LFM2.5-350M-SYNTH is a text generation model from mkurman. 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.
A 350M-parameter reasoning model fine-tuned from LiquidAI/LFM2.5-350M on synthetic reasoning data. It produces explicit chain-of-thought (<think … </think) before answering, and is small enough to run on CPU or modest…
Downloads · 30 days
24
3% of all-time downloads
All-time downloads
868
Public
Parameters
354M
709 MB on disk
Likes
1
Public
Click a slice to open those files.
.safetensors709 MB · 99%
From the Hugging Face model README
A 350M-parameter reasoning model fine-tuned from LiquidAI/LFM2.5-350M on
synthetic reasoning data. It produces explicit chain-of-thought (<think> … </think>) before answering, and is small enough
to run on CPU or modest GPUs while retaining the base model's 128k context window.
max_position_embeddings. │ │ │ │ │
────────────────┼──────────────────────────────────────────────────┼──────────┼─────────┼────────┼────
Base model │ LiquidAI/LFM2.5-350M │ │ │ │
Architecture │ `Lfm2ForCausalLM` (hybrid conv / full-attention) │ │ │ │
Parameters │ ~350M │ │ │ │
Hidden size │ 1024 │ │ │ │
Layers │ 16 (12 conv + 4 full-attention) │ │ │ │
Attention heads │ 16 (8 KV heads, GQA) │ │ │ │
Vocab size │ 65,536 │ │ │ │
Context length │ 128,000 │ │ │ │
Precision │ bfloat16 │ │ │ │
Chat format │ ChatML (`< │ im_start │ >` / `< │ im_end │ >`)
Fully fine-tuned for 4,000 steps on a single A100:
Datasets
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "mkurman/LiquidAI-LFM2.5-350M-SYNTH"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, dtype=torch.bfloat16, device_map="auto")
messages = [{"role": "user", "content": "Natalia sold 48 clips in April and half as many in May. How many in total?"}]
inputs = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(inputs, max_new_tokens=512, do_sample=True, temperature=0.6, top_p=0.95)
print(tok.decode(out[0][inputs.shape[-1]:], skip_special_tokens=True))
The model emits its reasoning inside <think> … </think> followed by the final answer.
TODO
Research and experimentation with small reasoning models. As a 350M model trained largely on synthetic data, it can hallucinate and make reasoning errors. Not intended for medical, legal, or other high-stakes decisions - outputs must be independently verified.
Released under the LFM Open License (lfm1.0); see LICENSE (LICENSE).
@misc{kurman2025lfm25synth,
title = {LFM2.5-350M-SYNTH},
author = {Kurman, Mariusz},
year = {2026},
url = {https://huggingface.co/mkurman/LiquidAI-LFM2.5-350M-SYNTH}
}