Known-issues sheets for local language models Rev 0.1.0 · reviewed every 7 days

Model datasheet · K2-Horizon

K2-Horizon MoVA 36B-A4B

Does not run in stock llama.cpp, Ollama or LM Studio yet: support is an open pull request (llama.cpp #29535), so the GGUFs need IFM's own fork. The MLX build runs in stock mlx-lm with --trust-remote-code. Fully open (weights, data and training code, Apache 2.0), but few of IFM's numbers are recordable here, and the one independent test found it looping on agentic coding and losing recall past the middle of a 256K context. Every layer caches, so the KV cache is heavy: about 24GB at 128K.

Vendor
IFM (MBZUAI)
Architecture
MoE · 37.4B total / ~4B active
Context
524,288 tokens
License
Apache-2.0
Released
2026-09-01
Vision
No

→ GGUF (llama.cpp / LM Studio / Ollama) → MLX (Apple Silicon)

Architecture, from its own config.json

48 layers · 48 full attention

32 attention heads over 8 KV heads (GQA 4:1), head dim 128 · mixture of experts, 4B of 37.4B active per token across 8 experts · vocabulary 250,624

Where the memory goes: weights by band above, plus a KV cache of 1.5GB at 8K · 6GB at 32K · 24GB at 128K, plus the runtime's own working memory — dominated by the output projection over that vocabulary.

Inside one layer, from its own tensors

48 × full-attention layer

input_layernormattentionq_projkvsoftmax(q·kᵀ/√d) · v32 query heads over 8 key/valueheadso_projpost_attention_layernormmixture of expertsrouter picks 8 of 100 expertseach 768 wide: gate·up → downplus a shared expert, run for everytoken

The green line down the right of each half is the residual: it leaves the spine above the norm, skips the operation entirely and rejoins at the +. Where attention is drawn open, q, k and v are scaled to their real output widths — a model that shares key and value heads across many query heads shows one wide box beside two narrow ones.

Around the stack: an embedding of 250,624 × 2,560, a final norm, and a separate output projection. The first 3 layers use a dense feed-forward instead of the experts.

On the norm names: despite what it is called, post_attention_layernorm is drawn after the residual add here, which is where this family applies it — it normalises the input to the feed-forward, not the output of attention. Models that carry a separate pre_feedforward_layernorm use it the other way, and are drawn that way.

§1 Characteristics by quantization band

Q2–Q3 — 2–3 bit

17.7GB weights · e.g. Q3_K_M + KV: 1.5GB at 8K · 6GB at 32K · 24GB at 128K
Math & reasoning 5/10
data checked Oct 2026
  • quant-degradation-community — editorial band derivation @ Q3_K_M · aggregated · 2026-10-04

    Editorial derivation: two points down. Only community 3-bit files exist (NANI-Nithin), unmeasured.

Coding 4/10
data checked Oct 2026
  • quant-degradation-community — editorial band derivation @ Q3_K_M · aggregated · 2026-10-04

    Editorial derivation: two points down from the full band. Saves 4.7GB over Q4_K_M.

Q4–Q5 — 4–5 bit

22.4GB weights · e.g. Q4_K_M , mlx-4bit + KV: 1.5GB at 8K · 6GB at 32K · 24GB at 128K
Math & reasoning 6/10
data checked Oct 2026
  • quant-degradation-community — editorial band derivation @ Q4_K_M · aggregated · 2026-10-04

    Editorial derivation: one point down. mlx-community found plain 4-bit costs +4.5% perplexity on this model and kept the non-expert weights at 8-bit to get it to +1.2%; IFM's Q4_K_M is a standard K-quant and has not been measured.

Coding 6/10
data checked Oct 2026
  • quant-degradation-community — editorial band derivation @ Q4_K_M · aggregated · 2026-10-04

    Editorial derivation: carried. The independent test that set the full-band score was run at Q5_K_M, i.e. in this band already.

Q6–Q8 — 6–8 bit

30.8GB weights · e.g. Q6_K , Q8_0 + KV: 1.5GB at 8K · 6GB at 32K · 24GB at 128K
Math & reasoning 7/10
data checked Oct 2026
  • quant-degradation-community — editorial band derivation @ Q6_K · aggregated · 2026-10-04

    Editorial derivation: carried from the full band; mlx-community measured 8-bit at +0.04% WikiText-2 perplexity against bf16.

Coding 6/10
data checked Oct 2026
  • quant-degradation-community — editorial band derivation @ Q6_K · aggregated · 2026-10-04

    Editorial derivation: carried from the full band.

FP16 — full precision (fp16/bf16)

74.9GB weights · e.g. bf16 + KV: 1.5GB at 8K · 6GB at 32K · 24GB at 128K
Math & reasoning 7/10
data checked Oct 2026
  • vendor-model-card — GPQA Diamond = 80.8 @ bf16 · vendor-reported · 2026-10-04

    The card says its table "follow[s] the Artificial Analysis Intelligence Index categories" and that every comparison column is Artificial Analysis data, so only IFM's own figures on standard public benchmarks are recorded here; the AA-LCR, AA-Omniscience and tau3-Banking rows and all comparison columns are left out. IFM: "All reported results use high reasoning effort." No AIME or HMMT figure is published for this model; Humanity's Last Exam (no tools) is 25.2 on the same card.

Coding 6/10
data checked Oct 2026
  • vendor-model-card — Terminal-Bench 2.1 = 58.6 @ bf16 · vendor-reported · 2026-10-04

    The card says its table "follow[s] the Artificial Analysis Intelligence Index categories" and that every comparison column is Artificial Analysis data, so only IFM's own figures on standard public benchmarks are recorded here; the AA-LCR, AA-Omniscience and tau3-Banking rows and all comparison columns are left out. IFM: "All reported results use high reasoning effort." SciCode 38.9 on the same card. Absent from the Aider polyglot leaderboard as of 2026-10-04.

  • community-consensus — independent local test (Luke's Dev Lab, Q5_K_M) @ Q5_K_M · aggregated · 2026-10-04

    Measured at Q5_K_M, one band down. Used here only as a check on the vendor figure, not as a full-precision measurement: 5-bit on a 36B mixture is not expected to explain wholesale agentic failure.

    One reviewer's 2026-10-01 test on a 16GB GPU: 57 of 100 on a private HumanEval rewrite, failed the Blender and Godot agent tasks with repeated thinking loops, and closed with "I cannot recommend this model". Discussed at https://huggingface.co/IFM/K2-Horizon-MoVA-36B-A4B/discussions/9, where IFM replies that a 4B-active model should not be expected to match a dense 27B.

§2 Known issues & what fixes them

ISSUE-01 severe Q2–Q3 / Q4–Q5 / Q6–Q8 / FP16 · math, coding, tool-calling, long-context, factuality, instruction-following, creative-writing

Does not run in stock llama.cpp, Ollama or LM Studio yet. Support is an open pull request (llama.cpp #29535, opened 2026-09-27 and flagged by the project's PR checker as too large to review as-is), so a stock build refuses the GGUF with "does not recognise this GGUF's model architecture". IFM's fork works, but early builds of it also failed to load on Windows over a tokenizer regex. On a Mac, the mlx-community build does run in stock mlx-lm via --trust-remote-code, though mlx_lm.server does not yet parse its thinking tags or tool calls.

Fix
Update your runtime [partial]

Build IFM's llama.cpp fork (branch model/K2Horizon) from source, or on a Mac use the mlx-community build with --trust-remote-code. Once #29535 merges, an ordinary update fixes this.

No fix
No known fix — choose a different model

If you need it in Ollama or LM Studio today, or need parsed tool calls on the MLX path, there is no fix yet.

Evidence · 4 sources · community-consensus
ISSUE-02 moderate Q2–Q3 / Q4–Q5 / Q6–Q8 / FP16 · long-context

In the one independent test, at Q5_K_M with a 256K context, a passkey planted at 0%, 25% or 50% depth was found three times out of three, but at 75% and 100% depth only once out of three, with noisy answers even when it succeeded. Fifteen runs on one setup, so a warning rather than a measurement; the HF thread that cites it summarises this as weak recall beyond 131K. The 512K context the card advertises should not be taken on trust.

Fix
RAG (retrieval) [partial]

Keep what matters near the start of the context, or retrieve passages instead of relying on recall from deep in a long one.

Evidence · 2 sources · anecdotal
ISSUE-03 moderate Q2–Q3 / Q4–Q5 / Q6–Q8 / FP16 · coding, tool-calling

The same test found it looping in long agentic coding tasks: it failed a Blender task and a Godot game build with repeated "thinking loop detected" interventions, kept running tests after being told to stop, and scored 57 of 100 on the reviewer's private HumanEval rewrite. The reviewer did not recommend it. IFM replied that it was not trained for those tasks and that improvements are coming. A separate thread reports the stock chat templates do not handle tool calls correctly in the Hermes agent.

Fix
Prompt technique [partial]

Keep agent sessions short and well-scoped, and use a harness with loop detection; IFM recommends reasoning_effort "high", temperature 1.0, top_p 0.95.

Fix
Update your runtime [partial]

Use IFM's k2_horizon reasoning and tool-call parsers (vLLM/SGLang, or the fork's chat template) rather than a generic template.

Evidence · 3 sources · community-consensus
ISSUE-04 moderate Q2–Q3 / Q4–Q5 / Q6–Q8 / FP16 · long-context

Every one of its 48 layers keeps a full KV cache, which MoVA does not shrink: the routed value experts still write one value vector per KV head. That is 192KB per token, about 24GB at 128K, on top of 22GB of Q4_K_M weights. IFM acknowledges the attention layout "would take quite a bit memory for long generation" and says a fix is in the works.

Fix
Prompt technique [partial]

Cap the context to what the task needs, and use an 8-bit KV cache where your runtime supports it.

Evidence · 2 sources · community-consensus
ISSUE-05 mild Q2–Q3 / Q4–Q5 / Q6–Q8 / FP16 · tool-calling, long-context, factuality, instruction-following

IFM's benchmark table follows the Artificial Analysis Intelligence Index categories and fills every comparison column with Artificial Analysis data. This site does not republish Artificial Analysis numbers, so the AA-branded rows (AA-LCR, AA-Omniscience, tau3-Banking) are left out, and with them most of the evidence on tool calling, long context and factuality. Those cells are unrated, not bad. Absent from Aider polyglot and Vectara HHEM as of 2026-10-04.

No fix
No known fix — choose a different model

Not a defect but a gap. Revisit when IFM's technical report or independent runs on standard benchmarks land.

Evidence · 1 source · anecdotal
ISSUE-06 moderate Q2–Q3 · math, coding, tool-calling

IFM ships nothing below Q4_K_M; the 3-bit files are a community conversion (NANI-Nithin) that has not been measured. mlx-community found this model sensitive in its non-expert weights: plain 4-bit cost +4.5% perplexity, and keeping attention and embeddings at 8-bit brought that to +1.2%. Uniform 3-bit has nowhere to hide that, so the band is scored two points down.

Fix
Move up a quant band [strong]

Q4_K_M is 22.4GB. On a 24GB GPU, offload some experts to system RAM rather than dropping to 3-bit.

Evidence · 2 sources · anecdotal