the qwen3vl projector bug is upstream and fixed; bump the vendored llama.cpp
Our llama-cpp-python 0.3.30 vendors llama.cpp e3a74b299 (2026-06-16). The fix for
this exact failure landed five weeks later:
b4aa7dd47 mtmd : use align_corners for qwen3vl vision position embedding
interpolation (#25781, 2026-07-21)
0.3.36 vendors 0c1e57098 (2026-10-01), which contains it. Wrong position-embedding
interpolation makes the vision features spatially meaningless, which is why
Qwen3.8-27B described every picture identically rather than merely badly, and why
a gemma4v projector -- a different graph, untouched by that bug -- read the same
images correctly through the same pipeline.
Everything measured fits: the projector pairs correctly (projection_dim 5120 =
hidden_size 5120), loads, and injects tokens the model notices, since it says so
when no image is sent; two publishers' conversions fail identically because the
defect is in the consumer not the artifact; and the image-token floor is
irrelevant -- tested at 1024 and at 0, byte-identical answers both times.
The bump only takes effect on a rebuild (REBUILD_LLAMA=1), and it must stay a
local source build: the CMAKE_ARGS carry -DGGML_CUDA=ON -DGGML_VULKAN=ON
-DGGML_RPC=ON together, and a PyPI wheel has at most one backend. Until a rebuild
runs, mmproj stays off the qwen38 cards and vision goes to gemma-4-31B-heretic.
Also records the method failure, because it cost most of the investigation: three
conclusions were drawn from reading headers and code and all three were wrong.
The floor was dismissed with "the symptom predates it" -- which was never
checked, and could not have been, since the floor is applied automatically
whenever the projector type matches. Two projectors were then compared while the
one variable this repo introduced was held constant in both.
Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014T3rZozi1Ehk96NG1WesgC
Showing
Please
register
or
sign in
to comment