K2-Horizon-3.7B-GGUF
[!NOTE] This repository contains GGUF versions of the IFM/K2-Horizon-3.7B for use with
llama.cpp.Multiple precision and quantization variants are available, including
BF16,Q8_0,Q6_K,Q5_K_M,Q5_0, andQ4_K_M. All GGUF files include tokenizer metadata and a llama.cpp-compatible chat template.Compatibility: These models require a version of
llama.cppcontaining K2 Horizon architecture support. PR to llama.cpp is in progress. MBZUAI-IFM fork of llama.cpp is in https://github.com/MBZUAI-IFM/llama.cpp/tree/model/K2Horizon
K2-Horizon-3.7B is the small dense member of the K2-Horizon family: a 3.7B-core decoder-only model with a 512K context window.
K2-Horizon-3.7B Highlights
- Strong small-model baseline. A dense model evaluated on the same agentic, coding, and reasoning benchmarks as the rest of the family.
- 512K context. Native 524,288-token context from the midtraining stages onward.
- Intermediate checkpoints. Intermediate checkpoints are released so capability changes can be studied across training rather than at a single checkpoint.
- Fully open. Training data and recipe, training code, and evaluation resources are public.
Benchmark Results
The chart at the top of this card shows K2-Horizon-3.7B against selected reference models. The table below lists every comparison model used in the figure.
Full Results
| Open-weight dense models | |||||
|---|---|---|---|---|---|
| K2-Horizon-3.7B | Qwen3.5-4B | G9v3-3B | Granite 4.2-3B | Nemotron 3 Nano-4B | |
| # Params | 3.7B | 4B | 3B | 3B | 4B |
| # Activated params | 3.7B | 4B | 3B | 3B | 4B |
| Architecture | Dense | Dense | Dense | Dense | Dense |
| Math | |||||
| HMMT Feb 2026Competition mathematics | 70.5 | 61.6 | 34.1 | 57.2 | 34.7 |
| Coding | |||||
| SWE-bench VerifiedSoftware engineering | 68.6 | 41.2 | 16.4 | 32.2 | 1.8 |
| Scientific Reasoning | |||||
| GPQA DiamondGraduate-level science QA | 65.4 | 77.1 | 43.8 | 55.9 | 51.3 |
| HLEExpert-level reasoning | 12.9 | 9.9 | 4.5 | 6.6 | 4.9 |
| Coding | |||||
| SciCodeScientific coding | 25.9 | 16.1 | 17.7 | 24.9 | 16.4 |
| Terminal-Bench 2.1Agentic terminal use | 25.1 | 25.8 | 6.0 | 13.9 | 3.7 |
| Agents | |||||
| tau3-BankingAgentic tool use | 17.7 | 6.8 | — | 5.6 | — |
| BFCL v4Function calling | 50.9 | 55.7 | 47.9 | 50.8 | 36.8 |
Scores in %. Bold marks the best score in each row. Baseline protocols may differ;
GGUF BF16 vs. Quantized
| K2-Horizon-3.7B | IFEval (Prompt) | GSM8K | MBPP | MMLU-Pro | GPQA-Diamond | BBH (3-shot) | AIME 26 (avg @ 4) | Average |
|---|---|---|---|---|---|---|---|---|
| GGUF-BF16 | 83.7 | 93.2 | 84.2 | 59.3 | 68.6 | 31.5 | 91.6 | 73.2 |
| GGUF-Q4_K_M | 80.4 | 93.2 | 77.6 | 57.6 | 58.5 | 22.9 | 74.1 | 66.3 |
| GGUF-Q5_0 | 81.7 | 93.1 | 78.4 | 63.0 | 65.6 | 33.4 | 85.8 | 71.6 |
| GGUF-Q5_K_M | 85.0 | 94.3 | 79.2 | 60.7 | 66.6 | 35.1 | 81.6 | 71.8 |
| GGUF-Q6_K | 85.7 | 94.0 | 82.4 | 59.8 | 65.6 | 28.3 | 87.5 | 71.9 |
| GGUF-Q8_0 | 82.8 | 94.4 | 82.0 | 59.4 | 66.1 | 29.6 | 85.8 | 71.4 |
Quickstart
Serving
vLLM, recipe at recipes.vllm.ai/IFM:
vllm serve IFM/K2-Horizon-3.7B \
--trust-remote-code \
--dtype bfloat16 \
--max-model-len 131072 \
--tensor-parallel-size 1 \
--reasoning-parser k2_horizon \
--enable-auto-tool-choice \
--tool-call-parser k2_horizon
SGLang, this is the recipe validated in the SGLang K2 Horizon cookbook:
sglang serve \
--model-path IFM/K2-Horizon-3.7B \
--revision c177771836a4c460743c00002c22483f6f18d1eb \
--tp 1 \
--dtype bfloat16 \
--attention-backend fa3 \
--reasoning-parser k2_horizon \
--host 0.0.0.0 \
--port 30000
API Usage
[!Tip] Recommended settings:
reasoning_effort="high",temperature=1.0,top_p=0.95, and at least 32,768 output tokens. Reasoning depth is selected per request throughchat_template_kwargs. Thinking is returned inreasoning_contentand the answer incontent.
from openai import OpenAI
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
response = client.chat.completions.create(
model="IFM/K2-Horizon-3.7B",
messages=[{"role": "user", "content": "Explain the result step by step."}],
temperature=1.0,
top_p=0.95,
max_tokens=32768,
extra_body={"chat_template_kwargs": {"reasoning_effort": "high", "tool_call_format": "xml"}},
)
message = response.choices[0].message
print("Reasoning:", getattr(message, "reasoning_content", None))
print("Answer:", message.content)
Our model supports multiple tool calls formats, which can be changed with chat_template_kwargs. The supported values are json, xml, and xml_typed . The default is xml. Keep --tool-call-parser k2_horizon enabled to parse the selected format.
Transformers
Validated with Transformers 5.15.0, PyTorch 2.13.0, Safetensors 0.8.0.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "IFM/K2-Horizon-3.7B"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id, device_map="auto", dtype="bfloat16", low_cpu_mem_usage=True, trust_remote_code=True
)
inputs = tokenizer("Explain why long-context evaluation is difficult.", return_tensors="pt").to(model.device)
inputs.pop("token_type_ids", None)
outputs = model.generate(**inputs, max_new_tokens=32768, temperature=1.0, top_p=0.95, do_sample=True)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Best Practices
- Reasoning effort: always
high. All reported results use high reasoning effort. Pass{"chat_template_kwargs": {"reasoning_effort": "high"}}on every request;mediumandlowtrade accuracy for speed and are not recommended for evaluation. - Sampling parameters.
temperature=1.0,top_p=0.95. - Output length. Allow at least 32,768 output tokens so reasoning is never cut off. Truncated reasoning is a failed response, not a shorter one.
- Serving. Use the validated SGLang recipe above: BF16, TP=1, FlashAttention-3. Full recipes for every K2-Horizon size, with measured H200 latency and throughput, are in the SGLang cookbook.
- Parsers. Enable the
k2_horizonreasoning parser for chat, and add thek2_horizontool-call parser for agent use. Leave both off for plain completion-style generation. - Revisions. Pin a revision tag when reproducibility matters.
mainis the default checkpoint;base_finaland themid_*_finaltags identify training stages.
Citation
@misc{k2horizon2026,
title = {Introducing K2 Horizon: Frontier Performance, Radically Open},
author = {{IFM Team}},
year = {2026},
url = {https://ifm.ai/blog/k2/},
}