Skip to content

Misc. bug: Huge performance degradation with MTP on Vulkan #23774

Description

@piotrp88

Name and Version

version: 9265 (0be84685b)
built with GNU 15.2.0 for Linux x86_64
version: 9354 (9777256c3)
built with GNU 15.2.0 for Linux x86_64

Operating systems

Linux

Which llama.cpp modules do you know to be affected?

llama-server

Command line

# Change this variables to suite your case
PORT="8080"
DOCKER_IMAGE="ghcr.io/ggml-org/llama.cpp:server-vulkan"
MODEL_DIR_ON_HOST="/mnt/ext_ssd1tb/llamacpp_models/qwen/"
MODEL_FILENAME="Qwen3.6-35B-A3B-MTP-UD-Q5_K_XL.gguf"

# Run the llama.cpp Vulkan Docker on AMD R9700 AI PRO
docker run --rm \
    --privileged \
    --device /dev/kfd --device /dev/dri \
    --name "llama-server-$PORT" \
    --group-add video \
    --ipc=host \
    --shm-size 16g \
    -v "$MODEL_DIR_ON_HOST":"$MODEL_DIR_ON_HOST" \
    -p "$PORT":"$PORT" \
    "$DOCKER_IMAGE" \
    --host 0.0.0.0 --port "$PORT" \
    --model "$MODEL_DIR_ON_HOST$MODEL_FILENAME" \
    --ctx-size 262144 \
    --n-gpu-layers auto \
    --flash-attn on \
    --batch-size 16384 \
    --ubatch-size 3072 \
    --threads 8 \
    --threads-batch 16 \
    --cont-batching \
    --cache-prompt \
    --temp 0.2 \
    --top-k 20 \
    --top-p 0.95 \
    --min-p 0.01 \
    --presence-penalty 0.00 \
    --repeat-penalty 1.0 \
    --ctx-checkpoints 64 \
    --no-mmap \
    --chat-template-kwargs '{"preserve_thinking":true}' \
    --spec-type draft-mtp \
    --spec-draft-n-max 2 \
    --rope-scale 2 \
    --rope-scaling yarn

Problem description & steps to reproduce

I'm running on Ubuntu Server 24 LTS on a AMD R9700 AI PRO.

Comparing the Vulkan docker release b9354 against b9265 I observed a huge performance degradation with MTP models like Qwen3.6 (~5% in prompt and 22% to 33% in generation).

I'm running a simple prompt from the llama.cpp web UI and saw this kind of results:

Model release prompt
toc/s
gen
toc/s
Toc/s drop
%prompt, %gen
Qwen3.6-35B-A3B-MTP-UD-Q5_K_XL.gguf ❌ b9354 748 63 -4.7%, -22.2%
Qwen3.6-35B-A3B-MTP-UD-Q5_K_XL.gguf ✅ b9265 785 81 baseline
Qwen3.6-35B-A3B-MTP-IQ4_XS-4.19bpw.gguf ❌ b9354 976 102 -5.9%, -33.3%
Qwen3.6-35B-A3B-MTP-IQ4_XS-4.19bpw.gguf ✅ b9265 1037 153 baseline

Using the same prompt I also noticed a very strange behaviour with Qwen3.5-9B-Q4_K_M.gguf which is a non-MTP model: running the b9354 provides a very verbose and sometimes never-ending output, while the old b9265 release generates a very fast and concise response. The two releases doesn't change with the non-MTP model.

First Bad Commit

No response

Relevant log output

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions