Qwythos-9B: a 9B that checks its own work
Our biggest open-weights release yet — a full-parameter reasoning model distilled from Claude Mythos 5, with a 1M-token context, native tool use, and a +34-point MMLU jump over its base. Here's what's in it, the honest benchmark table, and how to run it.
We just shipped Qwythos-9B-Claude-Mythos-5-1M — our biggest open-weights model to date, and the new flagship over on Hugging Face. It's a full-parameter reasoning model built on a deeply uncensored Qwen3.5-9B base, post-trained on north of 500 million tokens of Claude Mythos and Claude Fable traces, with the chain-of-thought generated in-house by our
rethinktool.The short version: it reasons before it answers, ships with a 1-million-token context window out of the box, calls tools natively, and — the part I'm proudest of — checks its own specifics with those tools instead of guessing. Apache-2.0. Weights and GGUF builds are up now.
What's in it
rethink, our in-house CoT tool, so the model learns to walk hypothesis → verification → conclusion before it commits to an answer.A million tokens, by default
Qwythos ships with YaRN rope-scaling already wired into
config.json— factor 4.0 over the native 262,144-token architecture, for a full 1,048,576-token window with no flag to flip and no separate tokenizer:This is Qwen's own official 1M recipe. What it unlocks in practice: whole-codebase reasoning without RAG chunking, long agentic trajectories with verbose tool output, and multi-document research that fits a dozen papers plus your draft in a single prompt.
One practical note: the hybrid Gated-DeltaNet stack keeps memory growth sub-quadratic below ~256k tokens, so a single H100/H200 comfortably handles 256k–512k; the full 1M wants tensor-parallel or aggressive KV-cache offload. YaRN trades a little short-context fidelity for the range — if you never go past the native 262k and want maximum sharpness, there's a
config.json.pre_yarnbackup to restore.It uses tools — and corrects itself
Function calling works out of the box per Qwen3.5's spec. Pass
tools=[...]to the chat template and the model emits valid<tool_call>blocks with the required parameters honored — no wrapper, no tool-specific fine-tune.We ran a 7-prompt harness mixing capability demos with deliberately hard, closed-book facts where sampling-from-memory usually fails. Seven of seven succeeded. A few I think matter:
-m 13100across multiple sources.That last example is the whole thesis. A 9B that knows when to look something up beats a much bigger model that confidently invents it. Full transcripts — every reasoning step, every tool call, every result — are in
evals/tool_test_outputs.md.The numbers (the honest table)
Same harness (
lm-evaluation-harness), same sampling, same prompts, against the base:The MMLU +34.3 is the headline — 0.575 mean across all 57 subjects, peaking around 0.78 on government/politics, 0.77 on college biology, 0.74 on conceptual physics. gsm8k-strict is up 30 points.
Not everything went up: gpqa-diamond slipped five points and arc-challenge was roughly flat. We publish the full table anyway, because hiding a regression is how you lose people's trust. Absolute MMLU for any 9B is sensitive to harness and few-shot count; what matters in this comparison is that both models were measured under identical settings.
Uncensored, on purpose
Qwythos inherits a deeply uncensored base and we kept it that way. It's built to engage seriously with technically demanding questions across cybersecurity, red-team methodology, biology, pharmacology and clinical medicine — the domains where over-aligned models refuse, hedge into uselessness, or bury the real answer under disclaimer boilerplate. That's a deliberate research choice. If you're putting it in front of end users, add your own application-level review layer.
Run it
GGUF builds are up for llama.cpp / Ollama / LM Studio if you just want to pull and chat. To serve at long context:
It's a reasoning model, so give it room and don't decode greedily:
At greedy or very-low-temperature (T ≤ 0.3) it can fall into repetition loops on long generations — a known reasoning-model failure mode; 0.6 cleanly avoids it. Every answer opens with a
<think>block, so strip that span before showing it to end users. You'll also want the Gated-DeltaNet kernels (flash-linear-attentionplus a CUDA-matchedcausal_conv1d), or the linear-attention layers fall back to slow PyTorch. It's a text-only fine-tune; the base is multimodal but we only trained the text path.Get it
If you build something with it, tell us. And if you want the next drop in your inbox, the dispatch sign-up is on the home page.
— kodee