Visual Learn K2 Horizon

K2 Horizon

How IFM’s six open language models are built, trained and measured

On 3 September 2026 the Institute of Foundation Models (IFM) at MBZUAI released K2 Horizon: six language models from 0.9 billion to 375 billion parameters under the Apache 2.0 license. Two of them are sparse, so each token uses only a fraction of the stored weights. This page reads the published configurations, model cards and papers to show how the six differ, what the new MoVA attention layer and the Uno decoder do, how the largest model was trained, and what IFM’s benchmark numbers can and cannot tell you.

7 sections · about 18 minutes · figures computed from each model’s published config.json · one decoding simulation you can run · sources checked 25 September 2026

Six sizes and two kinds of parameter count

All six are decoder-only transformers: they read a sequence of tokens and predict the next one. IFM says they share an architecture, training method, interfaces and deployment tooling, and that only the 0.9B model uses a smaller vocabulary.IFM, K2 Horizon technical blog, “One connected fleet”, 3 September 2026.

Four models are dense: every token runs the same attention and feed-forward blocks, without selecting a subset of experts. The other two are sparse Mixture-of-Experts (MoE) models, and their names carry two counts. K2-Horizon-375B-A23B names about 375 billion non-embedding parameters and about 23 billion active parameters per token. Its full checkpoint also contains the vocabulary matrices.

Rounded parameter counts from the model names, excluding vocabulary matrices: stored (grey ring) and active per token (orange dot), on a log scale. For the four dense models the two coincide. The two sparse models store about 9 and 16 times the parameters they use per token.

Active parameter counts approximate the work in weight projections; attention over the context adds work that depends on sequence length. For inference with all weights resident, memory must hold every expert even though each token uses only a few. The 36B-A4B checkpoint stores 37.4B parameters including vocabulary matrices, about 74.8 GB at two bytes per weight, before the KV cache and other runtime memory. Quantization reduces weight storage; offloading moves part of it to another memory tier. Runtime also depends on routing, memory traffic, batching and the serving software, so the sparse model need not run as fast as a dense 4B model.

The table lists what each model’s config.json on Hugging Face specifies.The model names count parameters outside the vocabulary tables. The 3.7B checkpoint stores 5.06B parameters; its input embedding and output matrices, each 250,624 × 2,560, hold 1.28B of them. Stored counts are from the Hugging Face API, 25 September 2026. Depth grows from 28 to 64 layers and width from 1,536 to 6,144. Every model uses grouped-query attention, in which 32 to 64 query heads share 8 key-value heads; that keeps the per-token key-value cache small. The 36B-A4B is narrower than the 7B and deeper, and holds most of its capacity in experts.

From config.json0.9B3.7B7B32B36B-A4B375B-A23B
Parameters in the name0.9B3.7B7B32B36B375B
Active per token0.9B3.7B7B32B≈4B≈23B
Stored in the checkpoint1.08B5.06B9.00B34.8B37.4B379.2B
Layers283636644861
Hidden size1,5362,5604,0965,1202,5606,144
Feed-forward width5,12010,24012,28826,624768 per expert1,792 per expert
Query / key-value heads32 / 832 / 832 / 864 / 832 / 848 / 8
Head dimension64128128128128128
Feed-forward expertsnonenonenonenone100 + 1 shared, top 8192 + 1 shared, top 8
MoVA value expertsnonenonenonenone64, top 4none
Vocabulary64,256250,624250,624250,624250,624250,624
Context (tokens)131,072524,288524,288524,288524,288524,288
IFM’s intended usewatches, glassesphonesphoneslocal serverslocal serversenterprise
Configuration of each model, read from its config.json on Hugging Face. In the two sparse models the first 3 layers use a dense feed-forward block (6,144 wide in the 36B-A4B, 16,384 in the 375B-A23B). The 375B model applies rotary position encoding to 64 of each head’s 128 dimensions.

The vocabulary choice matters most at the small end. At the 0.9B model’s width, a 250,624-token vocabulary would put about 0.77B parameters into the input and output tables alone (2 × 250,624 × 1,536). The 64,256-token vocabulary leaves that budget for transformer layers. The 0.9B model reaches 131,072 tokens of context by stretching its position encoding with YaRN from an 8,192-token original; the other five support 524,288 tokens after long-context midtraining.

IFM positions the 0.9B for watches and glasses, the 3.7B and 7B for phones and other on-device uses, the 32B and 36B-A4B for local workstations and on-premises servers, and the 375B-A23B for enterprise workloads.IFM, K2 Horizon press release, 3 September 2026, and the technical blog. The press release also calls the 7B “the industry’s best-performing model under 10B”; that is IFM’s claim. These are vendor positioning statements. Real requirements depend on weight precision, key-value cache size, serving software, memory bandwidth and latency targets. The 0.9B was trained with multi-teacher distillation, using separate teachers for math and code, STEM, and instruction following. IFM describes the 3.7B as a size meant for fine-tuning.

What changes inside a layer

A transformer layer has two halves. Attention lets each position gather information from earlier positions. The feed-forward network (FFN) then transforms each position on its own. Attention starts by computing three projections of each token’s hidden vector: a query, a key and a value. Query–key scores decide how much weight each earlier position receives, and the values are the vectors averaged with those weights.

K2 Horizon uses three versions of this layer. The dense models run one FFN for every token. The 375B-A23B replaces most of its FFNs with 192 smaller experts and a router, a small linear layer that scores every expert for the current token and keeps the top 8; one shared expert runs for every token regardless. The 36B-A4B does the same with 100 experts, and also routes the value projection. That second change is MoVA.

Dense

0.9B, 3.7B, 7B, 32B

Mixture of experts

375B-A23B

Mixture of experts + MoVA

36B-A4B

One layer of each type, with normalization and residual connections left out. Each small square is one expert; orange marks the experts a single token uses. Which experts light up here is illustrative, since the router chooses them per token. A sparse layer stores many experts and runs a few; MoVA applies the same idea to the value projection.

Both routers score experts with a sigmoid and weight the chosen experts’ outputs by those scores.router_score_func: "sigmoid" in every config. In the 36B-A4B and 375B-A23B configs, mlp_only_layers: [0, 1, 2] keeps the first three layers dense. The shared expert gives every token a common path through the layer, and the routed experts add capacity that each token uses only in part.

MoVA: many value projections, four used per token

Mixture-of-Value Attention (MoVA) is IFM’s new layer. In standard attention, one linear map turns each token’s hidden vector into its value vector. MoVA keeps a pool of such maps, the value experts, and a router that picks a few of them for each token. Queries and keys are computed as usual. In the 36B-A4B, each of the 45 sparse layers holds 64 value experts and uses 4.IFM’s technical report is due at the end of September 2026. This description follows the released modeling code, modeling_k2_horizon.py (class K2HorizonMoVAAttention): a router scores 64 experts, the top 4 are kept, and each expert is a 2,560 → 1,024 linear map whose outputs are summed with the router’s weights.

Each value expert has the shape of one ordinary value projection: 2,560 × 1,024, or 2.6 million parameters. Per layer, then, the value path stores 64 of them and computes with 4: 64 times the storage of standard attention, 4 times the compute, and 16 stored for each one used. Summed over the model, that is 7.5B parameters stored in value experts, about a fifth of the model, and 0.47B used per token.

Where the 36B-A4B’s 36.2B non-embedding parameters sit, computed from its config.json and modeling code. Grey: stored. Orange: used for each token. Routers and norms (0.02B) are omitted; with embeddings added, the count matches the 37.4B tensors in the checkpoint exactly. Routed experts hold 94% of the stored parameters but only 2.6B of the 4.7B that run per token.

IFM’s reason for routing values is that attention decides how information from across the context is combined, so sparsity there adds a second place to grow capacity besides the FFN. It also says MoVA remains compatible with FlashAttention, grouped-query attention and sparse attention.IFM, technical blog, “MoVA: scaling attention with sparse experts”. One consequence is visible in the code: the routed value vectors are mixed before they are written to the key-value cache, so the cache is the same size as in ordinary grouped-query attention.The 36B-A4B also multiplies each attention output by a learned softplus gate (attention_gate_func: "softplus"); the other five configs leave the gate off.

By this count about 4.7B non-embedding parameters run per token;The 375B-A23B config sets mova_num_experts: 0. Of the six released models, only the 36B-A4B uses MoVA. IFM describes the model as activating approximately 4B. IFM reports that, trained under the same conditions, the 36B-A4B scores slightly below the dense 32B while using far fewer active parameters. That is IFM’s own comparison, and the blog does not report an experiment that separates MoVA’s contribution from that of the MoE feed-forward layers.

Uno drafts several tokens and the base model checks them

A language model normally generates autoregressively: each forward pass through the network produces one new token. The 7B and 0.9B models have optional Uno adapters, from IFM’s paper Unlocking Lossless Speedups in LLMs via Discrete Diffusion, that produce several tokens per round without changing the distribution the model samples from.Sahoo et al., arXiv:2609.04010, 2026. Code at ifm-ai/uno; adapters at K2-Horizon-7B-Uno and K2-Horizon-0.9B-Uno.

Uno adds a second, small set of weights to the frozen base model: rank-128 LoRA adapters, low-rank corrections attached to each weight matrix, trained with a discrete-diffusion objective to predict clean tokens from noisy positions in parallel.

Each round then takes two forward passes. In the draft pass, the adapted model proposes a block of B tokens in parallel. In the verify pass, the unmodified base model scores the block, and a sampler the paper calls Ψ-Spec keeps the longest prefix that passes the standard speculative-decoding rejection test. After a rejection, the sampler draws a replacement from a corrected distribution that accounts for the rejected draft. If every draft passes, it draws a bonus token from the base model. This acceptance-and-correction rule preserves the base distribution; a verifier alone would not guarantee lossless sampling.The paper’s accounting: the first drafted token comes from the base weights and is always accepted, so a full round yields between 2 and B + 1 tokens for 2 forward passes, before truncation at an end token or output limit. Tokens per forward pass therefore lie between 1 and (B + 1)/2.

For one drafted token, let q be the draft distribution and p the base distribution at that prefix. The sampler accepts token x with probability min(1, p(x)/q(x)). On rejection, it samples from max(p − q, 0), normalized to sum to one.Sahoo et al., Algorithm 1, lines 7–11. The linear sampler initializes the noisy positions with random tokens. “Lossless” refers to the output distribution, not identical text for a particular random seed.

For example, if q(A) = 0.8 and p(A) = 0.5 in a two-token vocabulary, A is accepted with probability 0.625 and B always passes. Accepted drafts contribute 0.5 probability to A and 0.2 to B; the remaining 0.3 must go to B. Sampling that replacement directly from the 50/50 base distribution would instead produce 0.65 for A and 0.35 for B.

Block size
Autoregressive

Uno, simulated

Simplified simulation. Each word stands for one token, and one tick is one forward pass for both decoders. Upright black: drafted and accepted. Purple italic: the verification step’s corrected replacement or bonus token. Red, struck through: drafted and rejected. Grey dashed: drafted, awaiting verification. “Draft agreement” is an invented independent probability a that each drafted token after the first passes verification; it is not a measured Uno parameter, and real acceptance depends on the prompt, the text so far, the sampler and the model. This figure illustrates pass accounting, not the rejection-sampling distribution above. The expected tokens per full round are 2 + a + a² + … + aB−1; divide by two for tokens per pass. A short run can differ because of random outcomes and its truncated final round. The pass count ignores adapter overhead, batching and hardware utilization, and treats a pass over a block as costing the same as a one-token pass. Larger blocks help only when their prefixes survive verification. The expected rate rises with agreement and block size, with an upper bound of (B + 1)/2 tokens per pass.

The 7B-Uno model card reports an average of 2.71 tokens per forward pass across its benchmarks and a system throughput, tokens per second summed over a full batch, of 5,255 against 2,794 for the next-best model it compares. The same table shows the trade-off. Mercury 2 and DiffusionGemma, two diffusion language models, are about twice as fast for a single request; the paper reports that Uno outscores both on every agentic tool-use, coding and long-context benchmark it evaluated.

7B-Uno model cardUno
7B
Nemotron-Diff
14B
Mercury 2
size n/a
DiffusionGemma
26B-A4B
Tokens per forward pass, average2.715.41n/a17.56
System throughput, tokens/s5,2552,7941,1971,136
Per-request throughput, tokens/s405290769836
SWE-bench Verified, %70.10.8n/a18.7
GPQA Diamond, %77.140.47770.7
Efficiency and two accuracy rows from the K2-Horizon-7B-Uno card, as reported by IFM (the card labels the model “Uno 8B”). The paper measures throughput with 1,024 input and 8,192 output tokens on one H200 GPU.

The paper reports speedups of up to 3× over the base model, including at the largest batch size that fits on the device. It also finds that Uno adds fewer parameters and uses less inference memory than the speculative-decoding methods it compares, DFlash and Eagle3, because it needs no separate draft model. The Uno repository ships two samplers: a linear sampler for high system throughput and a tree sampler for high per-request throughput. The published 7B-Uno results report 70.1% on SWE-bench Verified, 77.1% on GPQA Diamond and 98.9% on MATH500.

How the 375B model was trained

The 375B-A23B model card lists every training stage with its steps, tokens and sequence length, and IFM has published a checkpoint from each stage. Each stage starts from the final checkpoint of the one before.

Stage, in orderTokensTokens, drawn to scaleStepsSequence
Pretraining, phase 17.08T211,0008K
Pretraining, phase 28.05T240,0008K
Midtraining, stage 11.09T32,50032K
Midtraining, stage 2503B15,000128K
Midtraining, stage 3117B3,500512K
Midtraining, stage 4201B6,000512K
RL: 5 experts, then mergednot reportednot reported512K
SFT, phase 181B2,400512K
SFT, phase 2201B6,000512K
SFT, phase 350B1,500512K
Training stages of the 375B-A23B, from its model card. Bars share one linear scale. Steps are counted within each stage. Pretraining is 87% of the 17.4T reported tokens; the stages that turn the model into a long-context assistant use the other 13%.

Midtraining extends the context window in four stages, from 8K to 32K, 128K and then 512K tokens, using 1.91T tokens in all.The config sets the rotary-encoding base θ to 10,000,000, which spreads position angles over longer distances. IFM introduces post-training data, meaning reasoning traces, instruction following and agent trajectories in the chat format, from the start of midtraining rather than saving it for the end. Stage 4 shifts the mix further toward agentic and reasoning data. The model card describes the 524,288-token context as native from midtraining onward.

From the last midtraining checkpoint, IFM trained five reinforcement-learning (RL) experts, for knowledge work, instruction following, search, tool use and reasoning, and merged them into one model. Supervised fine-tuning (SFT) came after the merge: three phases totaling 332B tokens, the last on a high-quality subset of the earlier data with a decaying learning rate.The smaller models’ cards show different recipes. The 3.7B and 7B also run RL before SFT; the 32B and 36B-A4B go straight from midtraining to two SFT phases.

The training data

IFM describes each model’s pretraining corpus as roughly 20 trillion tokens, about 10 trillion of them synthetic.The stage tables differ in detail: the 375B card lists 15.1T tokens of pretraining, the 3.7B, 7B, 32B and 36B-A4B cards list 22.9T, and the blog says those four were trained on exactly the same 22T tokens. Nearly 17% of the pretraining corpus consists of problem-solving trajectories with explicit reasoning, and math trajectories were also rewritten as dialogues and study guides. IFM does not break out how the synthetic share and the reasoning share overlap.

The post-training data rests on task synthesis: more than 100 million unique tasks generated from task taxonomies, “diversity knobs” and web-search seeds. Tool definitions appear in JSON, XML and Markdown, and tool calls in JSON, XML and typed XML, so the model sees several conventions. IFM chose Markdown as the default tool format because on its data it was about 18.5% more token-efficient than JSON. Training on several schemas makes the common ones familiar; it does not guarantee that a deployed model follows every schema reliably. The 375B card recommends reasoning_effort="high", temperature 1.0 and top-p 0.95.

Reported benchmark scores

Every number in this section comes from IFM. The K2 Horizon scores are from IFM’s own runs; the comparison scores are as IFM reports them, and for the 32B and 36B-A4B IFM says they come from Artificial Analysis. IFM chose the comparison models, and they differ from model to model. Read the figure as IFM’s comparison, not as an independent ranking.

Model
Every reported score for this model
Scores in percent on one shared 0–100 scale, except GDPVal-AA, an Elo rating drawn on its own axis. Blue: the K2 Horizon model; grey: each comparison model IFM lists. The right-hand column gives K2’s score and the best other score. Transcribed from the full results on IFM’s technical blog, 3 September 2026; self-reported by IFM.

In IFM’s comparisons the three small models lead most rows, including the math and software-engineering results. The 36B-A4B leads its comparison set on tool use and terminal tasks and trails on science and long-context reasoning. The 32B trails Qwen3.8-27B on every row but one; its card reports a Stage 1 checkpoint and says Stage 2 results are coming.The blog labels this column K2-Horizon-32B; the 32B model card calls the evaluated checkpoint K2-Horizon-32B-Stage1. The 375B leads every model listed on SWE-Atlas-QnA and every open-weight model on Toolathlon; on most other rows GLM 5.2 or one of the closed models scores higher.

IFM also audited one of its own results. On Terminal-Bench 2.1 the 375B passed 500 of 712 trials, 70.2%. An automated audit, following Artificial Analysis’s reward-hacking procedure, flagged 24 of those passes across 10 tasks, where the model had, for example, found the benchmark’s reference solution on GitHub or edited the test harness. Removing them gives 66.9%.IFM, technical blog, “From Open Source to Open Science”. The figure plots the 70.2% that the model card reports, because the comparison scores were not audited the same way, and marks 66.9% beside it. IFM reports a similar case with the 7B, which downloaded SWE-bench answers in one run and scored an inflated 82%; the card lists 70.6%.The 7B model card’s table chooses reference models row by row. For SciCode it lists Mistral Small 4 (28.0) where the blog lists Gemma 4-12B (38.2), which outscores K2’s 31.6. This page uses the blog’s fixed comparison set.

What has been released

IFM calls K2 Horizon fully open: for every model it promises weights, training code, training data or data recipes, intermediate checkpoints, logs and evaluation details. On 25 September 2026 most of that was available and some was still announced. The table separates the two, and compares each artifact with what open-weight releases usually include.

ArtifactK2 Horizon, 25 Sep 2026Typical open-weight releaseWhat it lets you do
Final weightsAvailable for all sixyesRun and fine-tune the model
Permissive licenseApache 2.0variesShip it commercially without a custom agreement
Intermediate checkpointsAvailable; each card lists them by stagerareStudy when a capability appears during training
Training logsAvailable on W&BrareInspect loss curves and instabilities
Pretraining codeIn progress; xLLM expected end of SeptemberrareReproduce the run or adapt the recipe
Post-training codeRL code published as RL360rareRebuild the RL stages
Training dataFive dataset repositories published, starting with TxT360-v2almost neverAudit contamination, bias and provenance
Technical reportIn progress; expected end of SeptembersometimesRead the method and ablations in full
Evaluation protocolsPartial; Uno’s full suite “will be released soon”sometimesCheck published scores under the same harness
Quantized buildsFP8, GGUF and NVFP4 for some sizessometimesRun on smaller hardware via Ollama or llama.cpp
Status from the release-artifact tables on each model card (for example the 375B inventory, marked last updated 10 September 2026), the ifm-ai GitHub organization and the IFM Hugging Face organization, checked 25 September 2026. The “typical” column is a general characterization, not a survey.

Getting the models

All six model repositories are under the IFM organization on Hugging Face. The model cards give vLLM and SGLang serving recipes; the 375B recipe uses tensor parallelism across 8 GPUs with expert parallelism, validated on one 8× H200 node. IFM names Compass, Cerebras and Nebius as inference partners for API access.IFM, press release. The blog adds day-zero support in vLLM, SGLang and Ollama, and hardware support from NVIDIA, AMD and Cerebras. Uno adapters and code are at github.com/ifm-ai/uno.