From 36e51e15a2b0d0a88c2c91bbadbcc05c018b4697 Mon Sep 17 00:00:00 2001 From: robin-selder Date: Sat, 11 Jul 2026 23:22:12 -0600 Subject: [PATCH] server: allow parallel requests for qwen35 / qwen35moe The llama.cpp crash under parallel load on this hybrid architecture (ggml-org/llama.cpp#20222, "Chunk not found") that motivated blocking qwen35/qwen35moe here was fixed upstream in llama.cpp PR #20232 (merged 2026-03-08). Ollama vendored llama.cpp b9888, which already includes the fix, so this restriction is now stale. Validated empirically on real hardware (RTX 3060, CUDA v13 backend) across three context sizes (98K/64K/72K) with repeated concurrent requests and slot reuse: correct, distinct outputs per slot, no crashes. Also soak-tested in a real production deployment at OLLAMA_NUM_PARALLEL=3. --- server/sched.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/sched.go b/server/sched.go index fcc3a61df..c12e8c0fb 100644 --- a/server/sched.go +++ b/server/sched.go @@ -510,7 +510,7 @@ func (s *Scheduler) load(req *LlmRequest, systemInfo ml.SystemInfo, gpus []ml.De // Some architectures are not safe with num_parallel > 1. // ref: https://github.com/ollama/ollama/issues/4165 - if slices.Contains([]string{"mllama", "qwen3vl", "qwen3vlmoe", "qwen35", "qwen35moe", "qwen3next", "lfm2", "lfm2moe", "nemotron_h", "nemotron_h_moe", "nemotron_h_omni"}, req.model.Config.ModelFamily) && numParallel != 1 { + if slices.Contains([]string{"mllama", "qwen3vl", "qwen3vlmoe", "qwen3next", "lfm2", "lfm2moe", "nemotron_h", "nemotron_h_moe", "nemotron_h_omni"}, req.model.Config.ModelFamily) && numParallel != 1 { numParallel = 1 slog.Warn("model architecture does not currently support parallel requests", "architecture", req.model.Config.ModelFamily) }