Skip to content

Eval bug: server crash when processing large image with >4B Qwen3.5 and Qwen3-VL models #21750

Description

@CatKasha

Name and Version

version: 8708 (ae65fbd)
built with Clang 19.1.5 for Windows x86_64

Operating systems

Windows

GGML backends

Vulkan

Hardware

ryzen 3700x, radeon rx6600

Models

No response

Problem description & steps to reproduce

server crash when processing large image with >4B Qwen3.5 and Qwen3-VL models
also noticed when processing image larger than 1024x gpu can freeze couple times, with gemma4 its not that noticeable

with --flash-attn off everything works but when processing >1024x images server start eat almost all ram, encoding image slice take long time (done on cpu) and then decoding image done on gpu

test images are white png with 1024x1024, 2048x2048, 4096x4096, 8192x8192 res
tested with --n-gpu-layers 0 so mmproj can fit to gpu
launch option:

.\bin\llama-server.exe ^
-m       .gguf ^
--mmproj .gguf ^
--jinja ^
--n-gpu-layers 0 ^
--ctx-size 16384 ^
-fit off
build ver unsloth, mmproj-F16 1024 2048 4096 8192
8708 Qwen3-VL-2B-Instruct-UD-IQ1_S.gguf ok ok ok ok
Qwen3-VL-4B-Instruct-UD-IQ1_S.gguf ok ok ok ok
Qwen3-VL-8B-Instruct-UD-IQ1_S.gguf ok fail
Qwen3-VL-30B-A3B-Instruct-UD-IQ1_S.gguf ok fail
Qwen3-VL-32B-Instruct-UD-IQ1_S.gguf ok fail
Qwen3.5-0.8B-UD-IQ2_XXS.gguf ok ok ok ok
Qwen3.5-2B-UD-IQ2_XXS.gguf ok ok ok ok
Qwen3.5-4B-UD-IQ2_XXS.gguf ok ok ok ok
Qwen3.5-9B-UD-IQ2_XXS.gguf ok fail
Qwen3.5-27B-UD-IQ2_XXS.gguf ok fail
Qwen3.5-35B-A3B-UD-IQ2_XXS.gguf ok fail
bartowski, mmproj-F16
Qwen_Qwen3.5-9B-IQ2_S.gguf ok fail
lmstudio, mmproj-BF16
Qwen3.5-9B-Q4_K_M.gguf ok fail

First Bad Commit

did some manual bisect of prebuilds, idk if that helps
6915 and 6924 give this error when crash:

Logs
srv  params_from_: Chat format: Hermes 2 Pro
slot get_availabl: id  0 | task -1 | selected slot by LRU, t_last = -1
slot launch_slot_: id  0 | task 1 | processing task
slot update_slots: id  0 | task 1 | new prompt, n_ctx_slot = 16384, n_keep = 0, task.n_tokens = 2035
slot update_slots: id  0 | task 1 | n_tokens = 0, memory_seq_rm [0, end)
slot update_slots: id  0 | task 1 | prompt processing progress, n_tokens = 4, batch.n_tokens = 4, progress = 0.001966
slot update_slots: id  0 | task 1 | n_tokens = 4, memory_seq_rm [4, end)
srv  process_chun: processing image...
encoding image slice...
ggml_vulkan: Device memory allocation of size 4199040000 failed.
ggml_vulkan: Requested buffer size exceeds device buffer size limit: ErrorOutOfDeviceMemory
ggml_gallocr_reserve_n: failed to allocate Vulkan0 buffer of size 8655336000
D:/a/llama.cpp/llama.cpp/ggml/src/ggml-backend.cpp:1851: GGML_ASSERT((char *)addr + ggml_backend_buffer_get_alloc_size(buffer, tensor) <= (char *)ggml_backend_buffer_get_base(buffer) + ggml_backend_buffer_get_size(buffer)) failed

in 6927 gpu freeze appears

build ver unsloth, mmproj-F16 1024 2048 4096 8192
6887 (d261223) Qwen3-VL-2B-Instruct-UD-IQ1_S.gguf ok ok ok ok
Qwen3-VL-8B-Instruct-UD-IQ1_S.gguf ok ok ok ok
6912 (961660b) Qwen3-VL-2B-Instruct-UD-IQ1_S.gguf ok ok ok ok
Qwen3-VL-8B-Instruct-UD-IQ1_S.gguf ok ok
no builds between
6915 (cf659bb) Qwen3-VL-2B-Instruct-UD-IQ1_S.gguf ok fail
Qwen3-VL-8B-Instruct-UD-IQ1_S.gguf ok fail
6924 (87c9efc) Qwen3-VL-2B-Instruct-UD-IQ1_S.gguf ok fail fail
Qwen3-VL-8B-Instruct-UD-IQ1_S.gguf ok fail fail
no builds between
6927 (6b9a524) Qwen3-VL-2B-Instruct-UD-IQ1_S.gguf ok ok
Qwen3-VL-8B-Instruct-UD-IQ1_S.gguf ok ok
Qwen3-VL-32B-Instruct-UD-IQ1_S.gguf ok ok
6958 (13b339b) Qwen3-VL-2B-Instruct-UD-IQ1_S.gguf ok ok ok ok
Qwen3-VL-8B-Instruct-UD-IQ1_S.gguf ok ok ok ok
Qwen3-VL-32B-Instruct-UD-IQ1_S.gguf ok ok
6959 (92bb84f) Qwen3-VL-2B-Instruct-UD-IQ1_S.gguf ok ok fail
Qwen3-VL-4B-Instruct-UD-IQ1_S.gguf ok ok fail
Qwen3-VL-8B-Instruct-UD-IQ1_S.gguf ok fail

Relevant log output

Logs
srv  params_from_: Chat format: peg-native
slot get_availabl: id  3 | task -1 | selected slot by LRU, t_last = -1
srv  get_availabl: updating prompt cache
[0msrv          load:  - looking for better prompt, base f_keep = -1.000, sim = 0.000
[0msrv        update:  - cache state: 0 prompts, 0.000 MiB (limits: 8192.000 MiB, 16384 tokens, 8589934592 est)
[0msrv  get_availabl: prompt cache update took 0.02 ms
[0mslot launch_slot_: id  3 | task -1 | sampler chain: logits -> ?penalties -> ?dry -> ?top-n-sigma -> top-k -> ?typical -> top-p -> min-p -> ?xtc -> temp-ext -> dist
slot launch_slot_: id  3 | task 0 | processing task, is_child = 0
slot update_slots: id  3 | task 0 | new prompt, n_ctx_slot = 16384, n_keep = 0, task.n_tokens = 4108
slot update_slots: id  3 | task 0 | n_tokens = 0, memory_seq_rm [0, end)
slot update_slots: id  3 | task 0 | prompt processing progress, n_tokens = 4, batch.n_tokens = 4, progress = 0.000974
srv  log_server_r: done request: POST /v1/chat/completions 127.0.0.1 200
slot update_slots: id  3 | task 0 | n_tokens = 4, memory_seq_rm [4, end)
srv  process_chun: processing image...
encoding image slice...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions