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

Model datasheet · Phi

Phi-4-reasoning-vision

Microsoft's selective-reasoning vision model — it decides when to think. llama.cpp has run its vision tower since 2026-03-11, but only with the separate mmproj projector file loaded alongside the weights; a GGUF without one is text-only. No text benchmark scores are recorded yet.

Vendor
Microsoft
Architecture
Dense · 15B
Context
16,384 tokens
License
MIT
Released
2026-03-04
Vision
Yes

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

Architecture, from its own config.json

40 layers · 40 full attention

40 attention heads over 10 KV heads (GQA 4:1), head dim 128 · dense feed-forward · vocabulary 100,352

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

Inside one layer, from its own tensors

40 × full-attention layer

input_layernormattentionqkv_proj — q, k and v in one tensorsoftmax(q·kᵀ/√d) · v40 query heads over 10 key/valueheadso_projpost_attention_layernormfeed-forwardgate_proj · up_proj → down_proj17,920 wide

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 100,352 × 5,120, a final norm, and a separate output projection.

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

7GB weights · e.g. Q3_K_M + KV: 1.6GB at 8K · 3.1GB at 32K · 3.1GB at 128K

— Not yet rated · contributions welcome —

Q4–Q5 — 4–5 bit

9GB weights · e.g. Q4_K_M , mlx-4bit + KV: 1.6GB at 8K · 3.1GB at 32K · 3.1GB at 128K

— Not yet rated · contributions welcome —

Q6–Q8 — 6–8 bit

12GB weights · e.g. Q6_K , Q8_0 + KV: 1.6GB at 8K · 3.1GB at 32K · 3.1GB at 128K

— Not yet rated · contributions welcome —

FP16 — full precision (fp16/bf16)

29GB weights · e.g. fp16 + KV: 1.6GB at 8K · 3.1GB at 32K · 3.1GB at 128K

— Not yet rated · contributions welcome —

§2 Known issues & what fixes them

ISSUE-01 mild Q2–Q3 / Q4–Q5 / Q6–Q8 / FP16 · instruction-following

Vision works in llama.cpp since PR #20168 (merged 2026-03-11), which added a mmproj path for the Phi SigLIP2 vision tower — but only when the separate mmproj projector GGUF is loaded with the model. Some community GGUF repos ship no projector at all (jamesburton's, linked here until 2026-10-04, is one), and loading one of those silently gives you a text-only model. This entry previously said llama.cpp could not run the vision tower at all; that was wrong after 2026-03-11.

Fix
Update your runtime [strong]

Use a llama.cpp build from 2026-03-11 or later and download the mmproj file with the weights (pass it with --mmproj). dranger003's repo, used by the PR author to validate the merge, ships mmproj-phi-4-reasoning-vision-15b-bf16.gguf with q4_k and q8_0 weights; DevQuasar's repo has a fuller quant ladder plus a projector but was not tested in the PR. On a Mac, the mlx-community 4-bit build with mlx-vlm is an alternative (unverified here).

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

Inherits Phi-4's 16K window — cramped for 2026, especially for the multi-image reasoning it was built for.

Fix
RAG (retrieval) [partial]

Chunked retrieval keeps requests inside 16K.

Evidence · 1 source · anecdotal