From bfc38f5436070ba5786ecb446daf50e5958903d6 Mon Sep 17 00:00:00 2001 From: Abiba Date: Tue, 19 May 2026 17:38:21 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20routing=20priority=20=E2=80=94=20MoE=20f?= =?UTF-8?q?irst,=20VLM=20second,=20Dense=20last=20(slow)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All tiers now follow MoE → VLM → Dense priority order since Dense (RTX 3090) can be slow. VLM acts as overflow absorber. --- router/router.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/router/router.py b/router/router.py index e7f9aa7..f82d968 100644 --- a/router/router.py +++ b/router/router.py @@ -168,7 +168,7 @@ def route(rd, tier): if not is_gpu_busy("qwen3.5-9b-vlm"): return {"model":"qwen3.5-9b-vlm","reason":"lightweight"} # VLM busy — fall back to Dense, then MoE - fallback = [m for m in ["qwen3.6-27B-code","qwen3.6-35B-A3B"] if m in avail] + fallback = [m for m in ["qwen3.6-35B-A3B","qwen3.6-27B-code"] if m in avail] result = select_best_gpu(fallback, "lightweight_fallback") if result: return result @@ -182,15 +182,14 @@ def route(rd, tier): # TIER 3: Heavy reasoning — large context or very long conversations if t > 4000 or turns > 8: - 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-35B-A3B","qwen3.5-9b-vlm","qwen3.6-27B-code"] if m in avail] result = select_best_gpu(candidates, "heavy_reasoning") if result: return result - # TIER 4: Default — Dense preferred for medium tasks, MoE as workhorse, VLM as overflow - if turns <= 6 and t <= 4000: - # Medium complexity — try Dense first, then MoE, then VLM - candidates = [m for m in ["qwen3.6-27B-code","qwen3.6-35B-A3B","qwen3.5-9b-vlm"] if m in avail] - result = select_best_gpu(candidates, "medium_task") + # TIER 4: Default — MoE first, VLM helps, Dense last (slow) + if t <= 4000: + candidates = [m for m in ["qwen3.6-35B-A3B","qwen3.5-9b-vlm","qwen3.6-27B-code"] if m in avail] + result = select_best_gpu(candidates, "default") if result: return result # Fallback — best available