Qwen3.5-2B Pingala-8 2-bit

Qwen3.5-2B in 0.78 GB, 2-bit: WikiText-2 perplexity 15.62 vs 29.08 for llama.cpp IQ2_XXS, in a file 11.5 MB smaller (lower is better).

Use the v2.5 one-click build (Windows and Linux, NVIDIA RTX 30/40/50): download it from the latest release, unzip it and double-click run_qwen35_2b.bat (Linux: ./run.sh qwen35-2b). The model downloads once, then a chat page opens in your browser. Stock llama.cpp, Ollama and LM Studio cannot load this file, and neither can Pingala-8 runtimes before v2.5: their loader expects 7 coded linear tensors per layer, and the small Qwen3.5 models have 6 in each DeltaNet layer. The v2.5 runtime is llama.cpp 7ac59a6 + the released CUDA patch + a one-line loader change (patches/q35_loader_count_delta.patch: the coded-tensor count must equal the file's vr.n_linear).

File Quant Size WikiText-2 PPL
Qwen3.5-2B-Pingala8-2bit.gguf Pingala-8, 2-bit 0.78 GB 15.62
for comparison: IQ2_XXS (llama.cpp, same imatrix) 2-bit 0.79 GB 29.08
for comparison: IQ2_KT (ik_llama.cpp, default recipe, smaller file) 2-bit 0.71 GB 17.90
for comparison: Q8_0 (llama.cpp) 8-bit 2.0 GB 11.13

This is the text model only: the vision tower and the multi-token-prediction (MTP) block of Qwen3.5-2B are not included.

Author: Harshit Goyal, Genrius AI (harshit@genrius.in). Base model: Qwen/Qwen3.5-2B (Apache-2.0). Method paper: Small-State Coset Trellis Coding at IQ2_XXS Size: An Equal-Bytes Study in llama.cpp (preprint, v2.4), DOI 10.5281/zenodo.23481757. The Qwen3.5 numbers on this page are new measurements and are not in the paper. Larger sibling: Qwen3.5-4B Pingala-8. Code and runtime patch: https://github.com/Genrius-AI/pingala8-llm

What this is

A 2-bit-class quantization of Qwen3.5-2B (hybrid model: 18 Gated DeltaNet layers and 6 gated full-attention layers) at no more bytes than llama.cpp's IQ2_XXS file of the same model. Every linear weight that the format can hold (150 tensors: attn_qkv, attn_gate, ssm_out in the DeltaNet layers; attn_q, attn_k, attn_v, attn_output in the attention layers; the three FFN matrices everywhere) is stored with Ungerboeck's 8-state set-partitioned trellis code over 4-weight symbols, behind a random Hadamard rotation and QuIP's LDLQ rounding, one rate class per tensor and incoherence-bound column scales (the B4 recipe of the Qwen3-4B release, unchanged). Layer Hessians come from 256 sequences of 2048 tokens of C4 text. ssm_alpha and ssm_beta have only 16 rows (the format needs a multiple of 32), so they are stored as Q4_0 (paid from this file's byte budget); the other tensors (token embedding and tied output, norms, conv1d, the DeltaNet gate parameters) are copied from the stock IQ2_XXS file.

This was a single build with the recipe and the release rule written down before any 2-bit number was measured.

Files

file bytes sha256
Qwen3.5-2B-Pingala8-2bit.gguf 778,744,192 2420d29be9a04453714f180516da4510ee520954cdf6c7e2a08a08fcf113db8e

IQ2_XXS of the same model: 790,275,360 bytes.

Which file should I pick?

If you... Use
have an NVIDIA RTX 30/40/50 GPU and want Qwen3.5-2B text generation in 0.78 GB this file with the v2.5 one-click build or your own build of the runtime
use stock llama.cpp, Ollama, LM Studio, a one-click build older than v2.5, a Mac, an AMD GPU or only a CPU a standard GGUF from the base model's Quantizations list; this file will not load there
need images or video input a standard GGUF with its mmproj file; this file is text only
serve many requests at once or process long prompts a standard quant: this file processes prompts at 0.875x the speed of IQ2_XXS

Prompt format

The Qwen3.5-2B chat template is stored in the GGUF (ChatML, <|im_start|> / <|im_end|>, with Qwen's thinking switch).

Results

WikiText-2 test, llama-perplexity -c 2049 --ppl-stride 4095 (windows of 4096 tokens; the Qwen3.5 tokenizer gives 72 windows on this text). Paired difference: this file minus the row, nats per token, 95% interval, and the windows on which this file is better.

format file bytes PPL ratio to Q8_0 paired, Pingala-8 - row
Q8_0 (llama.cpp) 2.0 GB 11.1287 1.000 +0.339 +/- 0.014 (0/72)
IQ2_XXS (llama.cpp, imatrix) 790,275,360 29.0779 2.613 -0.622 +/- 0.020 (72/72)
IQ2_KT (ik_llama.cpp, default recipe, imatrix) 714,957,344 17.9044 1.609 -0.137 +/- 0.008 (72/72)
Pingala-8 (this file) 778,744,192 15.6193 1.404 0

The IQ2_KT file is 8.2% smaller than this one, so that row is not an equal-bytes comparison; an IQ2_KT recipe at this file's size was not built. All three 2-bit files use the same importance matrix (C4 text, context 512, 200 chunks).

Zero-shot accuracy, % (0-shot continuation scores from llama-perplexity; HellaSwag 1,000 items, MMLU all 14,042 test items):

format HellaSwag WinoGrande ARC-Easy ARC-Challenge MMLU average
Pingala-8 (this file) 50.0 60.14 53.68 34.78 31.24 45.97
IQ2_XXS 44.7 55.8 50.53 30.1 30.15 42.26

Standard errors: about +/-1.6 (HellaSwag), +/-1.38 (WinoGrande), +/-2.1 (ARC-Easy), +/-2.7 (ARC-Challenge), +/-0.39 (MMLU).

Speed, same-round ratio to IQ2_XXS on one RTX 5070 Ti Laptop GPU, batch 1 (llama-bench -ngl 99 -fa 1, median of 3 rounds of -r 5): token generation (tg128) 1.094x, prompt processing (pp512) 0.875x. The generation ratio is noisy here: per round 1.041, 1.314 and 1.094 (this file 304.7, 304.0, 297.1 tokens/s; IQ2_XXS 292.8, 231.3, 271.5), so treat generation speed as at least a tie.

How to run

The easiest way is the v2.5 one-click build (run_qwen35_2b.bat on Windows, ./run.sh qwen35-2b on Linux). To build it yourself, use llama.cpp at commit 7ac59a6e3ad851cd41af00f678effab0598ba9a8 with the released CUDA patch plus the loader change from the code repository (patches/q35_loader_count_delta.patch):

git clone https://github.com/Genrius-AI/pingala8-llm
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
git checkout 7ac59a6e3ad851cd41af00f678effab0598ba9a8
git apply ../pingala8-llm/patches/llama_cuda_vs_7ac59a6.patch
git apply ../pingala8-llm/patches/q35_loader_count_delta.patch
cmake -S . -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=120 -DCMAKE_BUILD_TYPE=Release -DLLAMA_OPENSSL=OFF
cmake --build build -j8 --target llama-cli llama-perplexity llama-bench

The loader change keeps every earlier Pingala-8 file working: on the rebuilt runtime the Qwen3-4B file gives the same perplexity ([73]16.6413) and the same speed (tg128 1.01x, pp512 1.01x of the released build). Then (all layers on the GPU):

hf download Genrius-AI/Qwen3.5-2B-Pingala8-2bit --local-dir qwen3.5-2b-pingala8
export GGML_F44=4 GGML_F44_BATCH=2 GGML_VR_NATIVE=1 GGML_VRC_V=5 GGML_VRC_NWP=8 GGML_VR_RL=1 GGML_VR_PRMG=1 GGML_VR_PPC=2
./build/bin/llama-cli -m qwen3.5-2b-pingala8/Qwen3.5-2B-Pingala8-2bit.gguf -ngl 99
./build/bin/llama-perplexity -m qwen3.5-2b-pingala8/Qwen3.5-2B-Pingala8-2bit.gguf -f wikitext2_test_hfjoin.raw -c 2049 --ppl-stride 4095 -ngl 99

The perplexity command is the measured protocol (expected final value [72]15.6193); the code repository rebuilds the text file. The llama-cli line is a usage example and was not part of the measured runs. Set CMAKE_CUDA_ARCHITECTURES for your GPU.

Limitations

  • Needs the v2.5 runtime (the v2.5 one-click build, or your own build with patches/q35_loader_count_delta.patch); one-click builds up to v2.4.1 cannot load this file.
  • CUDA only, measured on one laptop GPU (RTX 5070 Ti Laptop, WSL2); no Metal, Vulkan or CPU path for this file.
  • Text only: no vision tower, no MTP block (so no MTP speculative decoding).
  • Prompt processing is slower than IQ2_XXS (0.875x). Batched decoding was not measured on this model; on Qwen3-4B it was much slower than IQ2_XXS (0.18-0.34x for 2 to 8 sequences).
  • At 2 bits the model is clearly worse than the 8-bit model (perplexity 1.404x Q8_0).
  • Perplexity was measured at context 4096 only; long-context behaviour of the quantized DeltaNet layers was not tested.
  • With the same recipe the method lost to IQ2_KT on Qwen3-14B (paper, Section 4.3); results do not transfer to every model.
  • Refusal, bias and hallucination behaviour after quantization were not evaluated. Evaluate the model for your own use.

Citation

@misc{goyal2026pingala8,
  title        = {Small-State Coset Trellis Coding at {IQ2\_XXS} Size: An Equal-Bytes Study in {llama.cpp}},
  author       = {Goyal, Harshit},
  year         = {2026},
  month        = oct,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.23481757},
  url          = {https://doi.org/10.5281/zenodo.23481757},
  note         = {Preprint, version 2.4. Code: https://github.com/Genrius-AI/pingala8-llm}
}

License and notice

Apache-2.0, inherited from Qwen3.5-2B (Qwen team, Alibaba Cloud); see LICENSE and NOTICE. The weights are a quantized derivative of Qwen3.5-2B made by Genrius AI. "Pingala-8" and "Genrius AI" are names of Genrius AI; the license grants no trademark rights.

Downloads last month
-
GGUF
Model size
0.9B params
Architecture
qwen35
Hardware compatibility
Log In to add your hardware

We're not able to determine the quantization variants.

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Genrius-AI/Qwen3.5-2B-Pingala8-2bit

Finetuned
Qwen/Qwen3.5-2B
Quantized
(273)
this model

Collection including Genrius-AI/Qwen3.5-2B-Pingala8-2bit

Evaluation results