Safetensors
GGUF
qwen3_5_moe
qwen4_exp
mixture-of-experts
hyper-connections
per-layer-embeddings
n-gram-memory
model-compression
research
conversational
Instructions to use logic65/whittle-next 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 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:F16 # Run inference directly in the terminal: llama cli -hf logic65/whittle-next:F16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf logic65/whittle-next:F16 # Run inference directly in the terminal: llama cli -hf logic65/whittle-next:F16
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:F16 # Run inference directly in the terminal: ./llama-cli -hf logic65/whittle-next:F16
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:F16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf logic65/whittle-next:F16
Use Docker
docker model run hf.co/logic65/whittle-next:F16
- LM Studio
- Jan
- Ollama
How to use logic65/whittle-next with Ollama:
ollama run hf.co/logic65/whittle-next:F16
- Unsloth Desktop
- Pi
How to use logic65/whittle-next 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:F16
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:F16" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use logic65/whittle-next with Docker Model Runner:
docker model run hf.co/logic65/whittle-next:F16
- Lemonade
How to use logic65/whittle-next with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull logic65/whittle-next:F16
Run and chat with the model
lemonade run user.whittle-next-F16
List all available models
lemonade list
- Hermes Agent
How to use logic65/whittle-next 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:F16
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:F16
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use logic65/whittle-next 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:F16
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:F16" \ --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"
| license: apache-2.0 | |
| base_model: logic65/Qwen3.8-Whittle-tri-14.7B | |
| tags: | |
| - qwen4_exp | |
| - mixture-of-experts | |
| - hyper-connections | |
| - per-layer-embeddings | |
| - n-gram-memory | |
| - model-compression | |
| - research | |
| <p align="center"><img src="whittle.svg" width="640" alt="Whittle"></p> | |
| # whittle-next — GGUF builds (research preview) | |
| **⚠️ Research artifact.** A 19.8B qwen4exp-architecture model built by weight surgery on | |
| [Whittle-tri-14.7B](https://huggingface.co/logic65/Qwen3.8-Whittle-tri-14.7B) (Qwen3.8-27B depth-compressed | |
| 64 -> 32 layers by parallel-compose merging, FFN width uncut, Apache-2.0), then repaired by SFT. It now **holds a conversation, follows the chat | |
| template, writes fenced code, and stops cleanly** — but it is factually thin and its arithmetic is | |
| approximate. Treat it as an architecture demonstrator, not an assistant. | |
| If this research is useful to you: **[ko-fi.com/davida81328](https://ko-fi.com/davida81328)** ☕ | |
| ## Serving settings — these are REQUIRED, not suggestions | |
| ```bash | |
| llama-server -m whittle-next-qwen4exp-sft-PLE4B-Q4_K_M.gguf -ngl 99 -c 8192 --jinja \ | |
| --override-kv qwen4exp.expert_used_count=int:104 | |
| ``` | |
| Request body: `temperature 0.7, top_p 0.8, top_k 20, repeat_penalty 1.05`. | |
| Two settings do almost all the work, and both were measured on this build: | |
| - **Sampling, not greedy.** At `temperature 0` a paragraph-length answer degenerates | |
| (4-gram repetition **0.885** — "the ocean is a combination of water and water…"). | |
| At the settings above the same prompt scores **0.000** and ends with `finish_reason=stop`. | |
| Greedy decoding is the single largest cause of looping in this model. | |
| - **k=104 active experts** (the `--override-kv` above). Raising k from the trained 58 to 104 is a | |
| config-only change that fixed list termination, restored task engagement (a "build a page" request | |
| went from a fabricated URL to real fenced HTML), and removed intra-list repetition — with zero | |
| gradient steps. | |
| Reasoning is optional: pass `chat_template_kwargs: {"enable_thinking": false}` for short factual | |
| turns. With thinking on, allow ≥700 tokens — the think block is verbose. | |
| ## The files | |
| | file | what it is | recommended | | |
| |---|---|---| | |
| | `whittle-next-qwen4exp-sft-PLE4B-Q4_K_M.gguf` | SFT + woken hyper-connections + trained shared-expert gates + 4B n-gram memory | ✅ **yes** | | |
| | `whittle-next-qwen4exp-router104-PLE4B-Q4_K_M.gguf` | the above **plus jointly-trained routers at k=104** — better offline metrics, worse behaviour (see below) | experimental | | |
| | `whittle-next-qwen4exp-HC-Q4_K_M.gguf` | hyper-connections only, no n-gram memory | ablation | | |
| | `whittle-next-qwen4exp-HC-PLE4B-f16.gguf` | f16, n-gram memory, pre-SFT | ablation | | |
| ## Measured behaviour (identical 6-probe harness, k=104, ai-2 / 3×RTX 3060) | |
| | build | mode | clean stops | looping answers | | |
| |---|---|---|---| | |
| | SFT (recommended) | thinking off | **5/6** | 1/6 | | |
| | SFT (recommended) | thinking on | 4/6 | 1/6 | | |
| | router104 | thinking off | 4/6 | 2/6 | | |
| | router104 | thinking on | 2/6 | — over-thinks, ran out of budget | | |
| With the recommended sampling the remaining loop disappears: longform, explanation, code and list | |
| probes all returned `finish_reason=stop` with 4-gram repetition 0.000 (one short story at 0.38). | |
| **Why router104 is not the default, despite better numbers.** Training the routers *jointly* with | |
| the shared-expert gates, hyper-connections and n-gram projections — and *at the k they serve* — | |
| produced the best offline metrics this project has recorded (held-out CE 4.1466 → **3.9745**, fact | |
| battery 4/5 → **5/5**). But served, it over-thinks and repeats more. The training-time gate was | |
| selecting on cross-entropy and a short greedy battery, neither of which measures paragraph-length | |
| generation; repetition on that gate rose 0.057 → 0.093 over the same window while CE improved. The | |
| router result is real and reproducible — it is a training-objective lesson, not a serving win. | |
| ## How conversational is it, really? | |
| Mechanically conversational; not yet substantively reliable. It takes a turn, answers, and stops — | |
| and the content underneath is often wrong. Verified single-turn probes (recommended build, k=104, | |
| serving sampler): Paris ✅, a complete valid fenced HTML page ✅, a coherent non-repeating paragraph ✅ | |
| — against "the sky is blue because sunlight shines through the clouds" ❌, 17+25 = 32 ❌, and | |
| "list exactly 5 fruits" sometimes answered "1, 2, 3, 4, and 5 are fruits" ❌ (it hears the format and | |
| misses the substance). | |
| **Untested:** every probe is single-turn. Multi-turn context retention — arguably the real test of | |
| "conversational" — has not been measured, and we make no claim about it. | |
| The failure mode has moved from *broken generation* to *a small model with damaged knowledge*. | |
| ## Honest limitations | |
| - **Facts are unreliable.** "Why is the sky blue" gets a confident wrong answer. The 4B n-gram | |
| memory measurably helps in-domain perplexity (86.6 → 33.2 on wikitext-2 at ctx 512) but does not | |
| make the model knowledgeable. | |
| - **Arithmetic is approximate**: 17 + 25 returns 32, 20 or 49 depending on build and mode. The model | |
| estimates where the parent computed. | |
| - **It will invent URLs and citations** rather than decline. Do not trust any link it produces. | |
| - Long code generations can still decay under greedy decoding; use the sampling settings. | |
| ## Architecture | |
| 19.775B parameters, 32 layers × 5120, 3:1 GDN:full-attention, 240 experts (k=104 recommended, | |
| 58 trained), 4 hyper-connection residual streams, per-layer n-gram memory over a 6.25M-row × 640 | |
| table (≈4B parameters, host-offloadable). Requires a llama.cpp with qwen4exp support; the GGUFs | |
| declare `output_gate_type: silu`, which transformers' `qwen4_exp` config now supports natively — | |
| the Qwen3.5-derived GDN weights need a SiLU output gate, not the sigmoid a Flash-Next model uses. | |
| **David Aylward (logic65)** & **Claude (Anthropic)** — designed, debugged and trained together. | |