K2 Horizon

Research❖ IFM 2026Sep 3

K2-Horizon-375B-A23B is the flagship of the K2 Horizon family: a sparse Mixture-of-Experts model that has 375B total parameters and activates 23B per token, with a 512K context window. We have released the checkpoints, data, and training code. With full visibility into training and evaluation, strong agentic capabilities, and a low cost per task, K2 Horizon gives researchers and builders a dependable foundation for long-context applications at every scale.

Model Highlights

  • Frontier-class agentic performance. On agentic tool use, terminal, and long-horizon workflow benchmarks it matches or beats open-weight MoE models up to 2.6× its size and is competitive with closed frontier models (see Benchmark Results).
  • 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/recipe and the training code are public.

Benchmark Results

Open-weight modelsClosed models
K2-Horizon-375B-A23BNemotron 3 UltraInkling (xhigh)MiniMax-M3GLM 5.2 (max)GPT 5.6 Luna (max)GPT 5.6 Terra (high)Claude Sonnet 5 (max)
# Params375B550B975B428B753B------
# Activated params23B55B41B23B40B------
ArchitectureMoEMoEMoEMoEMoEClosedClosedClosed
Agents
GDPVal-AA
Real-world professional tasks (Elo)
1,4411,1621,2341,3801,4981,5691,5031,584
tau3-Banking
Agentic tool use
34.014.229.115.334.631.128.737.3
Toolathlon Verified
Agentic tool use
65.334.345.553.759.967.564.871.6
Automation Bench Public
Workflow automation
25.38.012.820.526.233.528.034.7
Apex-Agents (pass@1)
Long-horizon professional workflows
24.89.019.023.826.928.625.431.7
MCPMark
MCP tool use
67.745.751.248.872.466.974.065.3
BrowseComp
Deep web research
72.844.477.183.5--83.3--84.7
WildClawBench
In-the-wild agentic tasks
50.934.252.356.455.050.460.0--
Coding
Terminal-Bench 2.1
Agentic terminal use
70.253.955.165.277.980.975.780.5
SciCode
Scientific coding
42.739.946.145.450.552.550.153.6
SWE-Atlas-QnA (strict)
Repo-level code Q&A
48.4--25.542.346.4------
SWE-Bench Pro (strict)
Software engineering
42.638.743.143.846.748.8----
Scientific Reasoning
Humanity's Last Exam (without tools)
Expert-level reasoning
32.028.431.939.041.139.538.541.3
GPQA Diamond
Graduate-level science QA
87.386.787.292.989.591.189.691.1
CritPt
Frontier physics reasoning
8.63.15.43.720.921.022.916.9
General
AA-LCR
Long-context reasoning
76.071.073.380.376.778.373.377.0
AA-Omniscience Accuracy
Factual accuracy
23.023.042.017.024.043.045.040.0
AA-Omniscience Non-Hallucination
Non-hallucination rate
74.770.032.082.074.07.010.061.0

ℹ️ Note

SWE-Atlas-QnA and SWE-Bench Pro: strict = no internet. BrowseComp: different models use different harness, we use the Discard-all@95k context length proposed in DeepSeek-V3.2 technical report. WildClawBench: we use a subset of the English text-only-modality tasks. Apex-Agents: we use a subset of text-only-modality tasks. GDPVal-AA is the Elo rating.

Quickstart

Serving

vLLM, recipe at recipes.vllm.ai/IFM:

vllm serve IFM/K2-Horizon-375B-A23B \
  --revision main \
  --tensor-parallel-size 8 \
  --enable-expert-parallel \
  --trust-remote-code \
  --dtype bfloat16 \
  --reasoning-parser k2_horizon \
  --tool-call-parser k2_horizon \
  --enable-auto-tool-choice

Use an exact branch name from the inventory with vLLM’s --revision option. For example, --revision pretrain_ph1_211000 selects the final checkpoint of Pretraining Phase 1, at step 211,000.

SGLang recipe validated on 8× H200 in the SGLang K2 Horizon cookbook:

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. Reasoning depth is selected per request through chat_template_kwargs. Thinking is returned in reasoning_content and the answer in content.

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-call 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.

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))

Training Overview

The table below lists the training stages in order and the purpose of each stage.

Training steps are counted within each stage or phase. Token budgets cover only the additional training in that stage or phase. For example, the 8T tokens listed for Pretraining Phase 2 are additional to the 7T tokens in Phase 1, bringing the cumulative budget to 15T tokens by the end of Phase 2. Here, B and T denote billion and trillion tokens, respectively.

Each stage or phase continues from the final checkpoint of the preceding stage or phase. During RL, training branches into five expert models, which are then merged, as described below.

Some stages, such as SFT, have multiple phases with slight changes to the data mix while retaining the same overall purpose.

Training stageTraining stepsTraining tokensSequence lengthPurpose
Pretraining — Phase 12110007.08T8KPretraining.
Pretraining — Phase 22400008.05T8KContinued pretraining from Phase 1, with newer and better data.
Midtraining — Stage 1325001.09T32KContext extension.
Midtraining — Stage 215000503B128KContext extension.
Midtraining — Stage 33500117B512KContext extension.
Midtraining — Stage 46000201B512KContinued context extension from Stage 3, with the data mix shifted toward agentic and reasoning SFT data.
RL--512KWe trained five expert models from the final checkpoint of Midtraining Stage 4: knowledge work, IF, search, tool use, and reasoning. We then merged the expert models.
SFT — Phase 1240081B512KSFT for better domain coverage, starting from the merged RL checkpoint.
SFT — Phase 26000201B512KContinued from Phase 1 with nearly the same data mix.
SFT — Phase 3150050B512KSFT on a high-quality subset of the data used in Phases 1 and 2, with learning rate decay.

RL training steps and token counts are not reported here, so a cumulative token total that includes RL is not provided.

Release Artifacts

The tables below list the release artifacts for K2-Horizon-375B-A23B, their availability, and the expected release dates for remaining items.

Last updated: 2026-09-28

Status:

  • Available — fully released for the scope listed;
  • Partial — some items are available, with remaining items listed in the notes;
  • In Progress — being prepared for release but not yet available.

Artifact Index

ArtifactLinkStatusRemaining items / expected availability
Model cardHugging FaceAvailableN/A
Training logsW&BAvailableN/A
Blog postBlog postAvailableN/A
CheckpointsCheckpoint inventoryAvailableN/A
Technical reportNot yet availableIn ProgressEnd of September 2026
Code repositoryGitHubAvailableN/A
DataHugging FaceAvailableN/A

Checkpoint Inventory

Model repository: IFM/K2-Horizon-375B-A23B

Branch names below refer to this repository. Patterns containing * group branches by training stage or phase. The * is a placeholder for a training-step number, not a literal branch name. Intermediate checkpoint groups exclude the final checkpoint listed separately; a pattern does not imply that a checkpoint is available at every step.

For example, pretrain_ph1_211000 is the checkpoint saved at training step 211,000 within Pretraining Phase 1, and is the final checkpoint of that phase. The numeric suffix is the step within the named stage or phase, not the cumulative step across all training. Thus, pretrain_ph2_240000 refers to step 240,000 within Pretraining Phase 2.

CheckpointBranch / repositoryStatus
Pretrain Phase 1 Intermediate Checkpointspretrain_ph1_*Available
Pretrain Phase 1 Final Checkpointpretrain_ph1_211000Available
Pretrain Phase 2 Intermediate Checkpointspretrain_ph2_*Available
Pretrain Phase 2 Final Checkpointpretrain_ph2_240000Available
Midtrain Stage 1 Intermediate Checkpointsmid_1_*Available
Midtrain Stage 1 Final Checkpointmid_1_32500Available
Midtrain Stage 2 Intermediate Checkpointsmid_2_*Available
Midtrain Stage 2 Final Checkpointmid_2_15000Available
Midtrain Stage 3 Intermediate Checkpointsmid_3_*Available
Midtrain Stage 3 Final Checkpointmid_3_3500Available
Midtrain Stage 4 Intermediate Checkpointsmid_4_*Available
Midtrain Stage 4 Final Checkpointmid_4_6000Available
RL Knowledge Work Expert Checkpointrl_knowledge_workAvailable
RL IF Expert Checkpointrl_ifAvailable
RL Search Expert Checkpointrl_searchAvailable
RL Tool Use Expert Checkpointrl_tool-useAvailable
RL Reasoning Expert Checkpointrl_reasoningAvailable
RL Merged Final Checkpointrl_mergedAvailable
SFT Phase 1 Intermediate Checkpointssft_1_*Available
SFT Phase 1 Final Checkpointsft_1_2400Available
SFT Phase 2 Intermediate Checkpointssft_2_*Available
SFT Phase 2 Final Checkpointsft_2_6000Available
SFT Phase 3 Intermediate Checkpointssft_3_*Available
SFT Phase 3 Final Checkpointsft_3_1500Available

ℹ️ Note

Released K2 Horizon checkpoints on Hugging Face can be used for inference, evaluation, and downstream fine-tuning (including SFT). Training behavior in the bundled Hugging Face implementation may differ from native xLLM, including the auxiliary load-balancing loss. To continue the original pretraining with xLLM’s training behavior, use the native xLLM checkpoint and xLLM runtime.

Best Practices

  1. Reasoning effort: always high. All reported results use high reasoning effort. Pass {"chat_template_kwargs": {"reasoning_effort": "high"}} on every request. medium and low effort settings are not recommended except for research on reasoning efforts.
  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 and the vLLM recipe.
  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

@misc{k2horizon2026,
  title  = {Introducing K2 Horizon: Frontier Performance, Radically Open},
  author = {{IFM Team}},
  year   = {2026},
  url    = {https://ifm.ai/blog/k2/},
}