u/Holiday_Purpose_3166

Hi folks,

Enjoy an optimised Qwen3.6 35B-A3B and Qwen3.6 27B for coding and general purpose - it's able to solve puzzles correctly more often too.

The initial intent was to optimise the 35B-A3B reasoning traces since it's the most efficient on my 5090 setup as I can perform parallel jobs with llama.cpp on my prod.

Love 27B consistency, but the prefill churn on long horizon work is painful.

Tweaked the GBNF and tested a basic prompt to my custom Rust/Next.js bench to see improvements, and I have to say 35B-A3B had the nicest uplift:

I tested a simply "Hi" prompt, a puzzle, and my custom bench Rust/Next.js (60 task-suite)

Ironically I used the "Hi" prompt since community rightfully complained about the reasoning drag on simple things with the 35B-A3B

Tested Specs
- RTX 5090
- Fedora 43
- llama.cpp mainline April 24th
- Qwen3.6-35B-A3B-APEX-I-Balanced.gguf (-c 216k)
- Qwen3.6-27B-Uncensored-HauhauCS-Aggressive-Q6_K_P.gguf (-c 114k)
- kv f16
- -b & -ub 256
- qwen's sampling for reasoning+coding

Model Test Without grammar With grammar Improvement
Qwen3.6 27B Hi tokens 248 42 83.1% less, 5.90x fewer
Qwen3.6 27B Puzzle tokens 40,101 7,376 81.6% less, 5.44x fewer
Qwen3.6 27B Puzzle time 13m36s 2m27s 82.0% faster, 5.55x speedup
Qwen3.6 27B Bench score 4620 4620 same score
Qwen3.6 27B Bench time 29m54s 22m20s 25.3% faster, 1.34x speedup
Qwen3.6 27B Bench throughput 1067 t/s 1193 t/s +11.8%, +126 t/s
Qwen3.6 35B-A3B Hi tokens 200 12 94.0% less, 16.67x fewer
Qwen3.6 35B-A3B Puzzle tokens 30,096 2,592 91.4% less, 11.61x fewer
Qwen3.6 35B-A3B Puzzle time 2m32s 12s 92.1% faster, 12.67x speedup
Qwen3.6 35B-A3B Bench score 4620 4740 +2.6%, +120 score
Qwen3.6 35B-A3B Bench time 33m52s 11m04s 67.3% faster, 3.06x speedup
Qwen3.6 35B-A3B Bench throughput 1844 t/s 2195 t/s +19.0%, +351 t/s

Total Score + Finish Time are the keys for the chart - accuracy per memory is personal reference

Qwen3.6 35B-A3B moves from X6 -> X1 as chart leader with massive time reduction and score bump.

Qwen3.6 27B moved from X4 -> X3 due to better finishing time - score maintains.

Total throughput recorded throughout benchmark

Qwen3.6 35B-A3B APEX I-Balanced: 1844 -> 2195 t/s

Qwen3.6 27B Uncensored HauHauCS Aggressive Q6_K_P: 1067 -> 1193 t/s

The Rust/Next.js bench is script-injected sequentially with OpenCode and it's performed on a prod repo for financial applications, so it's not publicly shared.

Puzzle Prompt

It's worth nothing, 35B-A3B struggled immensely with this puzzle. It would occasionally loop towards the end of CoT or get incorrect answers. Since it took me 12s vs +2m, it was easy to retry and get correct answers.

You are given a constrained planning problem. Think carefully, verify each condition, and do not skip impossibility checks.
Problem:
A courier starts at point S and must visit exactly once each of the locations A, B, C, D, and E, then end at T.
Travel times (in minutes) are symmetric:
S-A 4, S-B 6, S-C 8, S-D 7, S-E 9
A-B 5, A-C 7, A-D 3, A-E 8
B-C 4, B-D 6, B-E 5
C-D 5, C-E 3
D-E 6
A-T 8, B-T 6, C-T 5, D-T 7, E-T 4
Constraints:
1. C cannot be visited before B.
2. D must be visited immediately after A.
3. E cannot be the last location before T.
4. Total travel time must be less than 28 minutes.
5. Exactly one of these must be true:
   - B is visited second
   - C is visited fourth
6. If A is visited first, then B must be visited third.
7. The route must include at least one step whose travel time is exactly 3 minutes.
Task:
Determine whether a valid route exists.
- If it exists, provide one valid route and its total time.
- If it does not exist, prove why no valid route can satisfy all constraints.
- Show your reasoning clearly and check every constraint explicitly.
- Do not guess. If multiple routes seem possible, test them against all rules before concluding.
Output format:
1. Conclusion: VALID ROUTE EXISTS / NO VALID ROUTE EXISTS
2. Route: ...
3. Total time: ...
4. Constraint check: ...
5. Brief proof: ...

The answer should be NO VALID ROUTE EXISTS. The models churn through this one.

GBNF Grammar

root ::= think out
think ::= "<think>\n" "Q=" q "\n" "M=" m "\n" "K=" toks "\n" "R=" toks "\n" "V=" v "\n" "</think>\n\n"
q ::= "solve" | "prove" | "route" | "debug" | "patch" | "code" | "calc" | "compare" | "explain"
m ::= "case" | "enum" | "check" | "derive" | "edit" | "test" | "trace" | "rank"
v ::= "ok" | "fail" | "done" | "blocked" | "candidate" | "verify"
toks ::= tok | tok "," tok | tok "," tok "," tok | tok "," tok "," tok "," tok | tok "," tok "," tok "," tok "," tok
tok ::= [A-Za-z][A-Za-z0-9_.!<>=/-]{0,18}
out ::= [\x09\x0A\x0D\x20-\x7E]+

I've only noticed some thinking tags outside CoT on Open WebUI.

Outside of that, it works on Hermes, llama.cpp's WebUI and OpenCode without issue.

Since I did not have more time to use on my prod - past sleep time - I hope this gives some boost on your setup.

reddit.com
u/Holiday_Purpose_3166 — 26 days ago