Text Generation
GGUF
Transformers
English
llama.cpp
text-generation-inference
quantization
quantized
imatrix
importance-matrix
mtp
multi-token-prediction
speculative-decoding
low-bit
2-bit
3-bit
4-bit precision
iq2_xs
iq2_m
q2_k_s
iq3_m
iq4_xs
qwopus
qwen3
27b
coder
tool-use
function-calling
long-context
conversational
Instructions to use pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF 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 pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M # Run inference directly in the terminal: llama cli -hf pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M # Run inference directly in the terminal: llama cli -hf pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
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 pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M # Run inference directly in the terminal: ./llama-cli -hf pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
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 pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
Use Docker
docker model run hf.co/pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
- LM Studio
- Jan
- vLLM
How to use pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
- SGLang
How to use pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Ollama
How to use pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF with Ollama:
ollama run hf.co/pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
- Unsloth Desktop
- Pi
How to use pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
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": "pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF with Docker Model Runner:
docker model run hf.co/pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
- Lemonade
How to use pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
Run and chat with the model
lemonade run user.Qwopus3.6-27B-Coder-imatrix-MTP-GGUF-IQ2_M
List all available models
lemonade list
- Hermes Agent
How to use pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
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 pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M
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 "pearsonkyle/Qwopus3.6-27B-Coder-imatrix-MTP-GGUF:IQ2_M" \ --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"
Commit ·
e570976
0
Parent(s):
Squash history: keep current quants (IQ2_XS/IQ2_M/IQ3_M/IQ4_XS) + calibration data
Browse files- .gitattributes +45 -0
- MTP/README.md +44 -0
- Qwopus3.6-27B-Coder-IQ2_M.gguf +3 -0
- Qwopus3.6-27B-Coder-IQ2_XS.gguf +3 -0
- Qwopus3.6-27B-Coder-IQ3_M.gguf +3 -0
- Qwopus3.6-27B-Coder-IQ4_XS.gguf +3 -0
- README.md +237 -0
- calibration_data/README.md +25 -0
- calibration_data/corpora_audit.json +234 -0
- calibration_data/corpus.cal.txt +0 -0
- calibration_data/corpus.eval.general.txt +0 -0
- calibration_data/corpus.eval.tools.txt +0 -0
- calibration_data/corpus.eval.txt +0 -0
.gitattributes
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
Qwopus3.6-27B-Coder-Q2_K-plain-mtp.gguf filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
Qwopus3.6-27B-Coder-IQ2_XS-imatrix-mtp.gguf filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
Qwopus3.6-27B-Coder-IQ2_M-imatrix-mtp.gguf filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
Qwopus3.6-27B-Coder-Q2_K_S-imatrix-mtp.gguf filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
Qwopus3.6-27B-Coder-IQ2_M.gguf filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
Qwopus3.6-27B-Coder-IQ2_XS.gguf filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
Qwopus3.6-27B-Coder-Q2_K_S.gguf filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
Qwopus3.6-27B-Coder-Q2_K.gguf filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
Qwopus3.6-27B-Coder-IQ3_M.gguf filter=lfs diff=lfs merge=lfs -text
|
| 45 |
+
Qwopus3.6-27B-Coder-IQ4_XS.gguf filter=lfs diff=lfs merge=lfs -text
|
MTP/README.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# MTP (Multi-Token Prediction) — bundled, not separate
|
| 2 |
+
|
| 3 |
+
Unlike some MTP releases that ship a standalone draft GGUF, **Qwopus3.6 (Qwen3.6
|
| 4 |
+
architecture) bundles its MTP head directly into each trunk GGUF.** There are no
|
| 5 |
+
separate files in this folder by design — the draft head is already inside every
|
| 6 |
+
quant in the parent directory.
|
| 7 |
+
|
| 8 |
+
## What's inside the GGUFs
|
| 9 |
+
|
| 10 |
+
Each quant carries the model's trained nextn/MTP layer (`blk.64`: a full
|
| 11 |
+
attention + MLP block plus `nextn.eh_proj` and its norms). The trunk (blk.0–63)
|
| 12 |
+
is quantized (2-bit through 4-bit, depending on the variant), but **the entire MTP layer is kept at Q8_0** — near-lossless,
|
| 13 |
+
so the draft head actually drafts well. The MTP layer adds ~0.4 GiB.
|
| 14 |
+
|
| 15 |
+
## How to use it
|
| 16 |
+
|
| 17 |
+
```bash
|
| 18 |
+
./llama-server \
|
| 19 |
+
--model ../Qwopus3.6-27B-Coder-IQ2_M-imatrix-mtp.gguf \
|
| 20 |
+
--spec-type draft-mtp \
|
| 21 |
+
--spec-draft-n-max 1 \
|
| 22 |
+
--n-gpu-layers 999 --ctx-size 16384
|
| 23 |
+
```
|
| 24 |
+
|
| 25 |
+
- **`--spec-draft-n-max 1`** is optimal: Qwen3.6 exposes exactly one nextn layer
|
| 26 |
+
(`qwen35.nextn_predict_layers = 1`), so higher values give no benefit.
|
| 27 |
+
- **`-np > 1`** (parallel slots) and `--mmproj` are not yet compatible with MTP.
|
| 28 |
+
- MTP uses a little extra memory (~the Q8 draft layer + its KV).
|
| 29 |
+
- Requires a llama.cpp built after the 2026-06 `--spec-type draft-mtp` merge.
|
| 30 |
+
|
| 31 |
+
## Measured performance
|
| 32 |
+
|
| 33 |
+
On Apple Metal, IQ2_M trunk, n-max=1, holdout-session prompts:
|
| 34 |
+
|
| 35 |
+
| Config | Decode tok/s | Draft acceptance |
|
| 36 |
+
|---|---:|---:|
|
| 37 |
+
| MTP on | 22.9 ± 0.7 | **79.9%** |
|
| 38 |
+
| baseline (off) | 18.1 ± 1.7 | — |
|
| 39 |
+
| **speedup** | **1.26×** | |
|
| 40 |
+
|
| 41 |
+
Speedup is GPU-bandwidth dependent — the upstream Qwen3.6 figure is ~1.66× on an
|
| 42 |
+
RTX 5090. Acceptance was measured on IQ2_M; the Q8 draft head is identical across
|
| 43 |
+
all quants, so acceptance is similar (it verifies against each trunk, so a weaker
|
| 44 |
+
trunk shifts it slightly).
|
Qwopus3.6-27B-Coder-IQ2_M.gguf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3243c28a4f564e20d31bdbabfd5e990348771274ec8561f41947f209f229eb14
|
| 3 |
+
size 10455912992
|
Qwopus3.6-27B-Coder-IQ2_XS.gguf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c7118a07a6e30a463b8ac1ba69db4246b8bc449313c3960b80c8375479db8ed1
|
| 3 |
+
size 9541911072
|
Qwopus3.6-27B-Coder-IQ3_M.gguf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1ee891a72ea1d9745b4ee89f0aeecb9f439dccb22d8a05e7024a0f07845a8859
|
| 3 |
+
size 13032191264
|
Qwopus3.6-27B-Coder-IQ4_XS.gguf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e56602fe93b338a072bcc22d778adcda4988d09532f21e092c16260d9e00059a
|
| 3 |
+
size 15533823264
|
README.md
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
library_name: gguf
|
| 3 |
+
base_model:
|
| 4 |
+
- Jackrong/Qwopus3.6-27B-Coder
|
| 5 |
+
tags:
|
| 6 |
+
- gguf
|
| 7 |
+
- llama.cpp
|
| 8 |
+
- text-generation
|
| 9 |
+
- text-generation-inference
|
| 10 |
+
- transformers
|
| 11 |
+
- quantization
|
| 12 |
+
- quantized
|
| 13 |
+
- imatrix
|
| 14 |
+
- importance-matrix
|
| 15 |
+
- mtp
|
| 16 |
+
- multi-token-prediction
|
| 17 |
+
- speculative-decoding
|
| 18 |
+
- low-bit
|
| 19 |
+
- 2-bit
|
| 20 |
+
- 3-bit
|
| 21 |
+
- 4-bit
|
| 22 |
+
- iq2_xs
|
| 23 |
+
- iq2_m
|
| 24 |
+
- q2_k_s
|
| 25 |
+
- iq3_m
|
| 26 |
+
- iq4_xs
|
| 27 |
+
- qwopus
|
| 28 |
+
- qwen3
|
| 29 |
+
- 27b
|
| 30 |
+
- coder
|
| 31 |
+
- tool-use
|
| 32 |
+
- function-calling
|
| 33 |
+
- long-context
|
| 34 |
+
license: apache-2.0
|
| 35 |
+
language:
|
| 36 |
+
- en
|
| 37 |
+
pipeline_tag: text-generation
|
| 38 |
+
---
|
| 39 |
+
|
| 40 |
+
<div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; border: 1px solid #99f6e4; border-radius: 16px; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05), 0 4px 6px -2px rgba(0,0,0,0.05); overflow: hidden; background: #ffffff; margin-bottom: 30px;">
|
| 41 |
+
<div style="background: linear-gradient(135deg, #0d9488 0%, #134e4a 100%); padding: 24px; color: white;">
|
| 42 |
+
<div style="display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px;">
|
| 43 |
+
<h1 style="margin: 0; font-size: 26px; font-weight: 800; display: flex; align-items: center; gap: 12px; color: white; border: none;">🧊 Jackrong/Qwopus3.6-27B-Coder</h1>
|
| 44 |
+
<span style="background: #f59e0b; color: #1c1917; font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px;">imatrix + MTP</span>
|
| 45 |
+
</div>
|
| 46 |
+
</div>
|
| 47 |
+
<div style="display: flex; gap: 8px; flex-wrap: wrap; padding: 12px 24px; background: #f8fafc; border-bottom: 1px solid #e2e8f0;">
|
| 48 |
+
<span style="background: #dbeafe; color: #1e40af; font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 20px; border: 1px solid #bfdbfe;">📦 4 quants · 8.9 – 14.5 GiB</span>
|
| 49 |
+
<span style="background: #d1fae5; color: #065f46; font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 20px; border: 1px solid #a7f3d0;"> IQ2_XS · IQ2_M · IQ3_M · IQ4_XS</span>
|
| 50 |
+
<span style="background: #ede9fe; color: #5b21b6; font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 20px; border: 1px solid #ddd6fe;">⚡ MTP bundled (Q8) · 1.26× · 79.9% accept · @n=1</span>
|
| 51 |
+
<span style="background: #fce7f3; color: #9d174d; font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 20px; border: 1px solid #fbcfe8;">🏗️ llama.cpp 32782998 / f3e1828</span>
|
| 52 |
+
<span style="background: #fef3c7; color: #92400e; font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 20px; border: 1px solid #fde68a;">🏅 IQ4_XS: KLD 0.004 · top_p 94%</span>
|
| 53 |
+
</div>
|
| 54 |
+
<div style="padding: 24px; display: flex; flex-direction: column; gap: 20px;">
|
| 55 |
+
<div style="background: #f0fdfa; border-left: 5px solid #0d9488; padding: 16px; border-radius: 0 8px 8px 0;">
|
| 56 |
+
<h3 style="margin: 0 0 8px 0; font-size: 15px; color: #115e59; font-weight: 700; display: flex; align-items: center; gap: 6px;"><span>🧊</span> What this is</h3>
|
| 57 |
+
<p style="margin: 0; font-size: 13px; color: #334155; line-height: 1.7;">imatrix calibrated quantizations of <b>Jackrong/Qwopus3.6-27B-Coder</b> spanning <b>2.8 – 4.5 bits per weight</b> — from aggressive 2-bit (IQ2_XS/IQ2_M/Q2_K_S) up to near-lossless <b>IQ4_XS</b> (KLD 0.004, top_p 94%) — each calibrated from real usage logs + wiki text, and each shipping the model's own <b>Multi-Token-Prediction (MTP) draft head bundled in at Q8_0</b> for built-in speculative decoding. The MTP head — kept near-lossless at Q8 while the trunk is quantized — drafts the next token for a <b>~1.26× decode speedup</b> at <b>79.9% acceptance</b>, no separate draft model required. Plain GGUF, no custom runtime.</p>
|
| 58 |
+
</div>
|
| 59 |
+
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin-top: 10px;">
|
| 60 |
+
<div style="border: 1px solid #e2e8f0; padding: 14px; border-radius: 8px; background: #fafafa; box-shadow: inset 0 2px 4px rgba(0,0,0,0.02);"><span style="font-weight: 700; color: #115e59; font-size: 12px; display: block; margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px;">📉 3.5–5.7× smaller on disk</span><span style="font-size: 13px; color: #4b5563; line-height: 1.5;">8.9–14.5 GiB on disk (incl. the bundled MTP head) vs 50.9 GiB for FP16. Tuned for English + Python agentic-coding workloads (see calibration scope below).</span></div>
|
| 61 |
+
<div style="border: 1px solid #e2e8f0; padding: 14px; border-radius: 8px; background: #fafafa; box-shadow: inset 0 2px 4px rgba(0,0,0,0.02);"><span style="font-weight: 700; color: #115e59; font-size: 12px; display: block; margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px;">⚡ 1.26× faster decode</span><span style="font-size: 13px; color: #4b5563; line-height: 1.5;">Built-in MTP speculative decoding: 22.9 vs 18.1 tok/s on Metal (IQ2_M, n-max=1), 79.9% draft acceptance.</span></div>
|
| 62 |
+
</div>
|
| 63 |
+
</div>
|
| 64 |
+
</div>
|
| 65 |
+
|
| 66 |
+
## 🧰 1. Files & comparison
|
| 67 |
+
|
| 68 |
+
Calibrated imatrix-quants, each with the MTP head bundled at Q8_0. Plain Q2_K (no imatrix) is the no-calibration anchor. FP16 reference: 50.90 GiB (not included; fetch from [`Jackrong/Qwopus3.6-27B-Coder`](https://huggingface.co/Jackrong/Qwopus3.6-27B-Coder)).
|
| 69 |
+
|
| 70 |
+
| | FP16 (reference) | Q2_K (plain) | IQ2_XS (hybrid) | IQ2_M (hybrid) | Q2_K_S (hybrid) | IQ3_M (hybrid) | IQ4_XS (hybrid) |
|
| 71 |
+
|---|---|---|---|---|---|---|---|
|
| 72 |
+
| **File** | n/a | [Q2_K.gguf](https://huggingface.co/pearsonkyle/Qwopus3.6-27B-Coder-2bit-MTP-GGUF/resolve/main/Qwopus3.6-27B-Coder-Q2_K.gguf) | [IQ2_XS.gguf](https://huggingface.co/pearsonkyle/Qwopus3.6-27B-Coder-2bit-MTP-GGUF/resolve/main/Qwopus3.6-27B-Coder-IQ2_XS.gguf) | [IQ2_M.gguf](https://huggingface.co/pearsonkyle/Qwopus3.6-27B-Coder-2bit-MTP-GGUF/resolve/main/Qwopus3.6-27B-Coder-IQ2_M.gguf) | [Q2_K_S.gguf](https://huggingface.co/pearsonkyle/Qwopus3.6-27B-Coder-2bit-MTP-GGUF/resolve/main/Qwopus3.6-27B-Coder-Q2_K_S.gguf) | [IQ3_M.gguf](https://huggingface.co/pearsonkyle/Qwopus3.6-27B-Coder-2bit-MTP-GGUF/resolve/main/Qwopus3.6-27B-Coder-IQ3_M.gguf) | [IQ4_XS.gguf](https://huggingface.co/pearsonkyle/Qwopus3.6-27B-Coder-2bit-MTP-GGUF/resolve/main/Qwopus3.6-27B-Coder-IQ4_XS.gguf) |
|
| 73 |
+
| **Quant** | FP16 | Q2_K | IQ2_XS | **IQ2_M** | Q2_K_S | IQ3_M | **IQ4_XS** |
|
| 74 |
+
| **Agent Quality** | | ❌ | ❌ | ⭐ | ❌ | ⭐⭐ | ⭐⭐⭐ |
|
| 75 |
+
| **Technique** | none (reference) | plain (no imatrix) | hybrid imatrix | **hybrid imatrix** | hybrid imatrix | hybrid imatrix | **hybrid imatrix** |
|
| 76 |
+
| **Size (GiB)** | 50.90 | 10.40 | 8.89 | **9.74** | 9.96 | 12.14 | **14.47** |
|
| 77 |
+
| **BPW** | 16.000 | 3.269 | 2.794 | **3.062** | 3.133 | 3.816 | **4.549** |
|
| 78 |
+
| | | | | | | | |
|
| 79 |
+
| **PPL (general)** | 6.4826 | 5.5835 | 9.8866 | **8.5961** | 8.0091 | 8.3112 | **6.5729** |
|
| 80 |
+
| **KLD med (general)** | 0.00000 | 0.1154 | 0.0950 | **0.0535** | 0.0566 | 0.0191 | **0.0041** |
|
| 81 |
+
| **top_p (general)** | 100.00% | 79.29% | 78.87% | **83.23%** | 83.32% | 87.95% | **94.04%** |
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
<div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; border: 1px solid #fde68a; border-radius: 12px; background: #fffbeb; padding: 16px; margin: 16px 0; color: #92400e; font-size: 13px; line-height: 1.7;">
|
| 86 |
+
<b>⚠️ Caveat.</b> Low-bit (2.8–4.5 bpw) quants of a 27B model. The 2-bit rows are strong for their size but trade real fidelity; <b>IQ4_XS</b> is near-lossless (KLD 0.004) and the closest substitute for FP16 / Q4_K_M when you can spare ~14.5 GiB. Reach for the smaller rows when memory is the binding constraint.
|
| 87 |
+
</div>
|
| 88 |
+
|
| 89 |
+
<div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; border: 1px solid #bfdbfe; border-radius: 12px; background: #eff6ff; padding: 16px; margin: 16px 0; color: #1e3a8a; font-size: 13px; line-height: 1.7;">
|
| 90 |
+
<b>📋 Calibration scope — English & Python, agentic coding.</b> The importance matrix (and the windowed packing that shaped it) was calibrated on <b>real agentic-coding sessions that are overwhelmingly English-language and Python-centric</b>, captured from <b>Claude Code, opencode, and qwen code</b>. At low bit-widths the codebook's precision is spent where those logs put it: English prompts and Python-flavored tool use (read / edit / bash / grep / write, etc.). Expect <b>weaker fidelity on other natural languages, non-Python ecosystems, and non-coding / general-chat workloads</b>.
|
| 91 |
+
</div>
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
### SWE-rebench Results
|
| 95 |
+
|
| 96 |
+
The agentic coding capabilities of each quant were evaluated on 10 real-world coding issues from the [nebius/SWE-rebench](https://huggingface.co/datasets/nebius/SWE-rebench) using the [OpenAI Agents SDK](https://github.com/openai/openai-agents-python) pointed at a local [llama-server](https://github.com/ggml-org/llama.cpp). For each nebius/SWE-rebench issue, the agent gets the problem statement and a live bash tool that shells into a dedicated Docker container with the repo pre-checked out at the failing commit. It iterates by reading files, running tests, editing code until it produces a git diff or hits the step limit. The patch is then graded by actually running the repo's FAIL\_TO\_PASS test suite inside the container, so pass/fail is real execution, not fuzzy matching. We tried using [mini SWE-Agent](https://github.com/SWE-agent/mini-swe-agent) but it wasn't adequately resolving issues despite have a similar patch rate.
|
| 97 |
+
|
| 98 |
+
|Metric|Q2\_K|IQ2\_XS|**IQ2\_M**|Q2\_K\_S|Q5\_K\_M|
|
| 99 |
+
|:-|:-|:-|:-|:-|:-|
|
| 100 |
+
|File|[Q2\_K.gguf](https://huggingface.co/pearsonkyle/Qwopus3.6-27B-Coder-2bit-MTP-GGUF/resolve/main/Qwopus3.6-27B-Coder-Q2_K.gguf)|[IQ2\_XS.gguf](https://huggingface.co/pearsonkyle/Qwopus3.6-27B-Coder-2bit-MTP-GGUF/resolve/main/Qwopus3.6-27B-Coder-IQ2_XS.gguf)|**[IQ2\_M.gguf](https://huggingface.co/pearsonkyle/Qwopus3.6-27B-Coder-2bit-MTP-GGUF/resolve/main/Qwopus3.6-27B-Coder-IQ2_M.gguf)**|[Q2\_K\_S.gguf](https://huggingface.co/pearsonkyle/Qwopus3.6-27B-Coder-2bit-MTP-GGUF/resolve/main/Qwopus3.6-27B-Coder-Q2_K_S.gguf)|[Q5\_K\_M.gguf](https://huggingface.co/Jackrong/Qwopus3.6-27B-Coder-GGUF/resolve/main/Qwopus3.6-27B-Coder-Q5_K_M.gguf)|
|
| 101 |
+
|Technique|none|imatrix|**imatrix**|imatrix|none|
|
| 102 |
+
|Size (GiB)|10.40|8.89|**9.74**|9.96|19.50|
|
| 103 |
+
|Repetitions|3|3|**3**|3|3|
|
| 104 |
+
|Issues|10|10|**10**|10|10|
|
| 105 |
+
|Patch Rate|88±12%|70±10%|**100%**|93±6%|100%|
|
| 106 |
+
|Pass Rate|30±10%|27±6%|**63±6%**|57±6%|57±6%|
|
| 107 |
+
|Max Turns|27±15%|57±25%|**13±15%**|10±17%|0%|
|
| 108 |
+
|Mean Steps|58.5±7.6|73.1±15.1|**51.6±8.3**|46.7±8.1|38.6±1.3|
|
| 109 |
+
|Mean Tokens|1,335K±253K|1,779K±137K|**784K±260K**|922K±195K|588K±57K|
|
| 110 |
+
|Tool Error Rate|14.6±6.4%|9.5±3.6%|**12.6±1.8%**|8.9±1.5%|12.1±0.2%|
|
| 111 |
+
|Mean Wall|415±98s|558±182s|**381±66s**|425±259s|307±34s|
|
| 112 |
+
|
| 113 |
+
>Sampling Parameters: `temperature=0.25, top_p=0.95, top_k=20, min_p=0.0, presence_penalty=0.0, repetition_penalty=1.0, max_tokens=32768, ctx=131072, thinking=true, mtp=true, mtp_draft_n_max=2`. Tested on 4060Ti (16Gb)
|
| 114 |
+
|
| 115 |
+
Definitions:
|
| 116 |
+
|
| 117 |
+
* `patched` \- how many of the 10 issues did the agent produce a patch for (even if it didn't resolve)?
|
| 118 |
+
* `resolved` \- how many of the 10 issues had patches that passed all FAIL\_TO\_PASS tests?
|
| 119 |
+
* `max_turns` \- how many of the 10 issues hit the 100-step cap without resolving?
|
| 120 |
+
* `mean_steps` \- average number of agentic steps taken (shelling into Docker, reading files,editing code counts as steps)
|
| 121 |
+
* `mean_tokens` \- average number of tokens generated across the entire agentic episode
|
| 122 |
+
* `tool_err_rate` \- how often the agent produced an invalid shell command that couldn't be executed (syntax errors, wrong file paths, etc.)
|
| 123 |
+
* `mean_wall` \- average wall-clock time per episode (capped at 2 hours for those that hit the step limit)
|
| 124 |
+
|
| 125 |
+
Overall, the `IQ2_M` quant achieves a strong 63% pass rate on this agentic coding benchmark, which is impressive for a 2-bit model. The high patch rate across all quants suggests that even the weaker ones can still generate plausible patches, but the lower pass rates and higher max turn rates indicate that many of those patches aren't actually resolving the issues. The `IQ2_M` quant behaves as good as the `Q5_K_M` albiet with \~20% more steps and tokens, however those additional steps and iterations look to be effective ones that are helping it self-correct and resolve more issues, rather than just looping. When the quant has a high number of mean tokens in combination with a high max turn rate that usually indicates the agent is stuck in a loop. It's worth pointing out that Q5KM never hits its max turn (100) when solving these issues. **We recommend running these quants with a repetition penalty of >1 to break it out of loops.** Given the variation induced from sampling, we run a few repetitions of each quant and report the mean ± standard deviation across those runs.
|
| 126 |
+
|
| 127 |
+
---
|
| 128 |
+
|
| 129 |
+
## 🔬 2. How they were made
|
| 130 |
+
|
| 131 |
+
<div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; display: flex; flex-direction: column; gap: 16px; margin-bottom: 24px;">
|
| 132 |
+
<div style="border: 1px solid #99f6e4; border-radius: 12px; overflow: hidden; background: #ffffff;">
|
| 133 |
+
<div style="background: linear-gradient(135deg, #0d9488 0%, #115e59 100%); padding: 12px 16px; color: white; font-weight: 700; font-size: 14px;">🧮 2.1 Hybrid importance matrix</div>
|
| 134 |
+
<div style="padding: 16px; font-size: 13px; color: #334155; line-height: 1.7;">
|
| 135 |
+
<p style="margin: 0 0 10px 0;">At low bit-widths the quantizer must decide <i>where</i> to spend its limited precision. An <b>importance matrix</b> measures, per input channel, how much that channel drives each layer's output on a calibration corpus, and tells <code>llama-quantize</code> to preserve the high-impact channels. This release uses a <b>hybrid</b> imatrix blending activation energy <code>E[a²]</code> with weight-column energy <code>‖W[:, c]‖² · E[a²]</code>, collected at ctx=4096. Linear-attention / SSM tensors (this is a Qwen3.6 hybrid architecture) pass through with raw <code>E[a²]</code>. The output is a standard GGUF with no runtime overhead.</p>
|
| 136 |
+
</div>
|
| 137 |
+
</div>
|
| 138 |
+
<div style="border: 1px solid #ddd6fe; border-radius: 12px; overflow: hidden; background: #ffffff;">
|
| 139 |
+
<div style="background: linear-gradient(135deg, #7c3aed 0%, #5b21b6 100%); padding: 12px 16px; color: white; font-weight: 700; font-size: 14px;">⚡ 2.2 Bundled MTP (multi-token prediction)</div>
|
| 140 |
+
<div style="padding: 16px; font-size: 13px; color: #334155; line-height: 1.7;">
|
| 141 |
+
<p style="margin: 0 0 10px 0;">Qwopus3.6 ships a trained <b>MTP draft head</b> (one nextn layer, <code>blk.64</code>) that predicts the next token from the trunk's hidden state. llama.cpp runs it as built-in speculative decoding (<code>--spec-type draft-mtp</code>): the head drafts, the trunk verifies in parallel, and accepted drafts skip a full decode step.</p>
|
| 142 |
+
<p style="margin: 0 0 10px 0;">We <b>keep the MTP head near-lossless at Q8_0</b> while the trunk is quantized — the head is tiny relative to the model, and a low-bit draft head would draft poorly. The same Q8 head ships in all six quants. Measured on Metal (IQ2_M, n-max=1, holdout prompts):</p>
|
| 143 |
+
<table style="width:100%; border-collapse:collapse; font-size:12px; margin:0;">
|
| 144 |
+
<thead><tr style="background:#f5f3ff;"><th style="padding:8px 10px; border:1px solid #ddd6fe; text-align:left; color:#5b21b6;">Config</th><th style="padding:8px 10px; border:1px solid #ddd6fe; text-align:left; color:#5b21b6;">Decode tok/s</th><th style="padding:8px 10px; border:1px solid #ddd6fe; text-align:left; color:#5b21b6;">Draft acceptance</th></tr></thead>
|
| 145 |
+
<tbody>
|
| 146 |
+
<tr><td style="padding:8px 10px; border:1px solid #ddd6fe;"><b>MTP on</b> (n-max=1)</td><td style="padding:8px 10px; border:1px solid #ddd6fe;"><b>22.9 ± 0.7</b></td><td style="padding:8px 10px; border:1px solid #ddd6fe;"><b>79.9%</b></td></tr>
|
| 147 |
+
<tr><td style="padding:8px 10px; border:1px solid #ddd6fe;">baseline (off)</td><td style="padding:8px 10px; border:1px solid #ddd6fe;">18.1 ± 1.7</td><td style="padding:8px 10px; border:1px solid #ddd6fe;">—</td></tr>
|
| 148 |
+
</tbody>
|
| 149 |
+
</table>
|
| 150 |
+
<p style="margin: 10px 0 0 0;"><b>→ 1.26× speedup</b> on Metal. Qwen3.6 exposes <b>one</b> nextn layer, so <code>--spec-draft-n-max 1</code> is optimal (higher values don't help). GPU bandwidth matters — the upstream Qwen3.6 figure is ~1.66× on an RTX 5090. See <a href="./MTP/README.md"><code>MTP/README.md</code></a> for details.</p>
|
| 151 |
+
</div>
|
| 152 |
+
</div>
|
| 153 |
+
<div style="border: 1px solid #bfdbfe; border-radius: 12px; overflow: hidden; background: #ffffff;">
|
| 154 |
+
<div style="background: linear-gradient(135deg, #2563eb 0%, #1e3a8a 100%); padding: 12px 16px; color: white; font-weight: 700; font-size: 14px;">📚 2.3 Calibration & evaluation data</div>
|
| 155 |
+
<div style="padding: 16px; font-size: 13px; color: #334155; line-height: 1.7;">
|
| 156 |
+
<p style="margin: 0 0 10px 0;">Calibration and every eval corpus are disjoint by construction — the tool-call eval is the held-out 10% of sessions, windowed exactly like calibration but never seen by it — so §1 measures generalization, not fit. All shipped under <code>calibration_data/</code>.</p>
|
| 157 |
+
<table style="width:100%; border-collapse:collapse; font-size:12px; margin:0;">
|
| 158 |
+
<thead><tr style="background:#eff6ff;"><th style="padding:8px 10px; border:1px solid #bfdbfe; text-align:left; color:#1e3a8a;">Corpus</th><th style="padding:8px 10px; border:1px solid #bfdbfe; text-align:left; color:#1e3a8a;">Source</th><th style="padding:8px 10px; border:1px solid #bfdbfe; text-align:left; color:#1e3a8a;">Used for</th></tr></thead>
|
| 159 |
+
<tbody>
|
| 160 |
+
<tr><td style="padding:8px 10px; border:1px solid #bfdbfe;"><b>Calibration</b></td><td style="padding:8px 10px; border:1px solid #bfdbfe;">~500k tokens of usage-log text (windowed) + all of <code>wiki.test.raw</code></td><td style="padding:8px 10px; border:1px solid #bfdbfe;">hybrid imatrix collection</td></tr>
|
| 161 |
+
<tr><td style="padding:8px 10px; border:1px solid #bfdbfe;"><b>Eval — tools</b> (in-distribution)</td><td style="padding:8px 10px; border:1px solid #bfdbfe;">held-out logtrain session slice (10%), windowed like calibration but disjoint from it</td><td style="padding:8px 10px; border:1px solid #bfdbfe;"><b>§1 <i>tools</i> columns (PPL · KLD · top_p)</b></td></tr>
|
| 162 |
+
<tr><td style="padding:8px 10px; border:1px solid #bfdbfe;"><b>Eval — general</b></td><td style="padding:8px 10px; border:1px solid #bfdbfe;"><code>combined_en_tiny</code> (broad English) from the same eaddario dataset</td><td style="padding:8px 10px; border:1px solid #bfdbfe;"><b>§1 <i>gen</i> columns (PPL · KLD · top_p)</b></td></tr>
|
| 163 |
+
</tbody>
|
| 164 |
+
</table>
|
| 165 |
+
</div>
|
| 166 |
+
</div>
|
| 167 |
+
</div>
|
| 168 |
+
|
| 169 |
+
---
|
| 170 |
+
## 🚀 3. Usage
|
| 171 |
+
|
| 172 |
+
### Quick start with Ollama
|
| 173 |
+
|
| 174 |
+
Each quant is exposed as a tag (the filename's quant suffix):
|
| 175 |
+
|
| 176 |
+
```bash
|
| 177 |
+
ollama run hf.co/pearsonkyle/Qwopus3.6-27B-Coder-2bit-MTP-GGUF:IQ2_M
|
| 178 |
+
# also: :IQ4_XS · :IQ3_M · :Q2_K_S · :IQ2_XS · :Q2_K
|
| 179 |
+
```
|
| 180 |
+
|
| 181 |
+
### Building llama.cpp from source (GPU)
|
| 182 |
+
|
| 183 |
+
```bash
|
| 184 |
+
apt-get update && apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
|
| 185 |
+
git clone https://github.com/ggml-org/llama.cpp
|
| 186 |
+
cmake llama.cpp -B llama.cpp/build -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON # -DGGML_CUDA=OFF for CPU/Metal
|
| 187 |
+
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-server
|
| 188 |
+
cp llama.cpp/build/bin/llama-* llama.cpp/
|
| 189 |
+
```
|
| 190 |
+
|
| 191 |
+
> **MTP needs a recent llama.cpp** — `--spec-type draft-mtp` support was merged in 2026-06. Build from current `master`.
|
| 192 |
+
|
| 193 |
+
### Running the server with MTP speculative decoding
|
| 194 |
+
|
| 195 |
+
```bash
|
| 196 |
+
./llama-server \
|
| 197 |
+
--model Qwopus3.6-27B-Coder-IQ2_M.gguf \
|
| 198 |
+
--ctx-size 16384 \
|
| 199 |
+
--n-gpu-layers 999 \
|
| 200 |
+
--spec-type draft-mtp \
|
| 201 |
+
--spec-draft-n-max 1 \
|
| 202 |
+
--flash-attn on \
|
| 203 |
+
--cache-type-k q8_0 --cache-type-v q8_0 \
|
| 204 |
+
--host 0.0.0.0 --port 1234
|
| 205 |
+
```
|
| 206 |
+
|
| 207 |
+
Drop `--spec-type draft-mtp --spec-draft-n-max 1` to run without MTP.
|
| 208 |
+
|
| 209 |
+
### Querying via the OpenAI-compatible API
|
| 210 |
+
|
| 211 |
+
```python
|
| 212 |
+
import json, urllib.request
|
| 213 |
+
|
| 214 |
+
def ask(content, max_tokens=256):
|
| 215 |
+
body = {
|
| 216 |
+
"messages": [{"role": "user", "content": content}],
|
| 217 |
+
"max_tokens": max_tokens,
|
| 218 |
+
# Coder variant emits <think> reasoning. Set enable_thinking False
|
| 219 |
+
# (or raise max_tokens) so the answer lands in "content".
|
| 220 |
+
"chat_template_kwargs": {"enable_thinking": False},
|
| 221 |
+
}
|
| 222 |
+
req = urllib.request.Request("http://127.0.0.1:1234/v1/chat/completions",
|
| 223 |
+
json.dumps(body).encode(),
|
| 224 |
+
{"Content-Type": "application/json"})
|
| 225 |
+
return json.loads(urllib.request.urlopen(req).read())["choices"][0]["message"]["content"]
|
| 226 |
+
|
| 227 |
+
print(ask("Write a Python function that reverses a linked list."))
|
| 228 |
+
```
|
| 229 |
+
|
| 230 |
+
---
|
| 231 |
+
|
| 232 |
+
## 🪪 4. License & attribution
|
| 233 |
+
|
| 234 |
+
* Inherits its license from the base model [`Jackrong/Qwopus3.6-27B-Coder`](https://huggingface.co/Jackrong/Qwopus3.6-27B-Coder). **Confirm the exact terms and update the frontmatter `license:` before publishing.**
|
| 235 |
+
* Base weights: [`Jackrong/Qwopus3.6-27B-Coder`](https://huggingface.co/Jackrong/Qwopus3.6-27B-Coder) (full finetune of Qwen3.6-27B, ships its own MTP head).
|
| 236 |
+
* Calibration + quantization performed locally with [**Quant-Tuner**](https://github.com/pearsonkyle/Quant-Tuner); vendored llama.cpp at commit `32782998` (2-bit rows: Q2_K, IQ2_XS, IQ2_M, Q2_K_S) and `f3e1828` (IQ3_M, IQ4_XS). All six share the same hybrid imatrix + calibration corpora.
|
| 237 |
+
* Calibration data (usage logs) scraped using [**LogMiner**](https://github.com/pearsonkyle/LogMiner).
|
calibration_data/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Calibration data
|
| 2 |
+
|
| 3 |
+
Produced by `scripts/build_corpora.py` + `scripts/exp041_quants_qwopus36.py` under
|
| 4 |
+
`out/exp-041/corpora/`, reproduced here for transparency. The usage-log text is packed
|
| 5 |
+
with a **stub + multi-window** scheme (system-prompt prose trimmed to a stub, each
|
| 6 |
+
session sliced into windows of real tool-call turns) so the imatrix sees the agentic
|
| 7 |
+
decision channels rather than boilerplate.
|
| 8 |
+
|
| 9 |
+
| File | Role | Source |
|
| 10 |
+
|---|---|---|
|
| 11 |
+
| `corpus.cal.txt` | hybrid imatrix collection | all of `wiki.test.raw` + ~500k tokens from the logtrain **train** slice (windowed) |
|
| 12 |
+
| `corpus.eval.tools.txt` | **§1 tools columns** (PPL · KLD · top_p, in-distribution) | logtrain **holdout** slice (10%), windowed like calibration but disjoint from it |
|
| 13 |
+
| `corpus.eval.general.txt` | **§1 gen columns** (PPL · KLD · top_p, free-text check) | `combined_en_tiny` (broad English) from `eaddario/imatrix-calibration` |
|
| 14 |
+
|
| 15 |
+
The folder also ships `corpus.eval.txt` (external code+math+tools from the same eaddario
|
| 16 |
+
dataset), retained for reference but no longer used in §1.
|
| 17 |
+
|
| 18 |
+
`corpora_audit.json` records token/session counts and per-source breakdown, and asserts
|
| 19 |
+
the logtrain train/test/holdout fingerprints are disjoint.
|
| 20 |
+
|
| 21 |
+
Every eval corpus is disjoint from calibration — the tool-call eval is the held-out
|
| 22 |
+
session slice that the calibration `train` slice never touches — so §1 measures
|
| 23 |
+
generalization, not fit. Note `corpus.eval.tools.txt` is chat-templated and
|
| 24 |
+
`llama-perplexity` lacks `--parse-special`, so its KLD is for **quant-vs-quant**
|
| 25 |
+
comparison (all rows vs FP16 on the identical file), not absolute cross-corpus PPL.
|
calibration_data/corpora_audit.json
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"seed": 42,
|
| 3 |
+
"logtrain_splits": {
|
| 4 |
+
"train": 200,
|
| 5 |
+
"test": 25,
|
| 6 |
+
"holdout": 25
|
| 7 |
+
},
|
| 8 |
+
"wiki_bytes": 1287656,
|
| 9 |
+
"supplement": null,
|
| 10 |
+
"external_eval_repo": "eaddario/imatrix-calibration",
|
| 11 |
+
"external_eval_domains": [
|
| 12 |
+
"code_small",
|
| 13 |
+
"math_small",
|
| 14 |
+
"tools_small"
|
| 15 |
+
],
|
| 16 |
+
"calibration": {
|
| 17 |
+
"path": "out/exp-041/corpora/corpus.cal.txt",
|
| 18 |
+
"target_logtrain_tokens": 500000,
|
| 19 |
+
"actual_logtrain_tokens": 500063,
|
| 20 |
+
"n_logtrain_sessions": 182,
|
| 21 |
+
"pack_audit": {
|
| 22 |
+
"total_tokens": 500063,
|
| 23 |
+
"chunk_count": 182,
|
| 24 |
+
"session_count": 36,
|
| 25 |
+
"truncated_sessions": 0,
|
| 26 |
+
"per_session_cap": 3500,
|
| 27 |
+
"tokens_per_source": {
|
| 28 |
+
"claude": 210796,
|
| 29 |
+
"opencode": 56651,
|
| 30 |
+
"qwen": 232616
|
| 31 |
+
},
|
| 32 |
+
"tokens_per_length_bucket": {
|
| 33 |
+
"long": 255958,
|
| 34 |
+
"medium": 164677,
|
| 35 |
+
"short": 79428
|
| 36 |
+
},
|
| 37 |
+
"tokens_per_stratum": {
|
| 38 |
+
"claude/long": 106091,
|
| 39 |
+
"claude/medium": 67490,
|
| 40 |
+
"claude/short": 37215,
|
| 41 |
+
"opencode/long": 44289,
|
| 42 |
+
"opencode/medium": 12362,
|
| 43 |
+
"qwen/long": 105578,
|
| 44 |
+
"qwen/medium": 84825,
|
| 45 |
+
"qwen/short": 42213
|
| 46 |
+
},
|
| 47 |
+
"sessions_available_per_stratum": {
|
| 48 |
+
"qwen/short": 12,
|
| 49 |
+
"qwen/medium": 53,
|
| 50 |
+
"qwen/long": 70,
|
| 51 |
+
"claude/short": 10,
|
| 52 |
+
"claude/long": 15,
|
| 53 |
+
"claude/medium": 36,
|
| 54 |
+
"opencode/medium": 1,
|
| 55 |
+
"opencode/long": 3
|
| 56 |
+
},
|
| 57 |
+
"sessions_consumed_per_stratum": {
|
| 58 |
+
"claude/long": 6,
|
| 59 |
+
"claude/medium": 6,
|
| 60 |
+
"claude/short": 6,
|
| 61 |
+
"opencode/long": 3,
|
| 62 |
+
"opencode/medium": 1,
|
| 63 |
+
"qwen/long": 6,
|
| 64 |
+
"qwen/medium": 5,
|
| 65 |
+
"qwen/short": 5
|
| 66 |
+
},
|
| 67 |
+
"windowing": {
|
| 68 |
+
"system_prose_budget": 256,
|
| 69 |
+
"full_prose_quota": 1,
|
| 70 |
+
"max_windows_per_session": 8,
|
| 71 |
+
"windows_emitted": 182,
|
| 72 |
+
"sessions_kept": 36,
|
| 73 |
+
"avg_windows_per_session": 5.06,
|
| 74 |
+
"unique_system_prompts": 3,
|
| 75 |
+
"full_prose_sessions": 3,
|
| 76 |
+
"stub_sessions": 33,
|
| 77 |
+
"oversize_windows": 19,
|
| 78 |
+
"system_prose_tokens": 55417,
|
| 79 |
+
"body_tokens": 444646,
|
| 80 |
+
"tool_turn_token_share": 0.8892
|
| 81 |
+
}
|
| 82 |
+
}
|
| 83 |
+
},
|
| 84 |
+
"validation": {
|
| 85 |
+
"path": "out/exp-041/corpora/corpus.val.txt",
|
| 86 |
+
"target_logtrain_tokens": 10000,
|
| 87 |
+
"actual_logtrain_tokens": 9531,
|
| 88 |
+
"n_logtrain_sessions": 8,
|
| 89 |
+
"pack_audit": {
|
| 90 |
+
"total_tokens": 9531,
|
| 91 |
+
"chunk_count": 8,
|
| 92 |
+
"session_count": 3,
|
| 93 |
+
"truncated_sessions": 0,
|
| 94 |
+
"per_session_cap": 3500,
|
| 95 |
+
"tokens_per_source": {
|
| 96 |
+
"claude": 8621,
|
| 97 |
+
"qwen": 910
|
| 98 |
+
},
|
| 99 |
+
"tokens_per_length_bucket": {
|
| 100 |
+
"long": 3460,
|
| 101 |
+
"medium": 6071
|
| 102 |
+
},
|
| 103 |
+
"tokens_per_stratum": {
|
| 104 |
+
"claude/long": 3460,
|
| 105 |
+
"claude/medium": 5161,
|
| 106 |
+
"qwen/medium": 910
|
| 107 |
+
},
|
| 108 |
+
"sessions_available_per_stratum": {
|
| 109 |
+
"qwen/long": 9,
|
| 110 |
+
"claude/medium": 7,
|
| 111 |
+
"qwen/medium": 6,
|
| 112 |
+
"claude/long": 2,
|
| 113 |
+
"qwen/short": 1
|
| 114 |
+
},
|
| 115 |
+
"sessions_consumed_per_stratum": {
|
| 116 |
+
"claude/long": 2,
|
| 117 |
+
"claude/medium": 7,
|
| 118 |
+
"qwen/long": 9,
|
| 119 |
+
"qwen/medium": 6,
|
| 120 |
+
"qwen/short": 1
|
| 121 |
+
},
|
| 122 |
+
"windowing": {
|
| 123 |
+
"system_prose_budget": 256,
|
| 124 |
+
"full_prose_quota": 1,
|
| 125 |
+
"max_windows_per_session": 8,
|
| 126 |
+
"windows_emitted": 8,
|
| 127 |
+
"sessions_kept": 3,
|
| 128 |
+
"avg_windows_per_session": 2.67,
|
| 129 |
+
"unique_system_prompts": 2,
|
| 130 |
+
"full_prose_sessions": 1,
|
| 131 |
+
"stub_sessions": 2,
|
| 132 |
+
"oversize_windows": 0,
|
| 133 |
+
"system_prose_tokens": 4343,
|
| 134 |
+
"body_tokens": 5188,
|
| 135 |
+
"tool_turn_token_share": 0.5443
|
| 136 |
+
}
|
| 137 |
+
},
|
| 138 |
+
"supplement_source": null
|
| 139 |
+
},
|
| 140 |
+
"eval": {
|
| 141 |
+
"path": "out/exp-041/corpora/corpus.eval.txt",
|
| 142 |
+
"target_tokens_per_domain": 30000,
|
| 143 |
+
"domains": {
|
| 144 |
+
"code_small": {
|
| 145 |
+
"path": "out/exp-041/corpora/corpus.eval.code_small.txt",
|
| 146 |
+
"target_tokens": 30000,
|
| 147 |
+
"actual_tokens": 30000,
|
| 148 |
+
"n_rows": 1,
|
| 149 |
+
"source_parquet": "out/external/imatrix-calibration/code_small.parquet"
|
| 150 |
+
},
|
| 151 |
+
"math_small": {
|
| 152 |
+
"path": "out/exp-041/corpora/corpus.eval.math_small.txt",
|
| 153 |
+
"target_tokens": 30000,
|
| 154 |
+
"actual_tokens": 30000,
|
| 155 |
+
"n_rows": 1,
|
| 156 |
+
"source_parquet": "out/external/imatrix-calibration/math_small.parquet"
|
| 157 |
+
},
|
| 158 |
+
"tools_small": {
|
| 159 |
+
"path": "out/exp-041/corpora/corpus.eval.tools_small.txt",
|
| 160 |
+
"target_tokens": 30000,
|
| 161 |
+
"actual_tokens": 30000,
|
| 162 |
+
"n_rows": 1,
|
| 163 |
+
"source_parquet": "out/external/imatrix-calibration/tools_small.parquet"
|
| 164 |
+
}
|
| 165 |
+
}
|
| 166 |
+
},
|
| 167 |
+
"eval_general": {
|
| 168 |
+
"path": "out/exp-041/corpora/corpus.eval.general.txt",
|
| 169 |
+
"domain": "combined_en_tiny",
|
| 170 |
+
"target_tokens": 30000,
|
| 171 |
+
"actual_tokens": 30000,
|
| 172 |
+
"n_rows": 1,
|
| 173 |
+
"source_parquet": "out/external/imatrix-calibration/combined_en_tiny.parquet"
|
| 174 |
+
},
|
| 175 |
+
"eval_tools": {
|
| 176 |
+
"path": "out/exp-041/corpora/corpus.eval.tools.txt",
|
| 177 |
+
"source_slice": "logtrain.holdout",
|
| 178 |
+
"target_tokens": 30000,
|
| 179 |
+
"actual_tokens": 30542,
|
| 180 |
+
"n_logtrain_sessions": 11,
|
| 181 |
+
"pack_audit": {
|
| 182 |
+
"total_tokens": 30542,
|
| 183 |
+
"chunk_count": 11,
|
| 184 |
+
"session_count": 4,
|
| 185 |
+
"truncated_sessions": 0,
|
| 186 |
+
"per_session_cap": 3500,
|
| 187 |
+
"tokens_per_source": {
|
| 188 |
+
"claude": 24425,
|
| 189 |
+
"qwen": 6117
|
| 190 |
+
},
|
| 191 |
+
"tokens_per_length_bucket": {
|
| 192 |
+
"long": 9481,
|
| 193 |
+
"medium": 16751,
|
| 194 |
+
"short": 4310
|
| 195 |
+
},
|
| 196 |
+
"tokens_per_stratum": {
|
| 197 |
+
"claude/long": 3364,
|
| 198 |
+
"claude/medium": 16751,
|
| 199 |
+
"claude/short": 4310,
|
| 200 |
+
"qwen/long": 6117
|
| 201 |
+
},
|
| 202 |
+
"sessions_available_per_stratum": {
|
| 203 |
+
"qwen/medium": 8,
|
| 204 |
+
"claude/long": 3,
|
| 205 |
+
"claude/medium": 3,
|
| 206 |
+
"qwen/long": 10,
|
| 207 |
+
"claude/short": 1
|
| 208 |
+
},
|
| 209 |
+
"sessions_consumed_per_stratum": {
|
| 210 |
+
"claude/long": 1,
|
| 211 |
+
"claude/medium": 1,
|
| 212 |
+
"claude/short": 1,
|
| 213 |
+
"qwen/long": 1,
|
| 214 |
+
"qwen/medium": 0
|
| 215 |
+
},
|
| 216 |
+
"windowing": {
|
| 217 |
+
"system_prose_budget": 256,
|
| 218 |
+
"full_prose_quota": 1,
|
| 219 |
+
"max_windows_per_session": 8,
|
| 220 |
+
"windows_emitted": 11,
|
| 221 |
+
"sessions_kept": 4,
|
| 222 |
+
"avg_windows_per_session": 2.75,
|
| 223 |
+
"unique_system_prompts": 2,
|
| 224 |
+
"full_prose_sessions": 2,
|
| 225 |
+
"stub_sessions": 2,
|
| 226 |
+
"oversize_windows": 1,
|
| 227 |
+
"system_prose_tokens": 10017,
|
| 228 |
+
"body_tokens": 20525,
|
| 229 |
+
"tool_turn_token_share": 0.672
|
| 230 |
+
}
|
| 231 |
+
},
|
| 232 |
+
"parse_special_caveat": "quant-vs-quant only (no --parse-special)"
|
| 233 |
+
}
|
| 234 |
+
}
|
calibration_data/corpus.cal.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
calibration_data/corpus.eval.general.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
calibration_data/corpus.eval.tools.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
calibration_data/corpus.eval.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|