Skip to content

Eval bug: Qwen3.5-27B batched performance much lower than expected #20006

Description

@remyoudompheng

Name and Version

$ ./llama-cli --version
ggml_vulkan: Found 1 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
version: 8182 (05728db)
built with GNU 15.2.1 for Linux x86_64

Operating systems

Linux

GGML backends

Vulkan

Hardware

Radeon 780M iGPU with DDR5 memory

Models

https://huggingface.co/unsloth/Qwen3.5-27B-GGUF/blob/main/Qwen3.5-27B-UD-Q4_K_XL.gguf
https://huggingface.co/unsloth/gemma-3-27b-it-qat-GGUF/blob/main/gemma-3-27b-it-qat-UD-Q4_K_XL.gguf

Problem description & steps to reproduce

When running Qwen3.5-27B the batched performance does not scale in the same way as other dense models with the same size (see performance numbers below).

First Bad Commit

No response

Relevant log output

$ llama-batched-bench -m Qwen3.5-27B-UD-Q4_K_XL.gguf -c 16384 -npp 256 -ntg 64 -npl 1,8,16,32,48

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
build: 8182 (05728db18) with GNU 15.2.1 for Linux x86_64
...
sched_reserve: graph nodes  = 7721 (with bs=512), 4745 (with bs=1)
PP TG B N_KV T_PP s S_PP t/s T_TG s S_TG t/s T s S t/s
256 64 1 320 4.604 55.61 16.691 3.83 21.295 15.03
256 64 8 2560 33.896 60.42 74.504 6.87 108.400 23.62
256 64 16 5120 71.501 57.29 114.469 8.95 185.970 27.53
256 64 32 10240 146.497 55.92 194.407 10.53 340.904 30.04
256 64 48 15360 223.670 54.94 289.033 10.63 512.702 29.96

Comparison with Gemma 3 27B

$ llama-batched-bench -m gemma-3-27b-it-qat-UD-Q4_K_XL.gguf -c 16384 -npp 256 -ntg 64 -npl 1,8,16,32

ggml_vulkan: Found 1 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
build: 8182 (05728db18) with GNU 15.2.1 for Linux x86_64
...
sched_reserve: graph nodes  = 2613
PP TG B N_KV T_PP s S_PP t/s T_TG s S_TG t/s T s S t/s
256 64 1 320 4.035 63.44 14.962 4.28 18.997 16.84
256 64 8 2560 29.486 69.46 58.729 8.72 88.215 29.02
256 64 16 5120 61.090 67.05 61.877 16.55 122.967 41.64
256 64 32 10240 123.017 66.59 67.983 30.13 191.000 53.61

Here is the Vulkan perf dump for a single generation pass:

Qwen 3.5 27B (3.16s with at least 1.8s in non-matmul ops)

Vulkan Timings:
ADD: 224 x 882.614 us = 197706 us
CONCAT: 48 x 162.588 us = 7804.24 us
CONT: 112 x 1225.27 us = 137230 us
CPY: 97 x 1740.66 us = 168844 us
EXP: 48 x 3.904 us = 187.41 us
FLASH_ATTN_EXT dst(256,24,1,32),  q(256,1,24,32),  k(256,512,4,32),  v(256,512,4,32),  m(512,1,1,32): 16 x 612.365 us = 9797.85 us (657.537 GFLOPS/s)
GET_ROWS: 98 x 1249.98 us = 122498 us
GLU: 64 x 104.801 us = 6707.27 us
L2_NORM: 96 x 30.124 us = 2891.93 us
MUL: 352 x 2423.93 us = 853223 us
MUL_MAT q4_K m=1024 n=32 k=5120: 22 x 0.47 us = 10.361 us (712408 GFLOPS/s)
MUL_MAT q4_K m=12288 n=32 k=5120: 16 x 1798.08 us = 28769.3 us (2239.13 GFLOPS/s)
MUL_MAT q4_K m=17408 n=32 k=5120: 128 x 2131.24 us = 272799 us (2676.23 GFLOPS/s)
MUL_MAT q4_K m=48 n=32 k=5120: 96 x 48.829 us = 4687.62 us (322.083 GFLOPS/s)
MUL_MAT q4_K m=5120 n=32 k=17408: 32 x 5852.47 us = 187279 us (974.647 GFLOPS/s)
MUL_MAT q4_K m=5120 n=32 k=6144: 16 x 805.071 us = 12881.1 us (2500.53 GFLOPS/s)
MUL_MAT q5_K m=10240 n=32 k=5120: 48 x 1678.32 us = 80559.5 us (1999.09 GFLOPS/s)
MUL_MAT q5_K m=6144 n=32 k=5120: 48 x 850.027 us = 40801.3 us (2368.24 GFLOPS/s)
MUL_MAT q6_K m=1024 n=32 k=5120: 10 x 0.48 us = 4.8 us (698982 GFLOPS/s)
MUL_MAT q6_K m=248320 n=32 k=5120: 1 x 40075 us = 40075 us (2030.23 GFLOPS/s)
MUL_MAT q6_K m=5120 n=32 k=17408: 32 x 7145.06 us = 228642 us (798.327 GFLOPS/s)
MUL_MAT_VEC q4_K m=5120 n=1 k=6144 batch=32: 48 x 7805.86 us = 374681 us (257.896 GFLOPS/s)
REPEAT: 144 x 1613.54 us = 232350 us
RMS_NORM_MUL RMS_NORM(128,48,1,32): 48 x 96.705 us = 4641.88 us
RMS_NORM_MUL RMS_NORM(256,24,32,1): 16 x 57.325 us = 917.214 us
RMS_NORM_MUL RMS_NORM(256,4,32,1): 16 x 19.874 us = 317.996 us
RMS_NORM_MUL RMS_NORM(5120,32,1,1): 129 x 25.856 us = 3335.47 us
ROPE: 32 x 13.526 us = 432.846 us
SCALE: 48 x 13.642 us = 654.861 us
SET_ROWS: 32 x 7.394 us = 236.632 us
SIGMOID: 64 x 6.323 us = 404.733 us
SILU: 96 x 31.888 us = 3061.29 us
SOFTPLUS: 48 x 3.87 us = 185.768 us
SSM_CONV: 48 x 90.451 us = 4341.67 us
SUB: 48 x 35.706 us = 1713.91 us
SUM_ROWS: 96 x 1350.2 us = 129619 us
Total time: 3.16029e+06 us.

Gemma 3 27B (1.35s)

Vulkan Timings:
ADD: 124 x 39.782 us = 4933.07 us
CPY: 2 x 2.183 us = 4.367 us
FLASH_ATTN_EXT dst(128,32,1,32),  q(128,1,32,32),  k(128,512,16,32),  v(128,512,16,32),  m(512,1,1,32): 62 x 1213.18 us = 75217.5 us (221.265 GFLOPS/s)
GET_ROWS: 2 x 17.553 us = 35.106 us
GLU: 62 x 233.759 us = 14493.1 us
MUL: 62 x 24.827 us = 1539.33 us
MUL_MAT iq4_xs m=2048 n=32 k=5376: 5 x 378.43 us = 1892.15 us (1861.84 GFLOPS/s)
MUL_MAT iq4_xs m=21504 n=32 k=5376: 10 x 4339.82 us = 43398.2 us (1704.69 GFLOPS/s)
MUL_MAT iq4_xs m=4096 n=32 k=5376: 5 x 1231.92 us = 6159.58 us (1143.87 GFLOPS/s)
MUL_MAT q4_K m=2048 n=32 k=5376: 52 x 413.115 us = 21482 us (1705.52 GFLOPS/s)
MUL_MAT q4_K m=21504 n=32 k=5376: 104 x 3293.55 us = 342530 us (2246.22 GFLOPS/s)
MUL_MAT q4_K m=4096 n=32 k=5376: 52 x 1120.59 us = 58270.7 us (1257.51 GFLOPS/s)
MUL_MAT q4_K m=5376 n=32 k=21504: 27 x 8751.36 us = 236287 us (845.421 GFLOPS/s)
MUL_MAT q4_K m=5376 n=32 k=4096: 62 x 677.188 us = 41985.7 us (2080.83 GFLOPS/s)
MUL_MAT q5_K m=2048 n=32 k=5376: 10 x 106.962 us = 1069.62 us (6587.15 GFLOPS/s)
MUL_MAT q5_K m=21504 n=32 k=5376: 10 x 3055.7 us = 30557 us (2421.07 GFLOPS/s)
MUL_MAT q5_K m=4096 n=32 k=5376: 5 x 1009.73 us = 5048.67 us (1395.57 GFLOPS/s)
MUL_MAT q5_K m=5376 n=32 k=21504: 5 x 9979.65 us = 49898.2 us (741.367 GFLOPS/s)
MUL_MAT q6_K m=2048 n=32 k=5376: 57 x 1.333 us = 75.988 us (528517 GFLOPS/s)
MUL_MAT q6_K m=262208 n=32 k=5376: 1 x 48139.9 us = 48139.9 us (1873.87 GFLOPS/s)
MUL_MAT q6_K m=5376 n=32 k=21504: 30 x 11262 us = 337861 us (656.95 GFLOPS/s)
RMS_NORM_MUL RMS_NORM(5376,32,1,1): 249 x 37.906 us = 9438.81 us
RMS_NORM_MUL_ROPE RMS_NORM(128,32,32,1): 62 x 197.689 us = 12256.7 us
RMS_NORM_MUL_ROPE_VIEW_SET_ROWS RMS_NORM(128,16,32,1): 62 x 33.281 us = 2063.45 us
ROPE_VIEW_SET_ROWS ROPE: 62 x 16.62 us = 1030.49 us
SCALE: 63 x 13.547 us = 853.473 us
SET_ROWS: 124 x 19.583 us = 2428.31 us
Total time: 1.34895e+06 us.

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