Instructions to use logic65/Whittle-Next-26B-A3B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use logic65/Whittle-Next-26B-A3B with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf logic65/Whittle-Next-26B-A3B:Q8_0 # Run inference directly in the terminal: llama cli -hf logic65/Whittle-Next-26B-A3B:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf logic65/Whittle-Next-26B-A3B:Q8_0 # Run inference directly in the terminal: llama cli -hf logic65/Whittle-Next-26B-A3B:Q8_0
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf logic65/Whittle-Next-26B-A3B:Q8_0 # Run inference directly in the terminal: ./llama-cli -hf logic65/Whittle-Next-26B-A3B:Q8_0
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf logic65/Whittle-Next-26B-A3B:Q8_0 # Run inference directly in the terminal: ./build/bin/llama-cli -hf logic65/Whittle-Next-26B-A3B:Q8_0
Use Docker
docker model run hf.co/logic65/Whittle-Next-26B-A3B:Q8_0
- LM Studio
- Jan
- vLLM
How to use logic65/Whittle-Next-26B-A3B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "logic65/Whittle-Next-26B-A3B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "logic65/Whittle-Next-26B-A3B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/logic65/Whittle-Next-26B-A3B:Q8_0
- Ollama
How to use logic65/Whittle-Next-26B-A3B with Ollama:
ollama run hf.co/logic65/Whittle-Next-26B-A3B:Q8_0
- Unsloth Desktop
- Pi
How to use logic65/Whittle-Next-26B-A3B with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf logic65/Whittle-Next-26B-A3B:Q8_0
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "logic65/Whittle-Next-26B-A3B:Q8_0" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use logic65/Whittle-Next-26B-A3B with Docker Model Runner:
docker model run hf.co/logic65/Whittle-Next-26B-A3B:Q8_0
- Lemonade
How to use logic65/Whittle-Next-26B-A3B with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull logic65/Whittle-Next-26B-A3B:Q8_0
Run and chat with the model
lemonade run user.Whittle-Next-26B-A3B-Q8_0
List all available models
lemonade list
- Hermes Agent
How to use logic65/Whittle-Next-26B-A3B with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf logic65/Whittle-Next-26B-A3B:Q8_0
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default logic65/Whittle-Next-26B-A3B:Q8_0
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use logic65/Whittle-Next-26B-A3B with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf logic65/Whittle-Next-26B-A3B:Q8_0
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "logic65/Whittle-Next-26B-A3B:Q8_0" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Whittle-Next-26B-A3B (research preview)
Successor (recommended): Whittle-Next-27B-A3B — same body, 2B-row memory trained in the memorisation regime, hyper-connection streams unlocked, LoRA on layers 2–12, reasoning distill on complete thinking traces. Read its caveats; for maths this 26B is marginally better.
What this is, and is not. These are not finished, general-purpose models. They are working starting points for anyone who wants to build on the Qwen4-Next (
qwen4_exp) architecture — a body that already loads and runs on stock llama.cpp, with hyper-connections, a hashed n-gram memory and per-layer-embedding tensors wired in, plus every piece needed to keep training them (frozen body, trainable checkpoint, table, hash contract, trainer, exporter). Treat the numbers as a baseline to improve on, not a product.
This is the precursor to the 27B. Same recipe, half the memory table, one hour of online distillation. The 27B is out and is the one to run: Whittle-Next-27B-A3B (v3: 2B-row table trained in the memorisation regime, layer-2–12 LoRA, reasoning distill on complete thinking traces; GSM8K 86.5% / 86.0%, stop probe 12/12). This build stays published so the format, the serving path and the numbers can be checked now.
Whittle-Next is a Qwen3.8-Flash-Next-format model (qwen4_exp) built from Qwen3.6 — something in between the two
generations, hence the name. It runs on stock llama.cpp, no patches, no --override-kv.
| Qwen3.6-Whittle-25B-A3B (base) | Whittle-Next-26B-A3B | |
|---|---|---|
| total parameters | 25.1B | 26.1B (25.1B + 1.0B n-gram memory) |
| active per token | ~3B | ~3B (table lookups are free) |
| architecture | qwen3_5_moe, silu GDN gate |
qwen4_exp: sigmoid GDN gate, 4-stream hyper-connections, hashed n-gram memory before layer 2 |
| GSM8K (200 q, no-think, stock llama.cpp Q8_0, serving sampler) | 86.5% | 87.0% (174/200) |
| stop probe (12 open-ended replies, 400-token cap) | – | 10/12 reach EOS, max 4-gram repetition 0.038; the 2 misses are long TCP/UDP answers, not loops |
| multi-turn name recall | ok | ok |
The lineage is not a secret and is part of the story: Qwen3.6-35B-A3B is the body, Qwen3.8-27B is the teacher, Qwen3.8-Flash-Next is the architecture target. All Apache-2.0.
The story of how it was built
- Prune. Qwen3.6-35B-A3B, 256 → 180 routed experts per layer, scored one-shot with a gate-free activation-mass criterion (82% of routed mass kept). 34.7B → 25.1B.
- Heal. Self-distillation from the unpruned weights through a routing mask (same weights, mask on/off), LoRA on the kept experts, Muon + AdamW. Result published as Qwen3.6-Whittle-25B-A3B (GSM8K 92.5% in transformers).
- Sigmoid gate conversion. The Flash-Next format uses a sigmoid output gate in its gated-delta-net layers where Qwen3.6 uses silu. Converted progressively, three GDN layers at a time from the back, each group re-fitted then trained, then a settle pass. One-shot conversion put CE at 14.7 (dead); progressive landed at 2.05 held-out.
- Hyper-connections. Four residual streams per layer plus a head mixer, retrofitted at an exact identity so the
converted model was bit-for-bit unchanged at step 0, then trained. (Lesson banked: zero
downand zeroupis a saddle with no gradient —downrandom,upzero keeps identity and learns.) - N-gram memory. A 1.0B-parameter hashed table: 8 heads × 488,320 rows × 256, bigrams and trigrams hashed exactly
the way llama.cpp's PLE does it, read into the residual before layer 2 through a gated key/value path. Trained with
normalised sparse SGD on the host (each visited row moves a fixed 0.02 in its gradient direction — plain clipped SGD
left the fp16 table frozen below the ulp, which is why the table is zero-initialised and this rule exists).
It grows without retraining: doubling rows by replication (
hash % 2R ∈ {r, r+R}) is behaviour-preserving, so the 27B is this table doubled and trained further. - Online distillation from Qwen3.8-27B. No cached logits. On corpus windows: forward KL over the full 248k vocab plus CE. On the student's own sampled replies: reverse KL over the full vocab at every reply token, graded live by the 27B (the "dark knowledge" of a stronger sibling with the same tokenizer). The on-policy gradient is accumulated into the next corpus step rather than stepped alone — stepping alone was 32× noisier and drifted.
- Export to the stock format. HC norms folded the way the converter expects, inert QSA indexer (budget ≥ context),
PLE tensors and hash contract emitted,
model_type: qwen4_exp_text.convert_hf_to_gguf.pyfrom stock llama.cpp, served by a stock CUDA build with 0 modified files.
Run it
llama-server -m Whittle-Next-26B-A3B-Q8_0.gguf -ngl 99 -c 8192 --jinja -fa on
Request body: temperature 0.7, top_p 0.8, top_k 20, repeat_penalty 1.05, chat_template_kwargs: {"enable_thinking": false}.
Sample, don't decode greedily — greedy decoding is the single most reliable way to make any model in this family loop.
What to expect
Conversational, follows the template, stops. Facts and maths at the base model's level (the GSM8K gain is within noise). The one visible style change is the teacher's: it likes to explain arithmetic step by step. The n-gram table is one hour old; its value grows with the overnight run, which is why the 27B exists.
Files
Whittle-Next-26B-A3B-Q8_0.gguf— the model, stock llama.cpp.eval/gsm8k_200_stock_llamacpp_q8_0.json— the 200-question run, every answer.train/hc_ple_step1000.pt,train/ple_hash.json,train/ngram_table_1B_fp16.npy— the trained HC/PLE/gates/routers, the hash contract and the raw table, so the 27B (or your own) can be grown from here.train/logs/— the real logs, including the two on-policy attempts that were stopped and why.bf16/— the full assembled qwen4_exp weights in bf16 (50 GB).base-sigmoid/— the frozen body they were built on (47 GB).
Train it further
Everything needed to continue training is in this repo — that is the point of publishing the pieces, not just the GGUF:
base-sigmoid/— the sigmoid-gate-converted Qwen3.6-Whittle-25B-A3B in bf16 (qwen3_5_moelayout,gate_act.jsonsays which layers are sigmoid). This is the frozen body; load it withlinear_attn.norm.activation = "sigmoid".train/hc_ple_step1000.pt— the trainable set: hyper-connections for all 40 layers + head mixer, PLE projections, shared-expert gates, routers.train/ple_hash.json— the hash contract (multipliers, rows, heads, EOS reset).train/ngram_table_1B_fp16.npy— the raw table (rows × 256, fp16 memmap). Grow it withgrow_table.py(FACTOR=2doubles rows by replication; outputs are bit-identical at the swap).
Trainer: logic65/mini-next-a100-kit/colab/train_next36.py (+ qwen4exp_modules.py). Point MODEL at base-sigmoid/,
RESUME_CKPT at the checkpoint, TABLE/OUT at the table and hash. It trains only the pieces above (Muon for 2-D, AdamW
for 1-D, normalised sparse SGD for the table), takes any qwen3_5/qwen3_5_moe HF model as an online teacher, and
export_next36.py writes a stock-convertible qwen4_exp_text checkpoint. ~74 GB VRAM with the 27B teacher resident in int8;
smaller teachers fit smaller cards. bf16/ holds the assembled qwen4_exp wrap (plain bf16 weights, 50 GB, 13 shards): exactly
what convert_hf_to_gguf.py was run on, for anyone who wants the full weights rather than the pieces.
Support this work
Whittle runs on one hobbyist's grocery budget and rented GPU hours. If this research is useful to you: ko-fi.com/davida81328 ☕
Authors
David Aylward (logic65) & Claude (Anthropic) — designed, debugged and verified together, one rented RTX PRO 6000 Blackwell, one day.
Provenance
Body: Qwen/Qwen3.6-35B-A3B. Teacher: Qwen/Qwen3.8-27B.
Format: Qwen3.8-Flash-Next (qwen4_exp) as implemented in llama.cpp. All Apache-2.0. Method references: REAP (arXiv
2510.13999), "How to Score Experts for One-Shot MoE Expert Pruning" (arXiv 2606.15716), hyper-connections (arXiv
2409.19606), DistiLLM-2 / on-policy distillation literature. Scripts: logic65/mini-next-a100-kit/colab/
(prune_qwen36.py, heal_qwen36.py, train_next36.py, grow_table.py, export_next36.py). Part of the Whittle project by logic65.
- Downloads last month
- 76
8-bit