> ## Documentation Index
> Fetch the complete documentation index at: https://docs.liquid.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# LFM2.5-8B-A1B

> 8B parameter Mixture-of-Experts model with 1.5B active parameters for fast, reliable tool calling and 128K context

export const TextLlamacpp = ({ggufRepo, samplingFlags}) => <div>
<p><strong>Install:</strong></p>
<CodeBlock language="bash">
{`brew install llama.cpp`}
</CodeBlock>
<p><strong>Run:</strong></p>
<CodeBlock language="bash">
{`llama-cli -hf ${ggufRepo} -c 4096 --color -i \\
    ${samplingFlags}`}
</CodeBlock>
<p>The <code>-hf</code> flag downloads the model directly from Hugging Face. For other installation methods and advanced usage, see the <a href="/docs/inference/llama-cpp">llama.cpp guide</a>.</p>
</div>;

export const TextSglang = ({modelId, toolCallParser, samplingParams}) => <div>
<p><strong>Install:</strong></p>
<CodeBlock language="bash">
{`uv pip install "sglang>=0.5.10"`}
</CodeBlock>
<p><strong>Launch server:</strong></p>
<CodeBlock language="bash">
{toolCallParser ? `sglang serve \\
    --model-path ${modelId} \\
    --host 0.0.0.0 \\
    --port 30000 \\
    --tool-call-parser ${toolCallParser}` : `sglang serve \\
    --model-path ${modelId} \\
    --host 0.0.0.0 \\
    --port 30000`}
</CodeBlock>
<p><strong>Query (OpenAI-compatible):</strong></p>
<CodeBlock language="python">
{`from openai import OpenAI

client = OpenAI(base_url="http://localhost:30000/v1", api_key="None")

response = client.chat.completions.create(
    model="${modelId}",
    messages=[{"role": "user", "content": "What is machine learning?"}],
    ${samplingParams || "temperature=0.3,"}
)

print(response.choices[0].message.content)`}
</CodeBlock>
</div>;

export const TextVllm = ({modelId, samplingParams, maxTokens}) => <div>
<p><strong>Install:</strong></p>
<CodeBlock language="bash">
{`pip install vllm==0.14`}
</CodeBlock>
<p><strong>Run:</strong></p>
<CodeBlock language="python">
{`from vllm import LLM, SamplingParams

llm = LLM(model="${modelId}")

sampling_params = SamplingParams(${samplingParams}max_tokens=${maxTokens || 512})

output = llm.chat("What is machine learning?", sampling_params)
print(output[0].outputs[0].text)`}
</CodeBlock>
</div>;

export const TextTransformers = ({modelId, samplingParams}) => <div>
<p><strong>Install:</strong></p>
<CodeBlock language="bash">
{`pip install "transformers>=5.2.0" torch accelerate`}
</CodeBlock>
<p><strong>Download & Run:</strong></p>
<CodeBlock language="python">
{`from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "${modelId}"
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
    dtype="bfloat16",
)
tokenizer = AutoTokenizer.from_pretrained(model_id)

inputs = tokenizer.apply_chat_template(
    [{"role": "user", "content": "What is machine learning?"}],
    add_generation_prompt=True,
    return_tensors="pt",
    tokenize=True,
    return_dict=True,
).to(model.device)

output = model.generate(**inputs, ${samplingParams}max_new_tokens=512)
input_length = inputs["input_ids"].shape[1]
response = tokenizer.decode(output[0][input_length:], skip_special_tokens=True)
print(response)`}
</CodeBlock>
</div>;

<a href="/lfm/models/text-models" className="back-button">← Back to Text Models</a>

LFM2.5-8B-A1B is Liquid AI's Mixture-of-Experts model, combining 8B total parameters with only 1.5B active parameters per forward pass with a 128K context window and chain of thought reasoning. This model delivers exceptional performance in tool calling and agentic tasks while running on-device.

<div style={{display: 'flex', gap: '0.5rem', margin: '0.5rem 0 1.5rem 0'}}>
  <a href="https://huggingface.co/LiquidAI/LFM2.5-8B-A1B" style={{padding: '0.35rem 0.7rem', borderRadius: '4px', fontSize: '0.85rem', fontWeight: 600, textDecoration: 'none', backgroundColor: '#fbbf24'}}><span style={{color: '#000'}}>HF</span></a>
  <a href="https://huggingface.co/LiquidAI/LFM2.5-8B-A1B-GGUF" style={{padding: '0.35rem 0.7rem', borderRadius: '4px', fontSize: '0.85rem', fontWeight: 600, textDecoration: 'none', backgroundColor: '#60a5fa'}}><span style={{color: '#000'}}>GGUF</span></a>
  <a href="https://huggingface.co/LiquidAI/LFM2.5-8B-A1B-MLX-8bit" style={{padding: '0.35rem 0.7rem', borderRadius: '4px', fontSize: '0.85rem', fontWeight: 600, textDecoration: 'none', backgroundColor: '#c4b5fd'}}><span style={{color: '#000'}}>MLX</span></a>
  <a href="https://huggingface.co/LiquidAI/LFM2.5-8B-A1B-ONNX" style={{padding: '0.35rem 0.7rem', borderRadius: '4px', fontSize: '0.85rem', fontWeight: 600, textDecoration: 'none', backgroundColor: '#86efac'}}><span style={{color: '#000'}}>ONNX</span></a>
</div>

## Specifications

| Property       | Value            |
| -------------- | ---------------- |
| Parameters     | 8B (1.5B active) |
| Context Length | 128K tokens      |
| Architecture   | LFM2.5 (MoE)     |

<div className="use-cases">
  <CardGroup cols={3}>
    <Card title="128K Context" icon="text-width">
      Extended context window for long documents and conversations
    </Card>

    <Card title="MoE Efficiency" icon="microchip">
      8B quality, 1.5B inference cost
    </Card>

    <Card title="Tool Calling" icon="wrench">
      Native function calling for agentic workflows
    </Card>
  </CardGroup>
</div>

## Quick Start

<Tabs>
  <Tab title="Transformers">
    Quick start with Transformers (compatible with `transformers>=5.0.0`):

    ```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
    from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer

    model_id = "LiquidAI/LFM2.5-8B-A1B"
    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,
    ).to(model.device)

    output = model.generate(
        input_ids,
        do_sample=True,
        temperature=0.2,
        top_k=80,
        repetition_penalty=1.05,
        max_new_tokens=8192,
        streamer=streamer,
    )
    ```
  </Tab>

  <Tab title="llama.cpp">
    <TextLlamacpp ggufRepo="LiquidAI/LFM2.5-8B-A1B-GGUF" samplingFlags="--temp 0.2 --top-k 80 --repeat-penalty 1.05" />
  </Tab>

  <Tab title="vLLM">
    <TextVllm modelId="LiquidAI/LFM2.5-8B-A1B" samplingParams="temperature=0.2, top_k=80, repetition_penalty=1.05, " maxTokens="8192" />
  </Tab>

  <Tab title="SGLang">
    <TextSglang modelId="LiquidAI/LFM2.5-8B-A1B" toolCallParser="lfm2" samplingParams={'temperature=0.2,\n    extra_body={"top_k": 80, "repetition_penalty": 1.05},'} />
  </Tab>
</Tabs>
