The Memory Wall

Why your GPU's TFLOPs do not decide your tokens per second.

tokens/second  ≤  memory bandwidth  ÷  model bytes

At batch one, a language model reads every weight from memory to produce one token, and uses each weight exactly once. Arithmetic intensity is about 0.5 FLOP per byte. The accelerator's FLOP rating never enters the equation — the only lever on single-stream speed is how many bytes the model is.

FormatBits/weightSizeFitsDecode ceiling

This is a ceiling, not a promise. Attention, the KV cache, kernel overhead and real bandwidth utilisation (typically 70–85% of the spec sheet) all put the achievable number below it. Larger batches raise arithmetic intensity and change the picture entirely — this models the single-stream case, which is what most people run locally. Bandwidth figures are vendor peak.

Models built against this limit

Bytes are the only lever at batch one, so these are what the lever is worth in practice. Accuracy retained is the mean of ARC-Easy, ARC-Challenge, HellaSwag and PIQA against the uncompressed model, scored on the same GPU and harness. The speech model has no such benchmark, so it is measured by word error rate instead.

ModelBaseSizeSmaller byAccuracy retained
Exeaon1-Nunya-14BQwen3-14B7.38 GB3.73x100.3%
Exeaon1-Kese-30B-A3BQwen3-30B-A3B16.27 GB3.50x98.1%
Exeaon1-Nunya-8BQwen3-8B4.11 GB3.80x99.6%
Exeaon1-Dzo-4BQwen3-4B2.04 GB3.67x98.1%
Exeaon1-Dzo-0.6BQwen3-0.6B0.31 GB3.50x96.3%
Exeaon1-Voice-0.8BWhisper v3-turbo0.43 GB3.47xWER unchanged

Retention is not a free lunch, and neither is speed. On a large GPU these run slower than dense fp16 — a vendor tensor-core GEMM is heavily tuned and there is bandwidth to spare, so trading compute for memory loses. The win is on the other side of this page: fitting where the dense model does not.

Compressed models: huggingface.co/Exeaon · Runtime: github.com/ExeaonLM · Zenux Plimver Technologies LTD, Ghana