Accueil / Articles / Ornith-1.0-35B: MoE Quality of a Dense 27B on a MacBook

Cet article est publié en anglais.

Ornith-1.0-35B: MoE Quality of a Dense 27B on a MacBook

How a 35B mixture-of-experts model with 3B active parameters compares with Qwen3.6, what it needs to run under llama.cpp, and where it shines or lags.

956 mots

A dense 27B model is a heavy thing to keep running every day, even a good one like Qwen3.6-27B. Ornith-1.0-35B takes another route. It has 35 billion parameters in total but wakes only about 3 billion of them for each token, it fits on consumer hardware, and on coding and tool use it lands close to dense 27B models. It also ships as a GGUF, so there's no upgrade of llama.cpp and no special serving stack in the way. Download, load, go. And it's quick.

What Ornith-1.0-35B is

Ornith-1.0 is a model family from DeepReinforce. It starts from Qwen 3.5 pretrained weights and is fine-tuned using the lab's self-scaffolding reinforcement learning method. The 35B member is a Mixture-of-Experts (MoE) design: 35B parameters exist, yet only roughly 3B take part in processing any single token.

Picture a large brain where only the relevant region lights up for each thought, while the remainder rests and saves compute. The outcome is close to dense-27B quality at about 3B of active compute. For local AI, that's an attractive balance.

The numbers

A mixed-capability benchmark called spark-bench, published at github.com/Weschera/spark-bench, runs 57 scenarios across 10 domains. Here's how Ornith stacked up against the Qwen3.6 family:

Model                     Overall   Coding   Math   Tool Use   Reasoning
Ornith-1.0-35B            41.07     62.26    47.29  58.14      38.92
Qwen3.6-27B (dense)       43.12     64.18    49.87  56.32      41.05
Qwen3.6-35B-A3B (MoE)     39.84     59.47    44.12  52.88      37.21

A few points stand out.

Ornith beats Qwen3.6-35B-A3B everywhere. That's its closest relative, since both are 35B MoE models with about 3B active. Self-scaffolding RL gives Ornith a clear lead in coding (+2.8 points), tool use (+5.3) and reasoning (+1.7).

Ornith also sits near Qwen3.6-27B. The dense model still leads overall by 2.05 points, but the gap in coding shrinks to 1.92, and tool use goes the other way, with Ornith ahead by 1.82. Dense still wins on math and pure reasoning. For agentic coding work, though, Ornith competes well.

Testing on a MacBook

With the model wired into an agent on a MacBook, a full working loop covered searching the web, writing code and editing files. Day-to-day, it felt like Qwen3.6-27B with more speed.

The reason is architectural. With only about 3B parameters active per token, a Q4_K_M quantization on llama.cpp demands much less compute per token than a dense 27B, even though the total parameter count is larger.

Model                     Q4_K_M Size   Active Params   Est. tok/s (M4 Max 64GB)
Ornith-1.0-35B (MoE)      21.2 GB       ~3B             ~75-85 tok/s
Qwen3.6-27B (dense)       16.5 GB       27B             ~15-18 tok/s
Qwen3.6-35B-A3B (MoE)     20.5 GB       ~3B             ~65-75 tok/s

The Ornith GGUF takes 21.2 GB at Q4_K_M, a bit more than the 16.5 GB of Qwen3.6-27B, but active compute per token is about nine times lower. That's the MoE trade: pay for memory once to load all the experts, then pay for only 3B of compute per token.

On an M4 Max with 64 GB, the Q4_K_M build sits at about 25 GB of total memory in use, counting weights, KV cache and runtime, which leaves plenty of room for context and other applications.

No llama.cpp upgrade needed

Ornith-1.0-35B runs out of the box on current llama.cpp. It uses the same <think> and </think> tags as Qwen models, and llama.cpp routes the experts natively. There are no patches, forked builds or waiting for upstream support.

After pointing the agent at the downloaded GGUF, the thinking tags parsed correctly, tool calls worked, and multi-turn agent loops ran without trouble.

Strengths and limits

Coding and tool use are home turf. The self-scaffolding RL training targeted agentic coding workflows specifically, and in testing the model wrote clean code, handled edits across several files and chose its tools (web search, shell commands) sensibly.

Reasoning is solid, though a notch below Qwen3.6-27B. For pure math or intricate logic, the dense model keeps an edge. For the reasoning that matters in programming, such as debugging, architectural choices and code review, Ornith is more than capable.

Long context is supported beyond 200K tokens. It hasn't been pushed to the extreme, but at 32K to 64K it deals with big codebases and multi-document RAG without complaint.

It isn't a substitute for Qwen3.6-27B when you need maximum reasoning depth or math. If your main workload is coding, tool use and agent loops, you get about 90% of the quality for a fraction of the compute.

Bottom line

Ornith-1.0-35B is the sort of model that makes the parameter-count race look less important: 35B in total, 3B active per token, near-27B dense quality for coding and tool use, consumer hardware, no special serving. On a MacBook, that's the sweet spot.

Running Qwen3.6-35B-A3B? Switch to Ornith. Using Qwen3.6-27B and wanting faster inference without giving up much quality? Try it. The GGUF is on Hugging Face, the llama.cpp support is smooth, and the results hold up.

Local open-source AI keeps improving, and seeing a MoE model get better this way suggests plenty of headroom is left. The next milestone to watch is Qwen3.7-27B.