Skip to content

Eval bug: mmproj on vulkan extremely degraded compared to cuda for specific images #20081

Description

@Interpause

Name and Version

>>> ./build/bin/llama-server --version
ggml_cuda_init: found 1 CUDA devices:
Device 0: NVIDIA GeForce RTX 4090, compute capability 8.9, VMM: yes
ggml_vulkan: Found 2 Vulkan devices:
ggml_vulkan: 0 = AMD Radeon 780M Graphics (RADV PHOENIX) (radv) | uma: 1 | fp16: 1 | bf16: 0 | warp size: 64 | shared memory: 65536 | int dot: 1 | matrix cores: KHR_coopmat
ggml_vulkan: 1 = NVIDIA GeForce RTX 4090 (NVIDIA) | uma: 0 | fp16: 1 | bf16: 1 | warp size: 32 | shared memory: 49152 | int dot: 1 | matrix cores: NV_coopmat2
version: 8189 (4d828bd1a)
built with GNU 15.2.1 for Linux x86_64

Operating systems

Linux

GGML backends

Vulkan

Hardware

AMD Ryzen 7 PRO 8845HS (16) @ 5.14 GHz
NVIDIA GeForce RTX 4090 [Discrete]
AMD Radeon 780M Graphics [Integrated]

Models

https://huggingface.co/unsloth/Qwen3.5-27B-GGUF/blob/main/Qwen3.5-27B-UD-Q3_K_XL.gguf
https://huggingface.co/unsloth/Qwen3.5-27B-GGUF/blob/main/mmproj-F32.gguf

Problem description & steps to reproduce

For context, I use MTMD_BACKEND_DEVICE=Vulkan0 to toggle on/off whether mmproj-F32.gguf is offloaded to iGPU (Vulkan) or dGPU (CUDA). In both cases, Qwen3.5-27B-UD-Q3_K_XL.gguf is entirely offloaded to CUDA.

For most common cases like OCR, the vision performance is as expected. However, some images (this + 1 other I cannot publish) completely bamboozle the model's vision when on Vulkan versus CUDA:

Image

describe this is one sentence.

CUDA's response:

The image shows a Gazebo Sim environment running in a browser via noVNC, displaying an orange quadcopter drone hovering above a gray platform amidst blue cloud-like obstacles, with a control panel on the right showing velocity settings and keyboard controls for forward, back, left, right, up, down, and yaw movements.

Vulkan's response:

The image displays a list of various words in Vietnamese, such as "tinh," "thanh," and "trường," arranged vertically against a plain white background.

I have also tested with mmproj-F16.gguf also from Unsloth. I ran into a similar issues with Qwen3.5-35B-A3B with both Unsloth's and AesSedai's model and mmproj, so I believe the issue is likely with the Vulkan implementation rather than the model.

EDIT: No issue with CPU/BLAS (MTMD_BACKEND_DEVICE=BLAS):

BLAS response:

This screenshot shows a Gazebo Sim simulation running in a browser via noVNC, displaying a drone flying among blue cloud-like obstacles with a control panel on the right for adjusting velocity and keyboard input mapping.

First Bad Commit

Unsure.

Relevant log output

cuda.log

vulkan.log

blas.log

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions