alt.freeweights.text / K2-Horizon-0.9B
From: IFM <huggingface.co/IFM>Newsgroups: alt.freeweights.textSubject:

K2-Horizon-0.9B

Date: 2026-11-15Commit: fc5c9dcSigned: 2DC28CC7B26A283B ✓

Text generation model with 1.1B parameters. Safetensors weights, 2.16 GB in all. Published by IFM under Apache-2.0.

1.1B params2.16GBK2-Horizon-0.9Bsafetensorspermissive
FactsParams1.1BSize2.16 GBFormatssafetensorsTasktext generationLicenseApache-2.0From sourcepermissive
$ fw get IFM/K2-Horizon-0.9B
# manifest sha256 733d69caa46a… · 2.16 GB · 17 files
$ fw verify ./K2-Horizon-0.9B IFM/K2-Horizon-0.9B
From sourceHosted (signed)IFM/K2-Horizon-0.9BLast check: 2026-11-15 02:42 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Overview

Size
2.16 GB
Weights
2.16 GB (safetensors)
Parameters
1.1B
Formats
safetensors
Task
text generation
License
Apache-2.0 (permissive)
Files
17, each with a sha256
Publisher
IFM
Added
2026-11-15
Section
alt.freeweights.text
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 02:42 UTCpassed

Model card

From the publisher at commit fc5c9dc. Shown as plain text with links; images open at the publisher.

K2-Horizon-0.9B#

Training Code - Evaluation Code - All Training Data

K2-Horizon-0.9B is the compact dense member of the K2-Horizon family: a 0.9B-class decoder-only model with a 128K context window.

Image: K2-Horizon-0.9B benchmark results

K2-Horizon-0.9B Highlights#

  • Compact reasoning model. A 0.9B-class dense model evaluated across mathematics, coding, science, and tool-use benchmarks.
  • 128K context. Supports up to 131,072 tokens with YaRN RoPE scaling.
  • Multi-teacher distillation. Trained with domain teachers for math and code, STEM, and instruction following.
  • Fully open. Training data/recipe and the training code are public.

Benchmark Results#

The chart at the top of this card shows K2-Horizon-0.9B against selected reference models. The table below lists every comparison model used in the figure.

Full Results#

| | Reference models

| | K2-Horizon-0.9B | Qwen3.5-0.8B | OpenBMB-1B | Qwen3.5-2B

| # Params | 0.9B | 0.8B | 1B | 2B

| # Activated params | 0.9B | 0.8B | 1B | 2B

| Architecture | Dense | Dense | Dense | Dense

| Math

| AIME 2025

Competition mathematics

| 41.7 | 1.0 | 40.4 | 34.2

| AIME 2026

Competition mathematics

| 48.5 | 0.2 | 40.4 | 38.8

| HMMT Feb 2026

Competition mathematics

| 25.8 | 0.6 | 23.3 | 22.7

| Scientific Reasoning

| GPQA Diamond

Graduate-level science QA

| 27.3 | 11.9 | 26.3 | 54.9

| Coding

| HumanEval+

Code generation

| 79.9 | 16.5 | 65.2 | 75.6

| MBPP+

Code generation

| 68.0 | 35.4 | 60.6 | 67.7

| LiveCodeBench v6

Competitive coding

| 37.4 | 6.6 | 33.5 | 29.8

| Agents

| BFCL v4

Function calling

| 28.0 | 25.3 | 25.2 | 43.6

Scores in %. Bold highlights K2-Horizon-0.9B; Qwen3.5-2B is included as a larger reference model. Protocol and provenance details are in the Technical Appendix.

Quickstart#

Serving#

vLLM (source at PR #53806, commit d9fd5f11):

vllm serve IFM/K2-Horizon-0.9B \
  --trust-remote-code \
  --dtype bfloat16 \
  --max-model-len 131072 \
  --hf-overrides '{"rope_parameters":{"rope_type": "yarn", "factor": 16, "original_max_position_embeddings": 8192, "rope_theta": 1000000, "beta_fast": 128, "beta_slow": 4}}' \
  --gpu-memory-utilization 0.85 \
  --tensor-parallel-size 1 \
  --reasoning-parser k2_horizon \
  --enable-auto-tool-choice \
  --tool-call-parser k2_horizon

Use an exact branch name from the inventory with vLLM's --revision option. For example, --revision pretrain_600000 selects the final checkpoint of Pretraining, at step 600,000.

SGLang, from a source checkout that includes sgl-project/sglang#37654. This is the recipe validated in the SGLang K2 Horizon cookbook:

sglang serve \
  --model-path IFM/K2-Horizon-0.9B \
  --revision 9fa6faa55fe1c9eb008bb241cc6fb7e4536d0e91 \
  --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=0.6, 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.

from openai import OpenAI

client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
response = client.chat.completions.create(
    model="IFM/K2-Horizon-0.9B",
    messages=[{"role": "user", "content": "Explain the result step by step."}],
    temperature=0.6,
    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 5.15.0, PyTorch 2.13.0, Safetensors 0.8.0.

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "IFM/K2-Horizon-0.9B"
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.

Each stage or phase continues from the final checkpoint of the preceding stage or phase.

During RL, training branches into multiple expert models, which are then merged, as described below.

Training stageTraining stepsTraining tokensSequence lengthPurpose
Pretraining6000005T8KPretraining.
Midtraining — Stage 175000393B32KContext extension.
Midtraining — Stage 247684200B128KContext extension.
RL — Math1 expert679~0.4B128KMath RL (GRPO) from Midtraining Stage 2.
RL — Code1 expert9000.24B128KCode RL from Math1.
RL — Math2a expert2390.17B128KMath RL from Code1, no reference KL.
RL — Math2b expert2810.33B128KContinued math RL from Math2a with reference KL 1e-3.
RL — Code2 expert6400.19B128KCode RL from Math2b; also serves as the math/code teacher for MOPD.
RL — IF expert15001.28B128KInstruction-following RL from Code2.
RL — STEM expert5000.25B128KSTEM RL from Code2.
RL — Merge———Weight-space merge of Code2, IF, and STEM experts.
MOPD2500.12B128KResolve structural interference and performance degradation caused by weight merging, aligning multi-domain specialist capabilities in the behavioral space via on-policy distillation.

Release Artifacts#

The tables below list the release artifacts for K2-Horizon-0.9B, 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-0.9B

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_600000 is the checkpoint saved at training step 600,000 within Pretraining stage, and is the final checkpoint of that stage. The numeric suffix is the step within the named stage, not the cumulative step across all training. Thus, mid_1_75000 refers to step 75,000 within Midtraining Stage 1.

For a partially released group, the available checkpoints and the remaining checkpoints are listed in the notes.

CheckpointBranch / repositoryStatusRemaining items / expected availability
Pretrain Intermediate Checkpointspretrain_*AvailableN/A
Pretrain Final Checkpointpretrain_600000AvailableN/A
Midtrain Stage 1 Intermediate Checkpointsmid_1_*AvailableN/A
Midtrain Stage 1 Final Checkpointmid_1_75000AvailableN/A
Midtrain Stage 2 Intermediate Checkpointsmid_2_*AvailableN/A
Midtrain Stage 2 Final Checkpointmid_2_47684AvailableN/A
RL Math1 Expert Checkpointrl_math1AvailableN/A
RL Code1 Expert Checkpointrl_code1AvailableN/A
RL Math2a Expert Checkpointrl_math2aAvailableN/A
RL Math2b Expert Checkpointrl_math2bAvailableN/A
RL Code2 Expert Checkpointrl_code2AvailableN/A
RL IF Expert Checkpointrl_ifAvailableN/A
RL Stem Expert Checkpointrl_stemAvailableN/A
RL Merged Final Checkpointrl_rl-mergedAvailableN/A
RL MOPD Final Checkpointrl-mopd_249AvailableN/A

Important. Note:

  • Released K2-Horizon Hugging Face checkpoints (e.g. Huggingface) 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 trade accuracy for speed and are not recommended for evaluation. medium and low effort settings are not recommended except for research on reasoning efforts.
  2. Sampling parameters. temperature=0.6, top_p=0.95.
  3. 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.
  4. 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.
  5. 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.
  6. Revisions. main is the MOPD release checkpoint; mid1_75k and mid2_47k preserve the context-extension stages.

Citation#

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

Files

17 files · 2.16 GBWeights 2.16 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 17 files with their sha256
FileSizesha256
.gitattributes1.59 KB45d48d3224fc3cccc9f5d64b5e9e56bc7613662903f399060d6b4d47ccd50b5f
APPENDIX.md14.8 KBc147ced557b378270c96ddb4f781c36e5f12f7936e00411d66daebc49725c158
README.md23.9 KB2aa0af17c33f96274a6cae6b9a4551a8365e81306e5e2520632112132d010506
assets/k2-horizon-0.9b-benchmarks.png1.17 MBf9b538fc071f14477a0a1a2334274c4710e27a34d4e517ad93d1c1d8dfea117b
chat_template.jinja53.1 KB0fd4bbacc4bd55bd24763ae463e5bdccbbe126794f5072eee3f9df3c090d0948
config.json1.82 KB95d261e987a81580cdccaf9f8d0055b5b25c269fc714ecee56cc5821ac1c3fc9
configuration_k2_horizon.py3.53 KB5c2f993c1053d9462ebea6dea416c897fddfbb4a5edd904e486936b20d4badc5
generation_config.json45 B03dc0a9172940c92ad99d4a439c9e82cff735665c4ee502c7be52055665f7ff5
ifm_tokenizer_manifest.json1.95 KB836518137e19b6f966b8ea72221bdd64cca69b54e55f32d071a4eb8f76635965
migration_manifest.json2.21 KBe8d593cda0bddc27c130793d0110d5b923ce5b828bcdce0e8ff2e387359b5201
model-00000-of-00001.safetensors2.16 GB6392cc67c8dcc7aef1575f94ecdf3c7113b7d0e8f4e7058c4c3c74d4d876c365
model.safetensors.index.json21.0 KB5652ee0f725133f74a7a2cfb2673845230cf89cfc7d480cd64b90211db53e19e
modeling_k2_horizon.py49.6 KB5bb3ae46a8a64387f34042b63027a2fc9fffc6912178f29d7952ea1cdb1c65fb
special_tokens_map.json116 B9eed1a02fb143b0adef73772d48ab811d3ad11117b7272480b38d6fd10f1fff4
tokenizer.json4.95 MB7a42bd219df0b747f000ca3e39f8eca9b93e965707e8be0b6603cac56aaad738
tokenizer_config.json49.0 KB0465b8c8c981ba6a2562ab096393551d2cc7cf57228e97ed181142a55b048b4b
validation.json676 B345afca56989f4bdd77a0c413206baaf6e14f1fa75c23d4b4c2a8278ea1cdddc
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
fc5c9dc7c1 pinned now2026-11-15 02:42 UTC17 files · 2.16 GB

Use it

$ fw get IFM/K2-Horizon-0.9B
# manifest sha256 733d69caa46a… · 2.16 GB · 17 files
$ fw verify ./K2-Horizon-0.9B IFM/K2-Horizon-0.9B
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/IFM/K2-Horizon-0.9B.json --dir ./K2-Horizon-0.9B $ python3 fw.py verify ./K2-Horizon-0.9B ./IFM__K2-Horizon-0.9B.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download IFM/K2-Horizon-0.9B --revision fc5c9dc7c13df2360acee789fca2cd55d439e644 --local-dir ./K2-Horizon-0.9B
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForCausalLM, AutoTokenizer tok = AutoTokenizer.from_pretrained("IFM/K2-Horizon-0.9B", revision="fc5c9dc7c13df2360acee789fca2cd55d439e644") model = AutoModelForCausalLM.from_pretrained("IFM/K2-Horizon-0.9B", revision="fc5c9dc7c13df2360acee789fca2cd55d439e644", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve IFM/K2-Horizon-0.9B --revision fc5c9dc7c13df2360acee789fca2cd55d439e644

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
2aa0af17c33f96274a6cae6b9a4551a8365e81306e5e2520632112132d010506
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: IFM <huggingface.co/IFM>Newsgroups: alt.freeweights.textSubject: K2-Horizon-0.9BDate: 2026-11-15Commit: fc5c9dcSigned: 2DC28CC7B26A283B ✓
Upstream
IFM/K2-Horizon-0.9B
Pinned commit
fc5c9dc7c13df2360acee789fca2cd55d439e644
Manifest
K2-Horizon-0.9B.json · .minisig
Manifest sha256
733d69caa46a9e8eea8481394c22f4ee0d0bb4cccc908c5070fc7cb18fc8207e
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 02:42 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/IFM/K2-Horizon-0.9B.json $ curl -O https://freeweights.allternit.com/manifests/IFM/K2-Horizon-0.9B.json.minisig $ minisign -Vm K2-Horizon-0.9B.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

1 model in the catalog name this one as their parent.

Quantizations
1
Quantizations 1
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download IFM/K2-Horizon-0.9B
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. K2-Horizon-0.9B.json. Provenance. Takedown history: none.

Variants

1 quantized or adapter build of K2-Horizon-0.9B. Each has its own license check and page.

From: laion <huggingface.co/laion>Subject: a2-rl-e2egit_large-50-32B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-large-15-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-v2-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_pymethods2test-large-80-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_unitsyn-python-large-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_mix_h2_language_proportional-65-8B