Qwen3.6-35B-A3B vs Ornith-1.5-35B-A3B on a 16GB RTX 5060 Ti
The model I benchmarked in the most detail on this card, months ago, was Qwen3.6-35B-A3B: I took it apart in an engineering teardown on the RTX 5060 Ti, down to the VRAM at the megabyte and the roofline of its decoding. Since then, the model I actually serve every day in that slot is Ornith-1.5-35B-A3B, a mixture of experts of the same shape. This is the story of that switch, told with the measurements that would have justified it, and of what I found when I put the two side by side under identical conditions. Both run at the same 3-bit quantization, IQ3_XXS, both fit the card along with a long context, both decode at over a hundred tokens per second. The measurements are from late September, when my servers ran with reasoning off by default: a deterministic bank of 134 items, the engine benchmark, and a set of mirrored Italian and English questions. The outcome is a split decision that a single score would have flattened, and a reminder that two models of the same size and shape can have quite different habits.
Note
The bench: RTX 5060 Ti 16GB (Blackwell, 180 W limit) on PCIe Gen3 x8, Ryzen 5 4500 with 6 cores, 32GB of DDR4 at 2,133 MT/s, Debian 13, NVIDIA driver 615.71.09 with CUDA 13.4, llama.cpp at commit 391fac1 with --fit off, a q4_0 KV cache, flash attention and one slot. The deterministic bank ran at an 8,192-token context, temperature zero, reasoning off. All the numbers you see here come from the benchmark procedure described in detail in how my harness measures local models.
Why the 35B-A3B shape fits a 16GB card
A mixture of experts stores many specialised sub-networks and activates a few of them per token. A 35B-A3B model holds 35 billion parameters in memory and computes with about three billion for each token. On a 16GB card this shape fits well: at a 3-bit quantization the weights leave space for a KV cache, and decoding costs about as much as a 3B dense model, so it's fast. At IQ3_XXS the Ornith model occupies 15,246 MiB with a 131,072-token context; the Qwen3.6 build I measured at a slightly larger IQ3_S occupied 14,390 MiB at a 32,768-token context and loaded cold in 17 seconds.
That is why two different families converged on the same shape, and why choosing between them is a real decision for anyone with this card.
The setup of the comparison
Both models ran from the same engine build with the same flags: every parameter pinned, the automatic fit disabled, a 4-bit KV cache, flash attention, one slot, temperature zero. The deterministic bank has 134 items in seven categories: extracting fields from text, following precise output instructions, producing structured output against a schema, arithmetic, reasoning traps, refusing unsafe requests, and Italian items that mirror English ones. Each item is checked automatically and has one right answer. Comparisons are paired: for every item both models saw, I note which got it right, and only disagreements count.
If you're choosing between two models of the same size for a team and want the comparison designed around your own prompts, my hub on AI infrastructure for companies explains how I approach it.
Overall: a tie
Qwen3.6-35B-A3B passed 108 items, Ornith-1.5-35B-A3B 102. Qwen alone solved 18, Ornith alone 12, and the paired test gives p = 0.36. No difference that this bank can confirm. The slightly larger IQ3_S build of Qwen3.6 passed 111, against the same 102 for Ornith, with p = 0.14: still no confirmed difference.
A word on the bank itself, because it frames everything. In a later audit I found that this bank is close to saturated for capable models: 45% of its items are passed by every capable model I tested. Those items cannot separate anyone, so the effective number of informative items is far smaller than 134. A tie on this bank says the two models aren't wildly different on short deterministic tasks, and that's all it says. It doesn't make them equivalent.
By category: the tie splits into two specialties
| Category | Qwen3.6-35B-A3B (items) | Ornith-1.5-35B-A3B (items) |
|---|---|---|
| Instruction following, 24 | 20 | 12 |
| Italian, 30 | 23 | 21 |
| Reasoning, 16 | 14 | 12 |
| Math, 12 | 6 | 11 |
| Structured output, 16 | 15 | 15 |
| Extraction, 12 | 10 | 8 |
| Refusal, 24 | 20 | 23 |
On instruction following, Qwen solved 8 items that Ornith failed, and Ornith none that Qwen failed (p = 0.008). Of all the differences between the two models, this is the one the data support best, an exploratory result from one category out of seven that still holds after correcting for having looked at all seven. The instruction-following items are small, concrete constraints: a fixed number of bullet points, a word limit, an exact format, a forbidden word. Ornith tends to answer the question and drift from the constraint.
On arithmetic the direction reverses: Ornith solved 6 items Qwen missed, Qwen 1 that Ornith missed (p = 0.13). Not confirmed with twelve items, but consistent with what I see elsewhere: the Ornith 35B gets multi-step calculations right more often.
The other categories are close. Qwen is slightly ahead on extraction and reasoning traps, Ornith on refusals of unsafe requests, where it refused three items Qwen answered. Structured output is identical.
Two models of the same size and shape, a tie on the total, and two opposite specialties underneath: one follows instructions, the other does arithmetic. Pick the one whose typical mistake costs you less.
Speed: the Ornith model is faster at every depth
On the engine benchmark, at the same IQ3_XXS quantization and on an idle card, Ornith decoded and read prompts faster than Qwen at every context depth I tested.
- Hardware
- RTX 5060 Ti 16GB, 180 W, PCIe Gen3 x8; Ryzen 5 4500; 32GB DDR4-2133
- OS
- Debian 13, NVIDIA driver 615.71.09, CUDA 13.4
- Software
- llama.cpp 391fac1, llama-bench through the harness, IQ3_XXS for both models, all layers on the GPU, flash attention on, q4_0 KV cache, prefill and decode at KV depth 0, 8K and 32K
Method: Prompt processing and generation measured at empty context and at 8K and 32K tokens of context depth, one model at a time.
Results (tokens/s, higher is better)
Ornith decodes 14% to 19% faster and reads prompts 7% to 14% faster. Both lose speed as the context fills, as every model does: at 32K tokens of depth, decoding drops by about a quarter for both. The larger IQ3_S build of Qwen3.6 decodes at 117.7 tokens per second at empty context, closing most of the gap at the cost of a slightly bigger file.
Waiting time without reasoning
The latency probes of that period, with reasoning off, measured the Qwen3.6 build at IQ3_S, not the IQ3_XXS used for the deterministic bank, so these numbers describe the model family and not the exact file:
| Probe, reasoning off | Qwen3.6-35B-A3B IQ3_S |
|---|---|
| Chat question | 0.92 s, 88.5 tokens |
| One shell command | 1.31 s, 133 tokens |
| Long prompt, first repetition | 4.6 s, 142 tokens, 3.2 s to first token |
Ornith-1.5-35B-A3B was not part of that latency run. Its later measurements, with the prompt cache disabled, gave 1.2 seconds on chat questions and 1.7 seconds on shell commands without reasoning; those come from a different session with different conditions, so I show them for orientation and not as a paired comparison. Both models answer short questions in about a second without reasoning, which is the main reason the 35B-A3B shape is pleasant to use on this card.
The arithmetic items, in detail
Six of the seven math items where the two models disagreed went to Ornith. Two were chained calculations, where operations must be carried out in order and one slip at the start ruins the end, and four were modular arithmetic items, where the last step, taking a remainder correctly, is where models typically fail. Qwen won one chained calculation that Ornith missed. With twelve math items in total the difference is not confirmed, but every one of Ornith's six wins is in a category where the content of the answer, not its format, decides.
Italian: both lose ground, Qwen more
On mirrored items, where each Italian question has an English twin, both models answered more English items correctly than Italian ones. Measured in two conditions, Qwen3.6 lost 21 and 29 points in Italian (57% against 79%, then 50% against 79%), Ornith lost 14 and 7 points (36% against 50%, then 50% against 57%). The samples are small, fourteen pairs per condition, and the conditions differ in context size and bank version, so I don't pool them. The direction is the same in both: Qwen3.6 loses more points going from English to Italian.
For an Italian audience this weighs more than the category results above. If an assistant is clearly weaker in the language its users speak, its English score won't save it.
| Mirrored items, Italian against English | Qwen3.6-35B-A3B | Ornith-1.5-35B-A3B |
|---|---|---|
| Condition 1 | 57% against 79% | 36% against 50% |
| Condition 2 | 50% against 79% | 50% against 57% |
| Points lost in Italian | 21 and 29 | 14 and 7 |
What 134 items can and cannot show
How fine a difference could this bank see at all? Of the 134 items, the two models disagreed on 30: Qwen right and Ornith wrong on 18, the reverse on 12. If Qwen were better with that same 60-to-40 split on disagreements, a paired test would need on the order of 190 discordant items to detect it with the usual power and significance thresholds; at the observed rate of about one disagreement every four or five items, that is a bank of roughly 900 items. My bank is a seventh of that size, and a seventh of it is informative. Keep that scale in mind when reading "no confirmed difference" here.
The instruction-following result escapes this limit only because it is so lopsided: eight disagreements, all in the same direction. A split that clean has a probability of about one in a hundred and twenty-eight under the hypothesis of no difference, and that is why it survives even after correcting for looking at seven categories.
| Statistic | Value |
|---|---|
| Items both models answered | 134 |
| Items where they disagreed | 30 |
| Qwen right, Ornith wrong | 18 |
| Ornith right, Qwen wrong | 12 |
| Exact paired p-value, overall | 0.36 |
| Instruction following, 8 to 0 | p = 0.008 |
| Arithmetic, 6 to 1 | p = 0.13 |
The refusal category
On 24 items that ask for something a model should decline, Ornith refused correctly 23 times and Qwen 20; on the three items where they differed, Ornith refused and Qwen complied. With 24 items this is not confirmed, but it's consistent across conditions, and any assistant exposed to users you don't control needs it.
What happened after the switch
My production slot went from Qwen3.6 to Ornith-1.5-35B-A3B shortly after these measurements, and speed and Italian are the two reasons this comparison supports. The later campaign of this series, with reasoning on and much harder tasks, measured only Ornith, and it showed both its strengths and its limits: on fifty Python problems with reasoning on it solved 26 within five minutes, the best of five models in that mode, and in an agent loop on five real projects it delivered 10 correct fixes and 3 illusory ones out of 15 runs. Those numbers are in the comparison between the Ornith 35B and the dense Qwen3.8-27B.
What this comparison adds is a warning I took seriously afterwards: on precise formatting constraints the Ornith model is weaker than its Qwen sibling, and nothing in a throughput chart would have told me. I compensate by validating structured outputs against a schema instead of trusting the model to respect a format, which is good practice anyway.
Tip
If you choose the faster model for a pipeline that depends on exact output formats, validate the format in code. A schema check costs microseconds; a silently wrong format costs a broken downstream step.
The decision in yes-or-no form
| Check | Qwen3.6-35B-A3B | Ornith-1.5-35B-A3B |
|---|---|---|
| Overall better on 134 deterministic items | N/A | N/A |
| Follows precise output instructions | Yes, 20 of 24 | No, 12 of 24 |
| Better at arithmetic | No, 6 of 12 | Partial, 11 of 12, not confirmed |
| Decodes faster at the same quantization | No | Yes, up to 19% |
| Smaller gap between Italian and English | No | Yes |
| Refuses unsafe requests more consistently | Partial, 20 of 24 | Yes, 23 of 24 |
Note
These measurements were taken with reasoning off and system RAM at 2133 MT/s. They compare the two models under identical conditions; the numbers measured later in this series with reasoning on belong to a different experiment.
Which one should you run?
For an Italian-speaking audience and interactive speed, Ornith-1.5-35B-A3B. It decodes faster at every depth and loses less in Italian, and in the later campaign it solved the most coding problems of any model I tested on this card with reasoning on and a five-minute limit.
For pipelines built on precise output constraints, Qwen3.6-35B-A3B, or Ornith with format validation in code. Qwen's advantage on instruction following is the one difference in this comparison that the data confirms.
The comparison also says something about what "same size" means. Two 35B-A3B models at the same quantization occupy the same memory and cost the same to run, and they still differ in speed by almost a fifth and in habits by more than any total score suggests. The earlier teardown of Qwen3.6-35B-A3B covers its memory and throughput in depth, the configuration behind both models is in the recommended strategies for 16GB cards, and Qwen3.6 itself is documented in its official repository.
A closer look at the instruction-following failures
The eight items Ornith failed and Qwen passed are worth reading, because they predict where you'll see the difference in daily use. One asked for six lines about HTTP status codes sorted alphabetically by their full text. One asked for exactly two paragraphs about ZFS scrubbing without ever using the word "data". One asked for a changelog entry containing a placeholder exactly three times. One asked for four sentences that each start with a different letter. One asked for an uppercase answer under forty words. One asked for five lines that all match the regular expression ^# . One asked for the whole answer wrapped in triple asterisks. One asked for a single paragraph of at least eighty words about cron syntax that never uses "time" or "schedule". In each case the topic is easy; what fails is keeping the constraint until the end of the answer. These are exactly the constraints that structured prompts, templated outputs and tool integrations rely on.
The reverse items, where Ornith was right and Qwen wrong, were all arithmetic: chained operations where an early slip propagates to the end, and modular arithmetic, where the last step is easy to get wrong. Here the content itself was wrong, which is a worse failure for a human reader and an easier one to catch with a test.
Between two models of the same shape, the one to prefer is the one whose mistakes your system is better at catching. Format errors are cheap to detect in code; arithmetic errors are cheap to detect with tests; errors in Italian are expensive to detect at all unless your reviewers read every answer. If you're weighing two models like these for a team and want the comparison run on your own prompts, you can describe the case in the free quote form: two minutes, and I tell you upfront whether it's something I can help with.