is the region's content: plain text for text regions, LaTeX for equations, OTSL for tables, and a short description for images and charts
Separate each region block with one blank line. Return only the parsed regions.
"""
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": input_image},
{"type": "text", "text": layout_prompt},
],
}
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
with torch.inference_mode():
outputs = model.generate(
**inputs,
do_sample=True,
temperature=0.2,
top_k=50,
repetition_penalty=1.0,
max_new_tokens=1024,
)
output = processor.batch_decode(
outputs[:, inputs["input_ids"].shape[1]:],
skip_special_tokens=True,
)[0]
print(output)
pattern = re.compile(
r"image_index=0\s+([a-z_]+)\s+\[(\d+),\s*(\d+),\s*(\d+),\s*(\d+)\]"
)
image = np.array(input_image).copy()
height, width = image.shape[:2]
for label, xmin, ymin, xmax, ymax in pattern.findall(output):
xmin, ymin, xmax, ymax = map(int, [xmin, ymin, xmax, ymax])
pt1 = (round(xmin / 1000 * width), round(ymin / 1000 * height))
pt2 = (round(xmax / 1000 * width), round(ymax / 1000 * height))
cv2.rectangle(image, pt1, pt2, (255, 0, 0), 2)
cv2.putText(image, label, (pt1[0], max(20, pt1[1] - 6)), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 0, 0), 2)
display(Image.fromarray(image))
```
**Output**
```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
image_index=0 label [76, 68, 144, 94]
Acme Inc.
image_index=0 text [78, 104, 104, 121]
acme
image_index=0 text [28, 176, 65, 197]
Profile
image_index=0 text [28, 230, 74, 252]
Account
image_index=0 text [28, 282, 80, 304]
Members
image_index=0 text [28, 334, 64, 355]
Billing
... (shortened for brevity)
```
## Object detection and grounding
**Model support:** This capability is best supported by LFM2.5-VL-3B.
Grounding asks the model to localize visible objects and return normalized coordinates. This example uses a COCO sample image with cats and remote controls, then draws the returned boxes with OpenCV.
> **Coordinate format:** The grounding examples use normalized `[0, 1000]` coordinates. Convert them back to pixels with `x / 1000 * width` and `y / 1000 * height`. Boxes are approximate, so visually inspect the result before using coordinates in downstream workflows.
```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
import json
import cv2
import numpy as np
import torch
from IPython.display import display
from PIL import Image
from transformers.image_utils import load_image
img_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"
input_image = load_image(img_url)
system_prompt = """When asked for bounding boxes for objects, return a valid JSON array.
Each array item must be an object with:
- image_id: the 0-based index of the image
- bbox_2d: [xmin, ymin, xmax, ymax] normalized integer coordinates in [0, 1000]
- label: a concise label you choose for the predicted object or region
Return one item per visible matching object or region. Return [] if none are visible."""
messages = [
{"role": "system", "content": system_prompt},
{
"role": "user",
"content": [
{"type": "image", "image": input_image},
{"type": "text", "text": "Provide bounding boxes for the two cats and the two remote controls."},
],
},
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
with torch.inference_mode():
outputs = model.generate(
**inputs,
do_sample=True,
temperature=0.2,
top_k=50,
repetition_penalty=1.0,
max_new_tokens=256,
)
output = processor.batch_decode(
outputs[:, inputs["input_ids"].shape[1]:],
skip_special_tokens=True,
)[0]
print(output)
objects = json.loads(output)
print(objects)
image = np.array(input_image).copy()
height, width = image.shape[:2]
for obj in objects:
xmin, ymin, xmax, ymax = obj["bbox_2d"]
pt1 = (round(xmin / 1000 * width), round(ymin / 1000 * height))
pt2 = (round(xmax / 1000 * width), round(ymax / 1000 * height))
cv2.rectangle(image, pt1, pt2, color=(255, 0, 0), thickness=3)
cv2.putText(image, obj["label"], (pt1[0], max(20, pt1[1] - 8)), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 2)
display(Image.fromarray(image))
```
**Output**
```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
[{"image_id": 0, "bbox_2d": [540, 49, 1000, 774], "label": "cat on the right"}, {"image_id": 0, "bbox_2d": [10, 112, 497, 986], "label": "cat on the left"}, {"image_id": 0, "bbox_2d": [523, 158, 581, 398], "label": "remote on the right"}, {"image_id": 0, "bbox_2d": [63, 150, 276, 244], "label": "remote on the left"}]
[{'image_id': 0, 'bbox_2d': [540, 49, 1000, 774], 'label': 'cat on the right'}, {'image_id': 0, 'bbox_2d': [10, 112, 497, 986], 'label': 'cat on the left'}, {'image_id': 0, 'bbox_2d': [523, 158, 581, 398], 'label': 'remote on the right'}, {'image_id': 0, 'bbox_2d': [63, 150, 276, 244], 'label': 'remote on the left'}]
```
## Tool calling
**Model support:** This capability is best supported by LFM2.5-VL-3B.
In this example, the model sees an image and can route the request to the most relevant tool. The tool schemas are generic enough to adapt to real catalog, search, or workflow APIs.
```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
import torch
from IPython.display import display
from transformers.image_utils import load_image
img_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"
input_image = load_image(img_url)
display(input_image)
tools = [
{
"name": "search_pet_care",
"description": "Search for care guidance for an animal visible in an image.",
"parameters": {
"type": "object",
"properties": {
"animal": {"type": "string", "description": "The animal visible in the image"},
"topic": {"type": "string", "description": "The care topic to search for"},
},
"required": ["animal", "topic"],
},
},
{
"name": "search_replacement_remote",
"description": "Search for replacement remote controls or remote-control accessories visible in an image.",
"parameters": {
"type": "object",
"properties": {
"item": {"type": "string", "description": "The remote-control item to search for"},
"quantity": {"type": "integer", "description": "How many matching items are visible"},
},
"required": ["item"],
},
},
]
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": input_image},
{"type": "text", "text": "Find a care guide for the animals in this image. Choose the best tool for this request."},
],
}
]
inputs = processor.apply_chat_template(
messages,
tools=tools,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
with torch.inference_mode():
outputs = model.generate(
**inputs,
do_sample=True,
temperature=0.2,
top_k=50,
repetition_penalty=1.0,
max_new_tokens=256,
)
output = processor.tokenizer.decode(
outputs[0, inputs["input_ids"].shape[1]:],
skip_special_tokens=False,
)
print(output)
```
**Output**

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
<|tool_call_start|>[search_pet_care(animal="cat", topic="sleeping")]<|tool_call_end|><|im_end|>
```
## FAQ
**Which LFM2.5-VL model should I use?**
Use `LFM2.5-VL-450M` or `LFM2.5-VL-1.6B` for fast image captioning and visual question answering. Use `LFM2.5-VL-3B` for the strongest support for multi-image prompts, grounding, document layout parsing, and tool calling.
**What image formats are supported?**
LFM2.5-VL works with common image formats supported by the image loading path you use, such as JPEG and PNG. In the examples above, images are loaded from Hugging Face URLs with `transformers.image_utils.load_image`.
**Can LFM2.5-VL return bounding boxes?**
Yes. For grounding tasks, prompt the model to return bounding boxes in a structured format such as JSON. Coordinates in these examples are normalized to `[0, 1000]`, so you can scale them back to the displayed image size.
Note that bounding boxes are approximate and can vary with prompt wording, image resolution, and generation settings. For workflows that require precise localization, inspect the returned boxes and validate them against the original image.
**Can LFM2.5-VL parse documents?**
Yes. `LFM2.5-VL-3B` can read visible text and return document layout annotations, including region labels, bounding boxes, and extracted content. This is useful for tables, forms, screenshots, reports, and other structured document images.
**Can LFM2.5-VL call tools based on an image?**
Yes. You can provide tool schemas through the chat template and ask the model to choose the relevant tool based on the visual content. For example, an image can help determine the right tool arguments.
**Can LFM2.5-VL generate or edit images?**
No. LFM2.5-VL models are image understanding models. They can analyze images, answer questions, read text, localize objects, parse layouts, and route tool calls, but they do not generate or edit images.
# Audio Models
Source: https://docs.liquid.ai/lfm/models/audio-models
Liquid's LFM audio models are among the smallest fully interleaved audio/text-in, audio/text-out models with a complete reasoning backbone — eliminating the need to combine separate TTS/ASR encoders with a standalone language model.
Natural speech synthesis with multiple voice styles and personalities.
Multilingual automatic speech recognition and transcription.
Fully interleaved voice chat with reasoning and generation in one model.
Voice-driven tool use, agent workflows, and API orchestration.
LFM2.5 Models Latest release
LFM2.5-Audio adds a custom LFM-based audio detokenizer, llama.cpp-compatible GGUFs for CPU inference, and improved ASR and TTS performance over LFM2-Audio.
1.5B · Recommended
Best audio model for most use cases. Fast, accurate, and CPU-friendly.
1.5B · Japanese
Japanese-focused audio model for ASR, TTS, and interleaved voice chat.
## LFM2 Models
1.5B · Deprecated
Use the new LFM2.5-Audio-1.5B checkpoint instead.
## Examples
Explore practical implementations using audio models:
Transcribe audio files locally in real-time using LFM2-Audio-1.5B with llama.cpp for 100% private, on-device processing.
**Platform:** Desktop · **Uses:** LFM2-Audio-1.5B
Run ASR, TTS, and interleaved conversations entirely in-browser using LFM2.5-Audio-1.5B with WebGPU acceleration.
**Platform:** Web · **Uses:** LFM2.5-Audio-1.5B
* [Liquid Playground](https://playground.liquid.ai/chat?model=cmk0wefde000204jp2knb2qr8)
* [HuggingFace Collections](https://huggingface.co/LiquidAI/collections)
* [OpenRouter API](https://openrouter.ai/liquid)
# Liquid Foundation Models
Source: https://docs.liquid.ai/lfm/models/complete-library
Liquid Foundation Models (LFMs) are a new class of multimodal architectures built for fast inference and on-device deployment. Browse all available models and formats here.
All of our models share the following capabilities:
* 32K token context length for extended conversations and document processing (128K for LFM2.5-8B-A1B)
* Designed for fast inference with [Transformers](/deployment/gpu-inference/transformers), [llama.cpp](/deployment/on-device/llama-cpp), [vLLM](/deployment/gpu-inference/vllm), [SGLang](/deployment/gpu-inference/sglang), [MLX](/deployment/on-device/mlx), [Ollama](/deployment/on-device/ollama), and [Atomic Chat](/deployment/on-device/atomic-chat)
* Trainable via SFT, DPO, VLM, and GRPO workflows with [LEAP Finetune](/lfm/fine-tuning/leap-finetune), [TRL](/lfm/fine-tuning/trl), and [Unsloth](/lfm/fine-tuning/unsloth)
* [Liquid Playground](https://playground.liquid.ai/chat?model=cmk0wefde000204jp2knb2qr8)
* [HuggingFace Collections](https://huggingface.co/LiquidAI/collections)
* [LEAP Finetune](https://github.com/Liquid4All/leap-finetune)
* [OpenRouter API](https://openrouter.ai/liquid)
Start with the model family that matches your input and output shape, then choose a runtime based on where you want to run it. Use the complete matrix below when you need exact repository and format availability.
## Model Families
Chat, tool calling, structured output, and classification.
Image understanding with LFM backbones and custom encoders.
Interleaved audio/text models for TTS, ASR, and voice chat.
Task-specific models for extraction, summarization, RAG, and translation.
## Common Workflows
Use [vLLM](/deployment/gpu-inference/vllm) or [SGLang](/deployment/gpu-inference/sglang) for high-throughput serving, and [Transformers](/deployment/gpu-inference/transformers) for direct Python inference.
Use [llama.cpp](/deployment/on-device/llama-cpp), [Ollama](/deployment/on-device/ollama), [Atomic Chat](/deployment/on-device/atomic-chat), or [MLX](/deployment/on-device/mlx) depending on platform and packaging needs. To embed a model in an iOS, Android, or desktop app, see [Build with llama.cpp](/deployment/on-device/llama-cpp/mobile).
Start with [LEAP Finetune](/lfm/fine-tuning/leap-finetune) for managed workflows, or use [TRL](/lfm/fine-tuning/trl) and [Unsloth](/lfm/fine-tuning/unsloth) for framework-level control.
Browse LiquidAI collections on Hugging Face for model weights, GGUF exports, MLX packages, ONNX exports, and model cards.
## Formats
Use the format that matches your runtime and deployment target:
* **GGUF** — Best for local CPU/GPU inference on any platform. Use with [llama.cpp](/deployment/on-device/llama-cpp), [LM Studio](/deployment/on-device/lm-studio), [Ollama](/deployment/on-device/ollama), or [Atomic Chat](/deployment/on-device/atomic-chat). Append `-GGUF` to any model name.
* **MLX** — Best for Mac users with Apple Silicon. Leverages unified memory for fast inference via [MLX](/deployment/on-device/mlx) or [Atomic Chat](/deployment/on-device/atomic-chat). Browse at [mlx-community](https://huggingface.co/mlx-community/collections?search=LFM).
* **ONNX** — Best for production deployments and edge devices. Cross-platform with ONNX Runtime across CPUs, GPUs, and accelerators. Append `-ONNX` to any model name.
### Quantization
Quantization reduces model size and speeds up inference with minimal quality loss. Available options by format:
* **GGUF** — Supports `Q4_0`, `Q4_K_M`, `Q5_K_M`, `Q6_K`, `Q8_0`, `BF16`, and `F16`. `Q4_K_M` offers the best balance of size and quality.
* **MLX** — Available in `3bit`, `4bit`, `5bit`, `6bit`, `8bit`, and `BF16`. `8bit` is recommended.
* **ONNX** — Supports `FP32`, `FP16`, `Q4`, and `Q8` (MoE models also support `Q4F16`). `Q4` is recommended for most deployments.
## Complete Model Matrix
| Model | Family | HF | GGUF | MLX | ONNX | Trainable? |
| ---------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -------------------------------------------------------------------- | --------------------------- |
| **Text-to-text Models** | | | | | | |
| [LFM2.5-1.2B-Instruct](/lfm/models/lfm25-1.2b-instruct) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct-GGUF) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct-MLX-8bit) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct-ONNX) | Yes (TRL) |
| [LFM2.5-1.2B-Thinking](/lfm/models/lfm25-1.2b-thinking) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Thinking) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Thinking-GGUF) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Thinking-MLX-8bit) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Thinking-ONNX) | Yes (TRL) |
| [LFM2.5-1.2B-JP](/lfm/models/lfm25-1.2b-jp) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-JP) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-JP-GGUF) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-JP-MLX-8bit) | [✓](https://huggingface.co/LiquidAI/LFM2.5-1.2B-JP-ONNX) | Yes (TRL) |
| [LFM2.5-350M](/lfm/models/lfm25-350m) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-350M) | [✓](https://huggingface.co/LiquidAI/LFM2.5-350M-GGUF) | [✓](https://huggingface.co/LiquidAI/LFM2.5-350M-MLX-8bit) | [✓](https://huggingface.co/LiquidAI/LFM2.5-350M-ONNX) | Yes (TRL) |
| [LFM2.5-230M](/lfm/models/lfm25-230m) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-230M) | [✓](https://huggingface.co/LiquidAI/LFM2.5-230M-GGUF) | [✓](https://huggingface.co/LiquidAI/LFM2.5-230M-MLX-8bit) | [✓](https://huggingface.co/LiquidAI/LFM2.5-230M-ONNX) | Yes (TRL) |
| [LFM2.5-2.6B](/lfm/models/lfm25-2.6b) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-2.6B) | [✓](https://huggingface.co/LiquidAI/LFM2.5-2.6B-GGUF) | [✓](https://huggingface.co/LiquidAI/LFM2.5-2.6B-MLX) | [✓](https://huggingface.co/LiquidAI/LFM2.5-2.6B-ONNX) | Yes (TRL) |
| [LFM2.5-8B-A1B](/lfm/models/lfm25-8b-a1b) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-8B-A1B) | [✓](https://huggingface.co/LiquidAI/LFM2.5-8B-A1B-GGUF) | [✓](https://huggingface.co/LiquidAI/LFM2.5-8B-A1B-MLX-8bit) | [✓](https://huggingface.co/LiquidAI/LFM2.5-8B-A1B-ONNX) | Yes (TRL) |
| [LFM2-24B-A2B](/lfm/models/lfm2-24b-a2b) | LFM2 | [✓](https://huggingface.co/LiquidAI/LFM2-24B-A2B) | [✓](https://huggingface.co/LiquidAI/LFM2-24B-A2B-GGUF) | [✓](https://huggingface.co/LiquidAI/LFM2-24B-A2B-MLX-8bit) | [✓](https://huggingface.co/LiquidAI/LFM2-24B-A2B-ONNX) | Yes (TRL) |
| [LFM2-700M](/lfm/models/lfm2-700m) | LFM2 | [✓](https://huggingface.co/LiquidAI/LFM2-700M) | [✓](https://huggingface.co/LiquidAI/LFM2-700M-GGUF) | [✓](https://huggingface.co/mlx-community/LFM2-700M-8bit) | [✓](https://huggingface.co/onnx-community/LFM2-700M-ONNX) | Yes (TRL) |
| **Vision Language Models** | | | | | | |
| [LFM2.5-VL-3B](/lfm/models/lfm25-vl-3b) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-3B) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-3B-GGUF) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-3B-MLX-8bit) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-3B-ONNX) | Yes (TRL) |
| [LFM2.5-VL-1.6B](/lfm/models/lfm25-vl-1.6b) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-1.6B) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-1.6B-GGUF) | [✓](https://huggingface.co/mlx-community/LFM2.5-VL-1.6B-8bit) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-1.6B-ONNX) | Yes (TRL) |
| [LFM2.5-VL-450M](/lfm/models/lfm25-vl-450m) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-450M) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-450M-GGUF) | ✗ | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-450M-ONNX) | Yes (TRL) |
| **Audio Models** | | | | | | |
| [LFM2.5-Audio-1.5B](/lfm/models/lfm25-audio-1.5b) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-Audio-1.5B) | [✓](https://huggingface.co/LiquidAI/LFM2.5-Audio-1.5B-GGUF) | ✗ | [✓](https://huggingface.co/LiquidAI/LFM2.5-Audio-1.5B-ONNX) | Yes (TRL) |
| [LFM2.5-Audio-1.5B-JP](/lfm/models/lfm25-audio-1.5b-jp) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-Audio-1.5B-JP) | [✓](https://huggingface.co/LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF) | ✗ | ✗ | Yes (TRL) |
| [LFM2-Audio-1.5B](/lfm/models/lfm2-audio-1.5b) | LFM2 | [✓](https://huggingface.co/LiquidAI/LFM2-Audio-1.5B) | [✓](https://huggingface.co/LiquidAI/LFM2-Audio-1.5B-GGUF) | ✗ | ✗ | No |
| **Liquid Nanos** | | | | | | |
| [LFM2.5-VL-1.6B-Extract](/lfm/models/lfm25-vl-1.6b-extract) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-1.6B-Extract) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-1.6B-Extract-GGUF) | ✗ | ✗ | Yes (TRL) |
| [LFM2.5-VL-450M-Extract](/lfm/models/lfm25-vl-450m-extract) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-450M-Extract) | [✓](https://huggingface.co/LiquidAI/LFM2.5-VL-450M-Extract-GGUF) | ✗ | ✗ | Yes (TRL) |
| [LFM2.5-Embedding-350M](/lfm/models/lfm25-embedding-350m) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-Embedding-350M) | [✓](https://huggingface.co/LiquidAI/LFM2.5-Embedding-350M-GGUF) | ✗ | ✗ | Yes (sentence-transformers) |
| [LFM2.5-ColBERT-350M](/lfm/models/lfm25-colbert-350m) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-ColBERT-350M) | [✓](https://huggingface.co/LiquidAI/LFM2.5-ColBERT-350M-GGUF) | ✗ | ✗ | Yes (PyLate) |
| [LFM2.5-Encoder-350M](/lfm/models/lfm25-encoder-350m) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-Encoder-350M) | ✗ | ✗ | ✗ | Yes (Transformers) |
| [LFM2.5-Encoder-230M](/lfm/models/lfm25-encoder-230m) | LFM2.5 (Latest release) | [✓](https://huggingface.co/LiquidAI/LFM2.5-Encoder-230M) | ✗ | ✗ | ✗ | Yes (Transformers) |
| [LFM2-350M-ENJP-MT](/lfm/models/lfm2-350m-enjp-mt) | LFM2 | [✓](https://huggingface.co/LiquidAI/LFM2-350M-ENJP-MT) | [✓](https://huggingface.co/LiquidAI/LFM2-350M-ENJP-MT-GGUF) | [✓](https://huggingface.co/mlx-community/LFM2-350M-ENJP-MT-8bit) | [✓](https://huggingface.co/onnx-community/LFM2-350M-ENJP-MT-ONNX) | Yes (TRL) |
| [LFM2-350M-Math](/lfm/models/lfm2-350m-math) | LFM2 | [✓](https://huggingface.co/LiquidAI/LFM2-350M-Math) | [✓](https://huggingface.co/LiquidAI/LFM2-350M-Math-GGUF) | ✗ | [✓](https://huggingface.co/onnx-community/LFM2-350M-Math-ONNX) | Yes (TRL) |
| [LFM2-350M-PII-Extract-JP](/lfm/models/lfm2-350m-pii-extract-jp) | LFM2 | [✓](https://huggingface.co/LiquidAI/LFM2-350M-PII-Extract-JP) | [✓](https://huggingface.co/LiquidAI/LFM2-350M-PII-Extract-JP-GGUF) | ✗ | ✗ | Yes (TRL) |
| [LFM2-2.6B-Transcript](/lfm/models/lfm2-2.6b-transcript) | LFM2 | [✓](https://huggingface.co/LiquidAI/LFM2-2.6B-Transcript) | [✓](https://huggingface.co/LiquidAI/LFM2-2.6B-Transcript-GGUF) | ✗ | [✓](https://huggingface.co/onnx-community/LFM2-2.6B-Transcript-ONNX) | Yes (TRL) |
Looking for an older model? Deprecated models and their recommended replacements are listed on the [Deprecations](/lfm/help/deprecations) page.
# Liquid Nanos
Source: https://docs.liquid.ai/lfm/models/liquid-nanos
A library of low-latency, task-specific models fine-tuned on Liquid's multimodal LFM base models. Nanos deliver high accuracy on narrow tasks while remaining small enough to deploy on-device or serve economically at high volume.
Structured data extraction from unstructured documents into JSON.
Meeting transcripts, document summaries, and content distillation.
Context-grounded Q\&A and fast multi-language document retrieval.
Low-latency bidirectional translation for short-to-medium text.
Many Nanos require specific prompting formats to work correctly. See each model's page for usage guidelines.
LFM2.5 Nanos Latest release
230M · Encoder
Compact bidirectional encoder for the tightest latency and memory budgets.
350M · Encoder
General-purpose bidirectional encoder to fine-tune for classification and more.
350M · Retrieval
Dense bi-encoder for the smallest, fastest multilingual vector index.
350M · Retrieval
Late-interaction retriever for higher accuracy and reranking quality.
1.6B · Vision Extraction
Extract user-defined fields from images into structured JSON.
450M · Vision Extraction
Compact image-to-JSON extraction model for edge workflows.
## LFM2 Nanos
350M · Extraction
Japanese PII detection into structured JSON.
2.6B · Summarization
Private, on-device meeting summarization from transcripts.
350M · Translation
Near real-time bidirectional Japanese/English translation.
350M · Reasoning
Tiny reasoning model for math problem solving.
* [Liquid Playground](https://playground.liquid.ai/chat?model=cmk0wefde000204jp2knb2qr8)
* [HuggingFace Collections](https://huggingface.co/LiquidAI/collections)
* [OpenRouter API](https://openrouter.ai/liquid)
# Text Models
Source: https://docs.liquid.ai/lfm/models/text-models
Liquid's LFM text models range from 350M to 8B parameters, delivering ultra-low-latency generation while matching the performance of much larger models. They come in both dense and MoE variants to deploy flexibly across different devices.
Conversational interactions, text transformations, and summarization.
Function invocation, agent workflows, and API orchestration.
JSON generation, form filling, and data extraction from text.
Intent detection, routing, content labeling, and triage.
LFM2.5 Models Latest release
LFM2.5 builds on the LFM2 architecture with extended pre-training and reinforcement learning for improved chat, instruction-following, and tool-calling performance.
1.2B · Recommended
Instruction-tuned for chat. Best for most use cases.
1.2B · Reasoning
Optimized for math and logical problem-solving.
1.2B · Japanese
Fine-tuned model for high-quality Japanese text generation.
2.6B · Agentic
Dense model trained for agentic workloads, with 128K context and native tool calling for on-device agents.
8B · 1.5B active · MoE
Mixture-of-experts reasoning model with 128K context for on-device tool calling and agentic tasks.
350M · Fastest
Compact LFM2.5 model for edge devices and low latency deployments.
230M · Smallest
Smallest LFM2.5 model. Built for data extraction and lightweight on-device agents.
## LFM2 Models
24B · 2B active · MoE
Our largest model for laptops and single-GPU applications.
700M
Mid sized model for deploying on most devices.
## Examples
Explore practical implementations using text models:
Generate creative marketing slogans on-device using LFM2-700M with single-turn generation and traditional Android Views.
**Platform:** Android · **Uses:** LFM2-700M
Share web pages from browsers to generate private, on-device summaries with web scraping and LFM2-700M processing.
**Platform:** Android · **Uses:** LFM2-700M
Generate structured JSON recipes using LFM2-700M with constrained generation and the @Generatable annotation.
**Platform:** Android · **Uses:** LFM2-700M
Build intelligent agents with tool invocation, MCP integration, and context management using LFM2-1.2B-Tool on Android.
**Platform:** Android · **Uses:** LFM2-1.2B-Tool
Bidirectional translation with automatic language detection. Fine-tuned LFM2-1.2B outperforms models 3x larger.
**Platform:** Desktop · **Uses:** LFM2-1.2B (fine-tuned)
* [Liquid Playground](https://playground.liquid.ai/chat?model=cmk0wefde000204jp2knb2qr8)
* [HuggingFace Collections](https://huggingface.co/LiquidAI/collections)
* [OpenRouter API](https://openrouter.ai/liquid)
# Vision Models
Source: https://docs.liquid.ai/lfm/models/vision-models
Liquid's LFM vision models pair our lightweight LFM text backbones with SigLIP2 image encoders, delivering fast multimodal inference on-device while matching larger VLMs in quality.
Detailed descriptions, alt-text generation, and visual summarization.
Text recognition, form parsing, and document digitization.
Scene understanding, spatial relations, and visual Q\&A.
Always-on activity recognition and scene monitoring on-device.
LFM2.5 Models Latest release
LFM2.5-VL builds on LFM2-VL with extended reinforcment learning training for higher performance while maintaining the same architecture and deployment footprint.
3B · Most capable
Strongest grounding, screen understanding, and function calling.
1.6B · Recommended
Best vision model for most use cases. Fast and accurate.
450M · Fastest
Compact vision model for edge deployment and fast inference.
## Examples
Explore practical implementations using vision models:
Analyze images, answer visual questions, and generate descriptions using LFM2-VL-1.6B on Android with Jetpack Compose and Coil.
**Platform:** Android · **Uses:** LFM2-VL-1.6B
Extract structured payment data from invoice PDFs using LFM2.5-VL-1.6B with file monitoring and 100% local processing.
**Platform:** Desktop · **Uses:** LFM2.5-VL-1.6B
Generate video captions directly in-browser using LFM2.5-VL-1.6B with WebGPU acceleration and ONNX Runtime Web.
**Platform:** Web · **Uses:** LFM2.5-VL-1.6B
Learn to fine-tune LFM2-VL models (450M, 1.6B, 3B) with LoRA, structured generation, and evaluation pipelines for image classification.
**Platform:** Desktop · **Uses:** LFM2-VL-450M, 1.6B, 3B
* [Liquid Playground](https://playground.liquid.ai/chat?model=cmk0wefde000204jp2knb2qr8)
* [HuggingFace Collections](https://huggingface.co/LiquidAI/collections)
* [OpenRouter API](https://openrouter.ai/liquid)