Instructions to use SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16 # Run inference directly in the terminal: llama cli -hf SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16 # Run inference directly in the terminal: llama cli -hf SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16 # Run inference directly in the terminal: ./llama-cli -hf SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
Use Docker
docker model run hf.co/SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
- LM Studio
- Jan
- vLLM
How to use SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
- SGLang
How to use SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Ollama
How to use SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF with Ollama:
ollama run hf.co/SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
- Unsloth Desktop
- Pi
How to use SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF with Docker Model Runner:
docker model run hf.co/SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
- Lemonade
How to use SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
Run and chat with the model
lemonade run user.K2-Horizon-MoVA-36B-A4B-GGUF-BF16
List all available models
lemonade list
- Hermes Agent
How to use SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
K2-Horizon-MoVA-36B-A4B-GGUF
This repository contains GGUF versions of the IFM/K2-Horizon-MoVA-36B-A4B for use with
llama.cpp.The model tensors are stored in their original BF16 precision. The GGUF files include the 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-MoVA-36B-A4B is the sparse member of the K2-Horizon family: a Mixture-of-Experts model with Mixture-of-Values attention (MoVA) that stores 36B parameters and runs 4B per token. We have released the final checkpoint; intermediate checkpoints, along with the data and the training code, will be released.
K2-Horizon-MoVA-36B-A4B Highlights
- Frontier-class results at 4B active parameters. On agentic and reasoning benchmarks it outscores open weight dense (approximately 30B model size) and MoE models up to 15× its size; and also performs competitively against closed frontier models (see Benchmark Results).
- 512K context. Native 524,288-token context from the midtraining stages onward.
- Intermediate checkpoints. Intermediate checkpoints will be released so capability changes can be studied across training rather than at a single checkpoint.
- Fully open. Training data/recipe and the training code will be made public.
Benchmark Results
| Open-weight models | |||||||
|---|---|---|---|---|---|---|---|
| K2-Horizon-MoVA-36B-A4B | Nemotron 3 Ultra | Nemotron 3 Super | G9v3-39A5B | Qwen3.6-35B-A3B | Muse Glimmer-30B | Gemma 4 31B-it | |
| # Params | 36B | 550B | 120B | 39B | 35B | 30B | 31B |
| # Activated params | 4B | 55B | 12B | 5B | 3B | 30B | 31B |
| Architecture | MoE | MoE | MoE | MoE | MoE | Dense | Dense |
| Agents | |||||||
tau3-Banking Agentic tool use | 26.8 | 14.2 | 10.3 | 22.1 | 9.3 | 23.5 | 14.8 |
| Coding | |||||||
Terminal-Bench 2.1 Agentic terminal use | 58.6 | 53.9 | 38.6 | 32.6 | 44.9 | 51.7 | 43.4 |
SciCode Scientific coding | 38.9 | 39.9 | 36.0 | 34.0 | 35.8 | 43.6 | 43.4 |
| Scientific Reasoning | |||||||
Humanity's Last Exam (without tools) Expert-level reasoning | 25.2 | 28.4 | 20.8 | 17.5 | 22.2 | 22.0 | 23.6 |
GPQA Diamond Graduate-level science QA | 80.8 | 86.7 | 80.0 | 80.5 | 84.1 | 83.5 | 85.7 |
CritPt Frontier physics reasoning | 2.1 | 3.1 | 3.1 | 0.3 | 0.3 | 2.6 | 1.4 |
| General | |||||||
AA-LCR Long-context reasoning | 66.3 | 71.0 | 60.3 | 62.0 | 66.7 | 80.0 | 68.3 |
AA-Omniscience Accuracy Factual accuracy | 18.8 | 22.6 | 24.3 | 14.9 | 18.8 | 27.0 | 20.0 |
AA-Omniscience Non-Hallucination Non-hallucination rate | 69.2 | 70.3 | 13.0 | 87.0 | 49.5 | 18.1 | 15.0 |
Scores in %. Bold marks the best score in each row. Sections follow the Artificial Analysis Intelligence Index categories. Baseline scores are from Artificial Analysis; Muse Glimmer-30B at high reasoning effort, all other open models in their reasoning mode.
Quickstart
Serving
vLLM, recipe at recipes.vllm.ai/IFM:
vllm serve IFM/K2-Horizon-MoVA-36B-A4B \
--revision main \
--tensor-parallel-size 2 \
--enable-expert-parallel \
--trust-remote-code \
--dtype bfloat16 \
--max-model-len 131072 \
--reasoning-parser k2_horizon \
--tool-call-parser k2_horizon \
--enable-auto-tool-choice
SGLang recipe validated on 2× H200 in the SGLang K2 Horizon cookbook:
python3 -m sglang.launch_server \
--model-path IFM/K2-Horizon-MoVA-36B-A4B \
--revision main \
--tp 2 \
--ep 2 \
--dtype bfloat16 \
--attention-backend fa3 \
--json-model-override-args '{"xllm_source_router_gemm_partitions":2}' \
--reasoning-parser k2_horizon \
--tool-call-parser k2_horizon \
--host 0.0.0.0 --port 30000
API Usage
Recommended settings:
reasoning_effort="high",temperature=1.0,top_p=0.95. 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-MoVA-36B-A4B",
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-MoVA-36B-A4B"
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. - Sampling parameters.
temperature=1.0,top_p=0.95. - Serving. Use the validated SGLang recipe above: BF16, TP=2, FlashAttention-3, and the
xllm_source_router_gemm_partitionsoverride, which preserves the checkpoint's router numerics. Full recipes for every K2-Horizon size, with measured H200 latency and throughput, are in the SGLang cookbook and the vLLM recipe. - 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.
Citation
@misc{k2horizon2026,
title = {Introducing K2 Horizon: Frontier Performance, Radically Open},
author = {{IFM Team}},
year = {2026},
url = {https://ifm.ai/blog/k2/},
}
- Downloads last month
- 230
16-bit
docker model run hf.co/SAIFIINDUSTRIES/K2-Horizon-MoVA-36B-A4B-GGUF:BF16