aj9o9/Qwen3.6-35B-A3B-Escha-W2-GGUF
Escha Qwen3.6-35B-A3B W2 GGUF
I ported EschaLabs/Qwen3.6-35B-A3B-Escha-W2 to llama.cpp. Weights are theirs. This is not a requant.
I decode their native 2-bit eschamoe code in-kernel (GGML_OP_ESCHA_MOE). Expert payloads are the same bytes as the safetensors. Non-expert tensors are fp16.
Stock llama.cpp cannot load this file. You need my fork, branch escha-w2:
https://github.com/Ajay9o9/llama.cpp-escha/tree/escha-w2
If you only download the GGUF, it will not run.
File
File: Escha-Qwen3.6-35B-W2.gguf. 256 experts, top-8. gate/up K=2, down K=3. Extra size is fp16 on the non-expert tensors, not the expert code.
Quality vs Escha SGLang
Same GPU. I sent token ids, not text. Tokenizers agreed on 196,608 tokens of wikitext. Perplexity uses the same chunking on both sides (n_ctx 2048, 96 chunks, 98,208 scored tokens).
Gap is inside the llama.cpp run's own error bar, and smaller than SGLang's own rerun drift (+0.0016). One corpus. Not a task-accuracy claim.
Same prefix at every position, so a miss at i-1 does not poison i. Two SGLang runs against each other were 96 / 97.
Two SGLang runs were also 13 / 16 identical. Greedy is a hard argmax. I would not hang a quality claim on this.
Op test vs a numpy dense-fold reference (CPU and CUDA scored separately): rel RMS 1.06e-6 at K=2, 9.26e-7 at K=3.
Speed vs Escha SGLang
Single stream, batch 1, one RTX 3090. Their runtime is still ~2.6x faster at generation. Context lengths were not matched, so the ratio is rough.
SGLang generation was 256 new tokens with ignore_eos. MTP is dropped here, so speculative decoding on their server is not in these numbers.
Build the fork
git clone -b escha-w2 https://github.com/Ajay9o9/llama.cpp-escha.git
cd llama.cpp-escha
cmake -S . -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=86
cmake --build build -j 1286 is an RTX 3090. Change that for your GPU. -j 12 is a 12-core CPU.
Download the GGUF
hf download aj9o9/Qwen3.6-35B-A3B-Escha-W2-GGUF Escha-Qwen3.6-35B-W2.ggufDirect file: https://huggingface.co/aj9o9/Qwen3.6-35B-A3B-Escha-W2-GGUF/resolve/main/Escha-Qwen3.6-35B-W2.gguf
Run it
./build/bin/llama-server \
-m Escha-Qwen3.6-35B-W2.gguf \
-ngl 99 --host 127.0.0.1 --port 8080 \
-c 32768 -np 1 -t 12 --jinjaOr:
./build/bin/llama-cli \
-m Escha-Qwen3.6-35B-W2.gguf \
-ngl 99 --jinja -c 32768It is a reasoning model. Give it room to think or you get an empty answer.
What this is not
- Not a Q4K / Q80 requant of a dense reconstruction
- Not upstream llama.cpp
- Not bit-identical to Escha SGLang on every greedy prompt
- No MMLU / GSM8K / long-context eval
License
Apache-2.0, same as the Escha weights and the escha 1.0.2+qwen3moe wheel I used.
Source: EschaLabs/Qwen3.6-35B-A3B-Escha-W2 Runtime I compared against: escha 1.0.2+qwen3moe on SGLang
