From ebe8f9ced431e0b149816a5fcb2e341f4645ab26 Mon Sep 17 00:00:00 2001 From: Abiba Date: Tue, 26 May 2026 23:47:08 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20reduce=20MoE=20concurrency=202=E2=86=921?= =?UTF-8?q?=20to=20prevent=20thermal=20timeout=20(94=C2=B0C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Strix Halo running qwen3.6-35B-A3B was hitting 94°C with 2 concurrent slots, causing 300s request timeouts. Mumuni + Koby accumulated 15 timeouts in the last hour. Reduced to 1 slot for thermal headroom. Medium and Default tiers already route VLM before MoE as fallback, minimizing overflow traffic to the hot GPU. --- router/router.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/router/router.py b/router/router.py index 55db6fe..3a02642 100644 --- a/router/router.py +++ b/router/router.py @@ -19,7 +19,7 @@ GPU_URLS = { } # Max concurrent requests per GPU (based on llama.cpp --parallel) GPU_MAX_CONCURRENT = { - "qwen3.6-35B-A3B": 2, # 2 slots + "qwen3.6-35B-A3B": 1, # 1 slot (thermal management: 94C at 2 concurrent) "qwen3.6-27B-code": 1, # 1 slot (24GB VRAM saturated at 256K ctx) "qwen3.5-9b-vlm": 2, # 2 slots (12GB VRAM, 4GB headroom) } @@ -229,7 +229,7 @@ def route(rd, tier): # TIER 3: Medium complexity — Dense primary (speed), MoE fallback if t <= 25000 and turns <= 15: - candidates = [m for m in ["qwen3.6-27B-code","qwen3.6-35B-A3B","qwen3.5-9b-vlm"] if m in avail] + candidates = [m for m in ["qwen3.6-27B-code","qwen3.5-9b-vlm","qwen3.6-35B-A3B"] if m in avail] result = select_best_gpu(candidates, "medium") if result: return result @@ -240,7 +240,7 @@ def route(rd, tier): if result: return result # TIER 5: Default — balanced distribution: Dense first (speed), MoE second (capacity) - candidates = [m for m in ["qwen3.6-27B-code","qwen3.6-35B-A3B","qwen3.5-9b-vlm"] if m in avail] + candidates = [m for m in ["qwen3.6-27B-code","qwen3.5-9b-vlm","qwen3.6-35B-A3B"] if m in avail] result = select_best_gpu(candidates, "default") if result: return result return {"model":avail[0],"reason":"last_resort"}