--- pipeline_tag: text-generation library_name: transformers model_name: K2-Horizon-375B-A23B language: - en license: apache-2.0 datasets: - IFM/K2-Horizon-Pretrain-Data - IFM/K2-Horizon-Midtrain-Data tags: - k2-horizon - 375b - moe - open-weights - ifm --- # K2-Horizon-375B-A23B-FP8 [Training Code](https://github.com/LLM360/xllm) - [Evaluation Code](https://github.com/LLM360/Eval360-V2) - [Pretraining Data](https://huggingface.co/datasets/IFM/K2-Horizon-Pretrain-Data) - [Midtraining Data](https://huggingface.co/datasets/IFM/K2-Horizon-Midtrain-Data) > [!NOTE] > This repository contains an FP8-quantized version of [IFM/K2-Horizon-375B-A23B](https://huggingface.co/IFM/K2-Horizon-375B-A23B). > > Only the routed-expert linear layers are quantized to FP8: > - **Weights**: static FP8, one scale per 128*128 block. > - **Activations**: dynamic FP8, one scale per 1*128 group along the input-channel dim. > > All other linear layers (attention, shared experts, routers, the first 3 dense layers, and lm_head) are kept in BF16. > > The FP8 model performs closely in line with the original BF16 model on our evaluations, while reducing memory footprint and enabling faster inference on FP8-capable hardware. > > **Serving note**: the routed experts' intermediate size (1792) is not splittable into whole 128-wide quantization blocks at the usual tensor-parallel sizes (TP=4, TP=8), so expert parallelism is required. K2-Horizon-375B-A23B is the flagship of the K2-Horizon family: a sparse Mixture-of-Experts model that stores 375B parameters and runs 23B per token, with a 512K context window. We have released the final checkpoint; intermediate checkpoints, along with the data and the training code, will be released.
| Open-weight models | Closed models | |||||||
|---|---|---|---|---|---|---|---|---|
| K2-Horizon-375B-A23B | Nemotron 3 Ultra | Inkling (xhigh) | MiniMax-M3 | GLM 5.2 (max) | GPT 5.6 Luna (max) | GPT 5.6 Terra (high) | Claude Sonnet5 (max) | |
| # Params | 375B | 550B | 975B | 428B | 753B | -- | -- | -- |
| # Activated params | 23B | 55B | 41B | 23B | 40B | -- | -- | -- |
| Architecture | MoE | MoE | MoE | MoE | MoE | Closed | Closed | Closed |
| Agents | ||||||||
GDPVal-AA Real-world professional tasks (Elo) | 1,441 | 1,162 | 1,234 | 1,380 | 1,498 | 1,569 | 1,503 | 1,584 |
tau3-Banking Agentic tool use | 34.0 | 14.2 | 29.1 | 15.3 | 34.6 | 31.1 | 28.7 | 37.3 |
| Coding | ||||||||
Terminal-Bench 2.1 Agentic terminal use | 70.2 | 53.9 | 55.1 | 65.2 | 77.9 | 80.9 | 75.7 | 80.5 |
SciCode Scientific coding | 42.7 | 39.9 | 46.1 | 45.4 | 50.5 | 52.5 | 50.1 | 53.6 |
| Scientific Reasoning | ||||||||
Humanity's Last Exam (without tools) Expert-level reasoning | 32.0 | 28.4 | 31.9 | 39.0 | 41.1 | 39.5 | 38.5 | 41.3 |
GPQA Diamond Graduate-level science QA | 87.3 | 86.7 | 87.2 | 92.9 | 89.5 | 91.1 | 89.6 | 91.1 |
CritPt Frontier physics reasoning | 8.6 | 3.1 | 5.4 | 3.7 | 20.9 | 21.0 | 22.9 | 16.9 |
| General | ||||||||
AA-LCR Long-context reasoning | 76.0 | 71.0 | 73.3 | 80.3 | 76.7 | 78.3 | 73.3 | 77.0 |
AA-Omniscience Accuracy Factual accuracy | 23.0 | 23.0 | 42.0 | 17.0 | 24.0 | 43.0 | 45.0 | 40.0 |
AA-Omniscience Non-Hallucination Non-hallucination rate | 74.7 | 70.0 | 32.0 | 82.0 | 74.0 | 7.0 | 10.0 | 61.0 |
| Agentic Evaluations | ||||||||
Toolathlon Verified Agentic tool use | 65.3 | 34.3 | 45.5 | 53.7 | 59.9 | 67.5 | 64.8 | 71.6 |
Automation Bench Public Workflow automation | 25.3 | 8.0 | 12.8 | 20.5 | 26.2 | 33.5 | 28.0 | 34.7 |
Apex-Agents (pass@1) Long-horizon professional workflows | 24.8 | 9.0 | 19.0 | 23.8 | 26.9 | 28.6 | 25.4 | 31.7 |
MCPMark MCP tool use | 67.7 | 45.7 | 51.2 | 48.8 | 72.4 | 66.9 | 74.0 | 65.3 |
BrowseComp Deep web research | 72.8 | 44.4 | 77.1 | 83.5 | -- | 83.3 | -- | 84.7 |
WildClawBench In-the-wild agentic tasks | 50.9 | 34.2 | 52.3 | 56.4 | 55.0 | 50.4 | 60.0 | -- |
SWE-Atlas-QnA Repo-level code Q&A (strict) | 48.4 | -- | 25.5 | 42.3 | 46.4 | -- | -- | -- |
SWE Bench Pro Software engineering (strict) | 42.6 | 38.7 | 43.1 | 43.8 | 46.7 | 48.8 | -- | -- |
Scores in %, except GDPVal-AA, which is an Elo rating. Bold marks the best score in each row. The first four sections follow the Artificial Analysis Intelligence Index categories. Baseline scores are from Artificial Analysis where available, otherwise from the IFM evaluation harness. SWE-Atlas-QnA and SWE Bench Pro are run without internet access; BrowseComp uses the Discard-all@95k context setting from the DeepSeek-V3.2 technical report; WildClawBench and Apex-Agents use the English text-only subsets.
## Quickstart ### Serving vLLM, recipe at [recipes.vllm.ai/IFM](https://recipes.vllm.ai/IFM): ```shell vllm serve IFM/K2-Horizon-375B-A23B \ --revision main \ --model-impl transformers \ --tensor-parallel-size 8 \ --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 8× H200 in the [SGLang K2 Horizon cookbook](https://docs.sglang.io/cookbook/autoregressive/IFM/K2-Horizon): ```shell python3 -m sglang.launch_server \ --model-path IFM/K2-Horizon-375B-A23B \ --revision main \ --tp 8 \ --ep 8 \ --dtype bfloat16 \ --attention-backend fa3 \ --model-loader-extra-config '{"enable_multithread_load":false}' \ --reasoning-parser k2_horizon \ --tool-call-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 through `chat_template_kwargs`. Thinking is returned in `reasoning_content` and the answer in `content`. ```python from openai import OpenAI client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY") response = client.chat.completions.create( model="IFM/K2-Horizon-375B-A23B", 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 4.57.6, PyTorch 2.13.0, Safetensors 0.8.0. ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_id = "IFM/K2-Horizon-375B-A23B" 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 1. **Reasoning effort: always `high`.** All reported results use high reasoning effort. Pass `{"chat_template_kwargs": {"reasoning_effort": "high"}}` on every request. 2. **Sampling parameters.** `temperature=1.0`, `top_p=0.95`. 3. **Serving.** Use the validated SGLang recipe above: BF16, TP=8 on one 8× H200 node, FlashAttention-3, with multithreaded weight loading disabled. Full recipes for every K2-Horizon size, with measured H200 latency and throughput, are in the [SGLang cookbook](https://docs.sglang.io/cookbook/autoregressive/IFM/K2-Horizon) and the [vLLM recipe](https://recipes.vllm.ai/IFM). 4. **Parsers.** Enable the `k2_horizon` reasoning parser for chat, and add the `k2_horizon` tool-call parser for agent use. Leave both off for plain completion-style generation. ## Citation ```bibtex @misc{k2horizon2026, title = {Introducing K2 Horizon: Frontier Performance, Radically Open}, author = {{IFM Team}}, year = {2026}, url = {https://ifm.ai/blog/k2/}, } ```