Lossless AI compression: 33% less GPU memory, bit for bit.
Glyd stores the weights of open models like Llama, Qwen, Gemma and Mistral in about 11 bits instead of 16, and decodes them inside the GPU's matrix multiply. Every weight comes back exactly, so you run the same model on less hardware, and often faster.
Glyd stores the weights of open models in about 11 bits instead of 16 and decodes them inside the GPU's matrix multiply. The same model on less hardware, often faster.
The black line is the GPU's 48 GB. nvidia-smi, Sep 27, 2026.
Will it fit on your GPU?
Pick your GPU's memory. Weights plus an 8K-token KV cache and 1.5 GB for the runtime, bf16 against Glyd.
Weights, an 8K-token KV cache and the runtime, bf16 against Glyd.
| Model | bf16 | Glyd | Memory it needs, against this GPU | On one 24 GB GPU |
|---|---|---|---|---|
| Gemma 3 12Best. | 24.4 GB | 16.4 GB | Fits only with Glyd | |
| Phi-4 14Best. | 29.3 GB | 19.7 GB | Fits only with Glyd | |
| R1 Distill Qwen 14Best. | 29.5 GB | 20.1 GB | Fits only with Glyd | |
| Qwen3 8Best. | 16.4 GB | 11.2 GB | Fits either way | |
| Llama 3.1 8Best. | 16.1 GB | 10.8 GB | Fits either way | |
| Mistral 7B v0.3est. | 14.5 GB | 9.8 GB | Fits either way | |
| Mistral Small 3.2 24Best. | 48.0 GB | 32.2 GB | Too big for one | |
| Gemma 4 26B-A4Best. | 51.6 GB | 34.7 GB | Too big for one |
Smaller, and usually faster
Generating a token reads every weight once, so reading a third fewer bytes saves time. At many sequences a step on A100 and H100 the decode work shows, and Glyd is slower there today.
All benchmarks| GPU time a token against bf16, Qwen2.5-7B | 1 sequence | 32 sequences |
|---|---|---|
| RTX 4080 SUPER | 25% less time | 28% less time |
| A10 | 28% less time | 18% less time |
| A100 | 17% less time | 6% more time |
| H100 SXM | 5% less time | 8% more time |
Decode steps only, q, k, v and gate, up merged as vLLM runs them. Sep 27, 2026.
How it works, in three stepsHow it works
The full explanation- 01
Find the waste
A bf16 weight spends 8 bits on its exponent, which carries about 2.6 bits of information in a trained model.A bf16 weight spends 8 bits on its exponent, which carries about 2.6 bits of information.
- 02
Code it exactly
Common exponents get short codes and rare ones a side list. Sign and mantissa stay as they are: about 11 bits a weight, nothing rounded.Short codes for common exponents, a side list for rare ones. Nothing rounded.
- 03
Decode in the multiply
The GPU reads the compressed bytes and decodes them in registers, straight into the tensor cores. No bf16 copy is ever made.Decoded in registers, straight into the tensor cores. No bf16 copy in memory.
How it compares
Lossless weight compression is an active research area. Here is where Glyd sits, on numbers we measured ourselves where we could.
| Method | Bits a weight | Same model? | Where the weights are decoded |
|---|---|---|---|
| GlydOpen source, 2026 | 10.8 or 12.0 | Yes, bit for bit | Inside the matrix multiply, in registers. 3.4× DFloat11 at one sequence. |
| DFloat11NeurIPS 2025 | about 11 | Yes, bit for bit | Each block decompressed to bf16 in memory before it runs. |
| ZipServASPLOS 2026 | 11.35 | Yes, bit for bit | Inside the matrix multiply. Its kernels and Glyd’s are within a few percent. |
| 4-bit quantizationGGUF Q4, AWQ, GPTQ | about 4.5 | No, rounded | Smallest by far, and a different model: its answers change. |
Try it on your model
Point the harness at any model released in bf16. It packs the weights, checks every one bit for bit, and runs bf16 and Glyd side by side on your GPU.
git clone https://github.com/surya-koritala/Glyd
cd Glyd/gpu
python e2e.py /models/Llama-3.1-8B-Instruct \
--format auto --fused --baseline --batch 1,8,32