Model reference · open weights

LFM2.5-VL-Extract

LLMs LiquidAI Vision + text 2 builds Its own licence terms 1k dl/mo

LFM2.5-VL-Extract is an open-weight language model from LiquidAI. LFM2.5-VL-1.6B-Extract (BF16) weighs 3.2 GB; the smallest configuration that runs it is RTX 3060 12 GB.

For self-hosting, compare this build's requirements below with the GPU you plan to rent.

  • LFM2.5-VL-Extract is a 1.6B parameter vision-language model by LiquidAI designed to extract user-defined fields from images into JSON format.
  • It supports a context length of 128,000 tokens, operates in English, and uses the LFM Open License v1.0.

Summary of the LiquidAI/LFM2.5-VL-1.6B-Extract model card, 2026-10-01

What it is

Released byLiquidAI
Released2026-05-26
Parameters1.6B
VRAM3.2 GB for the weights

What it runs on

Memory and cards for LFM2.5-VL-1.6B-Extract (BF16)

3.2 GBweights, file size
1.9 GBruntime overhead, at least
128,000 tokenscontext max

How much memory each request adds isn't estimated yet for this architecture. The weights need at least the cards below, plus room for the context.

CardWeights alone
RTX 3060 12 GBfits
RTX 4060 Ti 16 GBfits
RTX 3090 24 GBfits
RTX 4090 24 GBfits
RTX 5090 32 GBfits
L40S 48 GBfits
A100 80 GBfits
H100 80 GBfits
RTX PRO 6000 Blackwell 96 GBfits
DGX Spark (GB10) 128 GB unifiedfits
H200 141 GBfits
B200 180 GBfits

Builds

Sizes, precisions & builds

BuildParamsPrecisionWeightsSmallest setup
LFM2.5-VL-1.6B-Extract (above) ↗ 1.6BBF16 3.2 GBRTX 3060 12 GB
LFM2.5-VL-450M-Extract ↗ 449MBF16 897 MBRTX 3060 12 GB

From the model card

What LiquidAI says about LFM2.5-VL-Extract

Read the model card

src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/2b08LKpev0DNEk6DlnWkY.png" alt="Liquid AI" style="width: 100%; max-width: 100%; height: auto; display: inline-block; margin-bottom: 0.5em; margin-top: 0.5em;" />

LFM2.5-VL-1.6B-Extract

LFM2.5-VL-1.6B-Extract extracts user-defined fields from images and returns them as JSON. It is Liquid AI's first vision model in the Liquid Nanos collection—compact, task-specific models built for production workflows—and extends the Extract family alongside LFM2-1.2B-Extract for text documents.

⚙️ How it works

You specify what to extract as a YAML field list in the system prompt, and the model returns a JSON object with those fields. Structured outputs integrate cleanly with rule-based systems and downstream pipelines. Use it out of the box or fine-tune for domain-specific extraction.

  • System prompt:
wood_color: The overall coloration of the wood surface
wood_texture: The tactile quality of the wood surface
wood_pattern: The partern types visible on the wood surface
  • User prompt:

  • Output:

{
  "wood_color": "light tan to beige with darker brown streaks",
  "wood_texture": "smooth with visible grain patterns",
  "wood_pattern": "wavy, linear, irregular"
}

Our model supports the enum feature, which lets you provide a list of possible choices alongside the field description as follows, and the model will return one of the listed values as its answer.

  • System prompt:
wood_color: The overall coloration of the wood surface, such as blue, red, or light tan
wood_texture: The tactile quality of the wood surface, select from smooth, rough, or grainy
wood_pattern: The partern types visible on the wood surface, e.g., straight, wavy, or curly

🌟 Use cases

  • Detecting safety-critical events in images (e.g. fallen person, fire, leakage) to trigger automated safety systems.
  • Collecting statistical information about objects across video frames for analytics pipelines.
  • Auto-tag product images with structured attributes for Retail/E-commerce.

📄 Model details

PropertyDetail
Parameters (LM only)1.2B
Vision encoderSigLIP2 (~400M, SigLIP-2 paper)
Backbone layershybrid conv+attention
Image inputSingle image, dynamic resolution
Context128,000 tokens
Vocab size65,536 (text)
Precisionbfloat16
LicenseLFM Open License v1.0

📊 Performance

We evaluated LFM2.5-VL-1.6B-Extract on a 2,000-sample benchmark of (image, schema, JSON) triples, with reference labels generated by an ensemble of frontier multimodal models. Predictions are scored on the following three dimensions:

  • JSON Validity — share of samples producing strict-parseable JSON
  • Schema Consistency F1 Score — set-level F1 over predicted vs requested field names, macro-averaged across samples
  • VLM Judge Score — match against the image directly, judged by a separate vision model (Qwen/Qwen3.5-35B-A3B)
ModelParamsJSON ValidityF1 ScoreVLM Judge Score
LFM2.5-VL-1.6B-Extract1.6B99.699.690.6
LFM2.5-VL-1.6B1.6B91.875.866.0
FastVLM-1.5B1.91B87.380.350.9
SmolVLM2-2.2B-Instruct2.25B84.482.964.8
Qwen3.5-2B2.27B97.997.789.7
gemma-4-E2B-it2.3B97.497.184.4
InternVL3_5-2B2.35B99.699.287.7
(ref) Qwen3-VL-4B-Instruct4.44B99.899.792.0
(ref) InternVL3_5-4B4.73B99.599.490.2

LFM2.5-VL-1.6B-Extract outperforms similarly-sized (~2B) open-source VLMs on this benchmark and is competitive with models 2× its size.

Reproducing these numbers: The full evaluation pipeline, which includes extraction, VLM judging, and metric aggregation, is bundled in this repository under model_eval/. Setup, configuration, and run instructions are in the folder's README.

Scope: These numbers characterize the model on the input/output form it is designed for: a single input image, a YAML field list as the schema, and a flat JSON object as the output. Performance is not expected to transfer to vastly different tasks, e.g. multi-image reasoning or free-form VQA.

🏃 How to run

You can run LFM2.5-VL-1.6B-Extract with Hugging Face transformers v5.1 or newer:

pip install transformers pillow
from transformers import AutoProcessor, AutoModelForImageTextToText
from transformers.image_utils import load_image

model_id = "LiquidAI/LFM2.5-VL-1.6B-Extract"
model = AutoModelForImageTextToText.from_pretrained(
    model_id,
    device_map="auto",
    dtype="bfloat16",
    trust_remote_code=True,
)
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)

image = load_image("https://huggingface.co/LiquidAI/LFM2.5-VL-1.6B-Extract/resolve/main/sample_image.png")

fields_yaml = """wood_color: The overall coloration of the wood surface
wood_texture: The tactile quality of the wood surface
wood_pattern: The pattern types visible on the wood surface"""

system_prompt = f"""Extract the following from the image:

{fields_yaml}

Respond with only a JSON object. Do not include any text outside the JSON."""

conversation = [
    {"role": "system", "content": system_prompt},
    {"role": "user",   "content": [{"type": "image", "image": image}]},
]

inputs = processor.apply_chat_template(
    conversation,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True,
    tokenize=True,
).to(model.device)

outputs = model.generate(**inputs, max_new_tokens=512, do_sample=False)
response = processor

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms