Still Waiting for Vision πŸ‘€ > Stopped Waiting. Transplanted One.

#14
by KennyVo - opened

KAT-Coder-V2.5-Dev has basically become my default coding model.

The only thing I still miss is vision support. Screenshots, browser renders, UI mockups, and visual debugging are a huge part of modern development, and that's probably the biggest gap KAT still has.

I know I'm not the first person to bring this up, but consider this another vote for vision. πŸ˜„

Thanks for building such a great open-weight model.

Update Sep 09 2026

Vision is here πŸ‘€

The wait is over β€” I've uploaded a working vision-enabled version of KAT-Coder-V2.5-Dev:

πŸ”— KennyVo/KAT-Coder-V2.5-Dev-OrnithVision

What happened

The original KAT-Coder-V2.5-Dev is a pure language model β€” no vision tower, no MTP layers. The AWQ-INT4 quantized variant from cyankiwi added a visual tower, but all 166 bias tensors in it were zeroed out, making the vision encoder non-functional.

I fixed this by transplanting the working visual tower from Ornith-1.5-35B-A3B (same Qwen3_VisionTransformer architecture) into the KAT language backbone. 333 visual tensors replaced, all 123,493 language model tensors preserved.

Quick stats

  • Visual tower: 27-layer ViT, hidden_size=1152, 16 heads, patch_size=16
  • Language backbone: KAT-Coder-V2.5-Dev (35B MoE, 3B active) β€” unchanged
  • Quantization: AWQ INT4 (group size 32)
  • Total size: ~23 GB, 5 shards

Usage

from transformers import AutoModelForCausalLM, AutoProcessor

model = AutoModelForCausalLM.from_pretrained(
    "KennyVo/KAT-Coder-V2.5-Dev-OrnithVision",
    torch_dtype="auto", device_map="auto"
)
processor = AutoProcessor.from_pretrained("KennyVo/KAT-Coder-V2.5-Dev-OrnithVision")
vllm serve KennyVo/KAT-Coder-V2.5-Dev-OrnithVision --dtype float16

Reproduce it yourself

See REPRODUCE.md for step-by-step instructions, or grab the transplant script from the repo.

Fun fact: the entire combining study, Python source code, forensic analysis, and this model card were generated by KAT-Coder-V2.5-Dev itself β€” a model doing its own repair.

Credits: Kwaipilot (language backbone), ornith-ai (vision tower), cyankiwi (quantization).

I was just wondering about this. I went searching for an mmproj file in vain. I would also love to have vision added!

try this out ?

beyoru/KAT-Coder-V2.5-Dev-VL
beyoru/KAT-Coder-V2.5-Dev-VL-Flash

It seems the vision component is subpar:

Vision capability β€” READ THIS
The vision tower was never co-trained with this checkpoint's language model, which was heavily RL-tuned for agentic coding. Measured on the bf16 parent (this build inherits the behaviour, and 4-bit experts can only make it worse):

probe	bf16 parent
Dominant colour (4 solid-colour images)	4 / 4
Shape (circle / square / triangle)	3 / 3
Text/number reading (OCR)	0 / 4 — CAT→CCT, 42→48, HELLO→Hiro
βœ… Coarse visual questions: colour, shape, layout, rough scene gist.
❌ Not usable for: reading code from screenshots, OCR, UI labels, document or chart understanding β€” anything where one wrong character changes the answer.
If your workload is text-only, the vision tower costs you 0.9 GB and nothing else; the language model is what this checkpoint is for.

image

Used base model's BF16 mmproj and it works perfectly.
https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF/blob/main/mmproj-BF16.gguf

I have only tested it with llamacpp with "--image-min-tokens 2048".

That worked perfectly - thank you!

I agree the base model's vision mmproj works fine.

KennyVo changed discussion title from Still Waiting for Vision πŸ‘€ to Still Waiting for Vision πŸ‘€ > Stopped Waiting. Transplanted One.

Sign up or log in to comment