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
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
— 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 —
— 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
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.
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
- llama.cpp PR #20168: model : add support for Phi4ForCausalLMV (merged 2026-03-11) (github, 2026-10-04)
- dranger003 GGUF with mmproj projector (PR author's test weights) (other, 2026-10-04)
- jamesburton GGUF — weights only, no mmproj file (other, 2026-10-04)
Inherits Phi-4's 16K window — cramped for 2026, especially for the multi-image reasoning it was built for.
Chunked retrieval keeps requests inside 16K.
Evidence · 1 source · anecdotal
- Model card (16,384 context) (vendor, 2026-08-30)