peasantsmith/Qwen3.6-35B-A3B-Escha-W2-GGUF-MTP overview
Qwen3.6 35B A3B — Escha W2 GGUF + MTP EschaLabs' Escha W2 2 bit calibration, converted to standard GGUF for llama.cpp, with an embedded MTP head for speculativ…
Runs locally from ~9.68 GB disk (12 GB VRAM class GPUs with llama.cpp / guIDE).
Repository Files & Downloads
Model Details
| Model ID | peasantsmith/Qwen3.6-35B-A3B-Escha-W2-GGUF-MTP |
|---|---|
| Author | peasantsmith |
| Pipeline | — |
| License | — |
| Base model | EschaLabs/Qwen3.6-35B-A3B-Escha-W2 |
| Last modified | 2026-08-29T23:57:07.000Z |
Model README
---
base_model:
- EschaLabs/Qwen3.6-35B-A3B-Escha-W2
tags:
- Moe
- qwen
- 35b
---
Qwen3.6-35B-A3B — Escha-W2 GGUF + MTP
EschaLabs' Escha-W2 2-bit calibration, converted to standard GGUF for llama.cpp, with an embedded MTP head for speculative decoding.
> 10.4 GB smallest build · 14.5 GB IQ3XXS · 17.2 GB Q3_K_M · 21.7 GB Q4_K_M · MTP enabled
A stock llama.cpp distribution of EschaLabs' Escha-W2 weights, preserving the original Escha-W2 2-bit calibration while making the model usable through the standard GGUF ecosystem.
This release also embeds the Qwen3.6 MTP head, allowing supported llama.cpp builds to use MTP speculative decoding without a separate draft model or custom fork.
---
What this release does
EschaLabs' original Escha-W2 distribution uses its own MLX/Escha-MoE representation and runtime.
This project takes that published representation and makes it available as standard GGUF, while preserving the important properties of the original quantization:
- EschaLabs' published Escha-W2 2-bit calibration
- EschaLabs' published reference codec
- Exact Hadamard-transform folding
- Standard GGUF tensors
- Standard
llama.cppinference - Multiple GGUF quantization levels
- Embedded Qwen3.6 MTP head
- MTP speculative decoding through llama.cpp's draft-MTP support
No reverse engineering of the Escha-W2 codec was required.
Conversion
Each Escha-MoE expert is decoded using EschaLabs' published reference implementation (escha-mlx), then converted into the GGUF representation.
The 128-point Hadamard transforms are folded mathematically into the weights:
W_eff = RS² · D_rin · H · W · H · D_rout
The resulting weights were validated against EschaLabs' reference implementation, with maximum relative deviation of approximately 5 × 10⁻⁴, consistent with fp16 rounding.
---
MTP: the extra value in this release
The Escha-W2 checkpoint does not contain the complete routed-expert portion required by the Qwen3.6 MTP block.
This release restores the required MTP tensors from the Apache-2.0 Qwen3.6-35B-A3B base model and embeds the resulting MTP head directly into the GGUF.
This means the model can use:
Target model + embedded MTP head → speculative decoding
rather than requiring a separate draft model.
With supported llama.cpp builds:
--spec-type draft-mtp
No custom inference fork is required.
Measured MTP result
On 3× RTX 3060, full model in VRAM, greedy decoding, 256 generated tokens:
86 → 101 t/s
+18% generation throughput
Measured using the IQ2_XXS build with:
--spec-type draft-mtp --spec-draft-n-max 2
MTP performance is hardware-, workload- and acceptance-rate-dependent. The +18% figure is a measured result from the configuration above, not a guaranteed universal speedup.
---
Available GGUFs
| File | On-disk size | Position |
|---|---:|---|
| escha-w2-Q4_K_M.gguf | 20.2 GB | Recommended default |
| escha-w2-Q3_K_M.gguf | 16.0 GB | Smaller |
| escha-w2-IQ3_XXS.gguf | 13.5 GB | Best compact quality/size point |
| escha-w2-IQ2_XXS.gguf | 9.0 GB | Smallest build |
The model's loaded memory footprint is larger than its on-disk GGUF size; the PPL table below reports the measured loaded model size.
Which one should I use?
Q4_K_M
Best default. Maximum quality within this release while remaining dramatically smaller than the original Escha-W2 F16 storage representation.
Q3_K_M
For systems that need to save several additional GB while retaining good quality.
IQ3_XXS
The strongest compact option. It saves substantial memory compared with Q3_K_M while producing nearly identical PPL in the test below.
IQ2_XXS
The smallest release. Intended for systems where model memory is the primary constraint.
---
Quality
Perplexity was measured using llama-perplexity on WikiText-2, with identical settings and full GPU offload for every row.
| Model | Loaded size | PPL |
|---|---:|---:|
| Escha-W2 F16 storage reference | 71.1 GB | 6.967 ± 0.046 |
| This release — Q4_K_M | 21.7 GB | 7.084 ± 0.047 |
| This release — Q3_K_M | 17.2 GB | 7.524 ± 0.050 |
| This release — IQ3_XXS | 14.5 GB | 7.543 ± 0.050 |
| This release — IQ2_XXS | 9.6 GB | 9.844 ± 0.068 |
What the results show
The Q4_K_M build reduces the Escha-W2 F16 storage representation from 71.1 GB to 21.7 GB, while moving PPL from 6.967 to 7.084.
The IQ3_XXS build is particularly interesting: it reduces the model to 14.5 GB while remaining extremely close to Q3_K_M in this benchmark:
Q3_K_M: 7.524 PPL
IQ3_XXS: 7.543 PPL
Only 0.019 PPL separates them.
IQ2_XXS is the extreme compression option. Its 9.6 GB footprint comes with a substantially larger quality trade-off.
> PPL measures next-token prediction loss and should not be interpreted as a direct measurement of reasoning, coding, instruction following, or agent performance.
---
Why these are Escha-W2 GGUFs
These are not conventional Q4/Q3/IQ3 quantizations of the original Qwen3.6 F16 model.
The starting point is already EschaLabs' 2-bit Escha-W2 calibrated representation.
The GGUF ladder therefore represents progressively more aggressive storage of an already aggressively calibrated model.
In particular:
Escha-W2 → Q4_K_M
is not equivalent to taking the original Qwen3.6 F16 model and creating a conventional Q4_K_M quant.
The purpose of this release is to preserve the Escha-W2 calibration and model representation while making it accessible through GGUF/llama.cpp.
---
llama.cpp
Basic Q4_K_M example:
llama-server \
-m escha-w2-Q4_K_M.gguf \
-ngl 99 \
--n-cpu-moe 41 \
-c 8192 \
-fa on
On a 12 GB GPU, --n-cpu-moe 41 keeps attention and shared components on the GPU while routing the MoE experts through CPU memory.
With sufficient VRAM, reduce or remove --n-cpu-moe.
---
MTP speculative decoding
llama-server \
-m escha-w2-Q4_K_M.gguf \
--spec-type draft-mtp \
--spec-draft-n-max 2 \
-ngl 99 \
-c 8192 \
-fa on \
-np 1
Current limitation:
- MTP requires
-np 1while active. - MTP is otherwise optional.
- Actual acceleration depends on hardware, workload and token acceptance.
---
Architecture
- Qwen3.6-35B-A3B
- 256 experts
- Top-8 expert routing
- 41 blocks
- 40 transformer blocks + 1 MTP/next-token block
- 262,144-token native context
- Text-only in this distribution
---
Importance matrix
llama-imatrix was generated from WikiText-2 training data:
- 10.9 MB raw corpus
- 200 chunks
- 512-token context
- MTP block excluded from calibration corpus
The MTP block (blk.40.*) is pinned to Q8_0 in all releases to preserve draft-head fidelity.
---
Credits & license
EschaLabs
The Escha-W2 quantized weights, Escha-MoE representation and published reference codec that make this conversion possible.
Qwen
The Qwen3.6-35B-A3B base model and the Apache-2.0-licensed tensors used to restore the MTP head.
License: Apache-2.0, subject to the licenses of the upstream components.
---
Limitations
Text only
The Escha-W2 checkpoint contains no vision tower. This distribution therefore provides text inference only.
MTP
MTP currently requires a single active stream (-np 1).
Memory
GGUF file size is not equivalent to total runtime memory consumption. KV cache, CUDA buffers, compute buffers and other runtime allocations require additional memory.
Quantization
The GGUF ladder is derived from the Escha-W2 2-bit-calibrated representation. Deeper quantization levels therefore progressively compress an already quantized source.
Run peasantsmith/Qwen3.6-35B-A3B-Escha-W2-GGUF-MTP with guIDE
Download guIDE — the AI-native code editor with local LLM inference and 69 built-in tools.
Source: Hugging Face · Compare models