← Gautam Parab

Why Is the Small Model on Your Phone So Slow? The Bandwidth Wall, the Quantization Cliff, and What Actually Fits On-Device

Streaming a 6.7-billion-parameter model’s weights off phone flash costs about three seconds per token. Not per response. Per token. The number comes from Kim, Han and Kim’s LLM-on-the-Palm (ICCAD 2025). In their NPU-only baseline, weight I/O accounted for 89.5% of energy. The chip was never the expensive part.

Autoregressive decoding at batch size one reads essentially every parameter to produce every single token, which makes throughput a bandwidth problem rather than a FLOPs problem. The NPU rating on the spec sheet — 45, 48, 50 TOPS — measures a resource that is not the bottleneck. Everything else about on-device models follows from that one fact: why quantization is mandatory rather than optional, why the accuracy cliff sits where it does, and why two runtimes at the same bit-width can differ tenfold in energy per token.

The bottleneck is a bus, not a processor

The same paper gives the layout plainly. LPDDR5 delivers roughly 50 GB/s, but NAND flash — where the weights must live, since a 16-bit 6.7B model needs more than 13 GB against a phone’s 6–14 GB of DRAM — delivers about 4 GB/s. Their processing-in-NAND architecture brings the per-token cost down to roughly 100–120 ms, and it gets there by attacking the traffic rather than the math.

The pattern is not specific to phones. Pope and colleagues at Google, in Efficiently Scaling Transformer Inference (MLSys 2023), locate the constraint in the memory traffic needed to load parameters and KV cache from memory at every decode step. Gholami and co-authors put numbers on the divergence in AI and Memory Wall (IEEE Micro, 2024): across roughly two decades, peak server compute grew about 60,000× while DRAM bandwidth grew about 100× — 3.0× versus 1.6× per two-year period. Their sharpest illustration is that GPT-2 runs slower than BERT at equal FLOPs, because decoder-only generation is a matrix-vector operation with low arithmetic intensity rather than the matrix-matrix work an accelerator is built for.

Memory bandwidth by tier, and the token-rate ceiling it implies Four bandwidth tiers on a shared scale. Phone NAND flash at about 4 gigabytes per second implies a ceiling near 2.7 tokens per second for a 3-billion-parameter model at 4-bit. Phone LPDDR5 at about 50 gigabytes per second implies about 33 tokens per second. Apple M4 unified memory at 120 gigabytes per second implies about 80 tokens per second. Apple M4 Max at up to 546 gigabytes per second implies about 364 tokens per second. The ceilings are upper bounds from bandwidth divided by 1.5 gigabytes of weights, ignoring KV cache and all overheads. MEMORY BANDWIDTH · AND THE TOKEN CEILING FOR A 3B MODEL AT 4-BIT (1.5 GB OF WEIGHTS) phone NAND flash phone LPDDR5 Apple M4 Apple M4 Max ~4 GB/s ~50 GB/s 120 GB/s 410–546 GB/s ~4 GB/s NAND flash — Kim, Han & Kim, ICCAD 2025 ~50 GB/s LPDDR5 — Kim, Han & Kim, ICCAD 2025 120 GB/s — Apple M4, Apple Newsroom, Oct 2024 546 GB/s — Apple M4 Max (full configuration), Apple Newsroom, Oct 2024 ≈ 2.7 tok/s ceiling ≈ 33 tok/s ≈ 80 tok/s ≈ up to 364 tok/s ceilings are bandwidth ÷ weight bytes — upper bounds only; KV cache, activations and kernel overhead all push real rates lower flash and LPDDR5 figures from Kim, Han & Kim (ICCAD 2025); Apple figures from Apple’s own product announcements
The arithmetic that governs on-device generation: tokens per second is capped by bandwidth divided by the bytes you must read per token. Compute does not appear in it.

This is why quantization is not an optimization. It is the entry fee. Halving the bit-width halves the bytes moved per token and therefore roughly doubles the ceiling. It is the only lever with that property.

How far down the bits go

Dettmers and Zettlemoyer established the shape empirically in The case for 4-bit precision, across more than 35,000 zero-shot experiments from 19M to 176B parameters: 4-bit gives the best accuracy-per-bit trade-off, and performance degrades below it, consistently across scales.

The peer-reviewed picture since has sharpened one distinction that matters enormously in practice — the difference between quantizing weights only and quantizing activations too. A systematic review of 52 post-training quantization studies by Czakó, Kertész and Szénási (IEEE Access, 2025) finds 8-bit weights-and-activations essentially free against FP16, and 4-bit weight-only routine. Push activations to 4 bits as well and the same group’s measurements (IEEE SMC, 2025) show LLaMA-2 7B falling from 69.6% average zero-shot accuracy to 55.9–59.8%, with WikiText-2 perplexity going from 5.47 to 7.51–8.33. LLaMA-3.1 8B drops from 73.1% to 60.7–62.9%. Mistral 7B, more gracefully, 73.1% to 66.9–67.5%.

Average zero-shot accuracy at FP16 versus 4-bit weights-and-activations Three models compared at full precision and at 4-bit weight and activation quantization. LLaMA-2 7B falls from 69.6 percent to a range of 55.9 to 59.8 percent. LLaMA-3.1 8B falls from 73.1 percent to 60.7 to 62.9 percent. Mistral 7B falls from 73.1 percent to 66.9 to 67.5 percent. A footnote records that at 3-bit weights and activations, LLaMA-1 7B collapses from 62.2 percent to roughly 35 to 36 percent, with perplexity rising from 6.4 into the tens of thousands. AVG ZERO-SHOT ACCURACY · ARC/HELLASWAG/LAMBADA/PIQA/WINOGRANDE · CZAKÓ ET AL., IEEE SMC 2025 LLaMA-2 7B LLaMA-3.1 8B Mistral 7B FP16 W4A4 FP16 W4A4 FP16 W4A4 69.6% — LLaMA-2 7B at FP16, Czakó et al., IEEE SMC 2025 59.8% — LLaMA-2 7B at W4A4, best of the reported range 73.1% — LLaMA-3.1 8B at FP16 62.9% — LLaMA-3.1 8B at W4A4, best of the reported range 73.1% — Mistral 7B at FP16 67.5% — Mistral 7B at W4A4, best of the reported range 69.6% 55.9–59.8% 73.1% 60.7–62.9% 73.1% 66.9–67.5% bars show the best end of each reported W4A4 range; the low end reflects naive outlier handling one step further down is a cliff, not a slope: at W3A3, LLaMA-1 7B falls from 62.2% to ~35–36% and perplexity rises from 6.4 into the tens of thousands (Xu et al., IEEE CloudCom 2025) — error correction recovers only part of it
Weights-only 4-bit is cheap. Activations at 4 bits cost ten to fourteen points. Three bits is not a further step down — it is a floor giving way.

The step below is not a step. Xu and colleagues (IEEE CloudCom, 2025) report LLaMA-1 7B at W3A3 collapsing from 62.2% accuracy and 6.4 perplexity to roughly 35–36% accuracy and perplexity in the range of 19,000–30,000. Their own low-rank error-correction scheme recovers perplexity only to about 47–76 — better by three orders of magnitude, still unusable. The mechanism the review identifies is specific: activation outliers exceeding a thousand times the median hidden-state magnitude inflate the quantization step so much that ordinary values underflow to zero.

So the working default is 4-bit weight-only, which is close to free, and 4-bit activations is a deliberate trade carrying a ten-point tag. Below that, post-training quantization stops being the right tool at all.

The same four bits, ten times the energy

Here is the finding I did not expect, and the one with the most direct engineering consequence. Rajput and Sharma (IEEE ICSA-C, 2024) quantized LLaMA-2 7B to 4 bits five different ways and measured both quality and energy. Perplexity varied moderately — 5.96 for GGUF, 6.02 AWQ, 6.09 GPTQ, 7.54 GGML, 7.90 BitsAndBytes. Energy did not vary moderately. The same benchmark cost 308–318 mWh under GGML/GGUF versus 528 for BitsAndBytes, 809 for AWQ, and 1,123 for GPTQ. Throughput ranged from 24–51 tokens/second at the GPTQ/AWQ end to 290–342 at the GGML/GGUF end. Tokens per milliwatt-hour spanned 0.37 to 3.42 — roughly tenfold, at constant bit-width.

Five 4-bit runtimes on the same model: perplexity versus energy Five quantization stacks applied to LLaMA-2 7B at 4-bit. GGUF has WikiText-2 perplexity 5.96 and consumed 318 milliwatt-hours. AWQ 6.02 perplexity and 809 milliwatt-hours. GPTQ 6.09 perplexity and 1123 milliwatt-hours. GGML 7.54 perplexity and 308 milliwatt-hours. BitsAndBytes 7.90 perplexity and 528 milliwatt-hours. Perplexity varies by about a third across the five; energy varies by about a factor of 3.6, and tokens per milliwatt-hour by about tenfold. LLAMA-2 7B AT 4-BIT · FIVE RUNTIMES · RAJPUT & SHARMA, IEEE ICSA-C 2024 WIKITEXT-2 PERPLEXITY (LOWER BETTER) ENERGY FOR THE BENCHMARK, MWH GGUF AWQ GPTQ GGML BitsAndBytes 5.96 perplexity — GGUF 6.02 perplexity — AWQ 6.09 perplexity — GPTQ 7.54 perplexity — GGML 7.90 perplexity — BitsAndBytes 318 mWh — GGUF 809 mWh — AWQ 1123 mWh — GPTQ 308 mWh — GGML 528 mWh — BitsAndBytes 5.96 6.02 6.09 7.54 7.90 318 809 1123 308 528 identical precision, identical model — tokens per milliwatt-hour still ranges 0.37 to 3.42 across the five stacks bit-width sets the memory traffic; the kernel and its hardware targeting set what that traffic costs
“Four-bit” is not a specification of anything you care about. The runtime, not the bit-width, decides the energy bill.

I would treat the absolute milliwatt-hours as specific to that harness and hardware. The ratio is the durable finding: bit-width sets how many bytes must move, but the kernel decides what moving them costs. Anyone choosing a quantization format on perplexity tables alone is optimizing the smaller of the two variances. Pick the runtime first, then the bit-width.

Per-token energy in the wild is worse-characterized than it should be. The cleanest phone measurement I found is PowerInfer-2 (arXiv:2406.06282) at 0.257 J/token for Bamboo-7B on a OnePlus 12 — though that is the authors’ own tuned configuration, reported as beating QNN and llama.cpp on the same handset by 31% and 62%, so read it as a good-case result rather than a representative one. On an A100, Nik, Riegler and Halvorsen (Scientific Reports, 2025) metered Qwen2.5-7B at 0.016–0.028 Wh per 100-token query, and found decoding strategy alone changing energy by up to 2× at unchanged output quality. Meanwhile a TDP-derived CPU study (Gaddam & Kulkarni, AIxSET 2024) puts small-model inference at 160–590 J/token — three orders of magnitude above the metered figures, because it estimates from CPU time × thermal design power rather than measuring the wall. Both can be honestly reported; they are not measuring the same thing. Treat any unattributed joules-per-token number as decorative.

What small models are actually good at

The capability question has a cleaner answer than the discourse suggests. Garg and colleagues (IEEE FLLM, 2025) fine-tuned models at 250M parameters or below and benchmarked them against Mistral-7B, Qwen3-235B-A22B and DeepSeek-R1-671B. The small models matched or beat all three on four of six tasks — sentiment analysis 95–96% against 68–94%, natural language inference 88.0–88.4% against 56–80%, code summarization BLEU 24–26 against 4–19, open-ended content creation at BERTScore ≈0.79 against 0.80–0.81 — at inference emissions the authors put as much as 13,000× lower per query. On the other two they were not close: HumanEval pass@1 of 12.8% against 36–66%, and reasoning accuracy 47% against 64–69%.

Where sub-250M fine-tuned models match frontier models, and where they do not Two groups of tasks. Small models match or beat frontier models on sentiment analysis at 95 to 96 percent versus 68 to 94 percent, natural language inference at 88.0 to 88.4 percent versus 56 to 80 percent, code summarization at BLEU 24 to 26 versus 4 to 19, and open-ended content creation at BERTScore about 0.79 versus 0.80 to 0.81. Small models fall far behind on code generation, HumanEval pass at 1, at 12.8 percent versus 36 to 66 percent, and on chain-of-thought reasoning at 47 percent versus 64 to 69 percent. ≤250M FINE-TUNED VS MISTRAL-7B / QWEN3-235B / DEEPSEEK-R1-671B · GARG ET AL., IEEE FLLM 2025 SMALL MODEL MATCHES OR WINS SMALL MODEL LOSES BADLY sentiment analysis natural language inference code summarization content creation code generation chain-of-thought reasoning 95–96% vs 68–94% 88.0–88.4% vs 56–80% BLEU 24–26 vs 4–19 BERTScore 0.79 vs 0.80–0.81 HumanEval pass@1 accuracy 12.8% vs 36–66% 47% vs 64–69% open-ended synthesis stays scale-dependent the pattern: closed-form and checkable tasks transfer to small models; open-ended generation does not authors report inference emissions up to ~13,000× lower per query for the small models
The dividing line is not difficulty. It is whether the answer is short and checkable. Classification transfers down; synthesis does not.

The same boundary shows up in self-training. Costello and colleagues’ Think-Prune-Train (IEEE ICLAD, 2025) lifts Gemma2-2B on GSM8K from 41.9% to 57.6%, and Gemma2-9B to 82% — above LLaMA-3.1-70B’s 78% on that benchmark. On CodeContests the same procedure moves 2B from 0.90% to 1.14%. Gains concentrate exactly where ground truth is machine-checkable, which is a statement about the training signal, not about the models.

That gives a scoping rule with evidence under it: put classification, extraction, rewriting and summarization on-device, and route open-ended synthesis somewhere else. It is the same split I argued for more generally about industrial-grade agents, and it is what the shipping products already do.

Discount the benchmarks — asymmetrically

Small-model scores need a larger haircut than large-model scores, and there is now direct evidence for that asymmetry. Masry, Ahmed and Mahbub (IEEE MLSP, 2025) perturbed vision-language benchmarks and found the 2–4B open models — Qwen2-VL-2B, Phi-3.5-Vision-4B — the most contaminated in the pool: about 64% contamination on DocVQA and 51% on ChartQA under question modification, still emitting the memorized answer after the question had been altered so that answer was wrong, and still answering correctly when the image was swapped for an unrelated one. Closed models scored 13–46%.

On the text side, the GSM1k study (Zhang et al., arXiv:2405.00332, NeurIPS 2024) built a fresh GSM8k-style benchmark and found accuracy drops of up to 8%, naming the Phi and Mistral families as consistent overfitters, with a Spearman’s r² of 0.36 between a model’s tendency to regurgitate a GSM8k item verbatim and its GSM8k-to-GSM1k gap. Alongside that, the Phi-4 technical report (arXiv:2412.08905) documents decontamination by 13-gram and 7-gram string matching, while Yang and colleagues (arXiv:2311.04850) show n-gram decontamination is defeated by paraphrasing the test data. Those two facts sit in tension; I am not claiming the second invalidates the first, only that the standard method has a known bypass and vendors still use it. My earlier piece on measuring progress toward AGI covers why contaminated instruments are the field’s most under-priced measurement error.

What actually ships

Apple’s 2025 foundation models report is the most specific vendor disclosure available: roughly 3B parameters on-device, decoder weights at 2 bits per weight via quantization-aware training, 4-bit embeddings, 8-bit KV cache, and KV-cache sharing across blocks that Apple claims cuts KV memory by 37.5%. Two bits per weight is below where post-training quantization collapses, and that is the whole point of doing it during training rather than after. It is also the answer to the question I left open earlier: below 3 bits, quantize in training or not at all. Anything harder routes to a larger server model under Private Cloud Compute; Apple does not publish the routing rule. Google’s Gemini 1.0 report specified Nano-1 at 1.8B and Nano-2 at 3.25B, both 4-bit; current-generation figures I could not pin to a primary source, so I won’t quote one. Microsoft has disclosed neither parameter count nor bit-width for Phi Silica. Qualcomm reports over 350 tokens/second prefill for Llama 3.2 1B/3B on a Galaxy S24+ — a vendor benchmark, and prefill is the compute-bound phase, not the bandwidth-bound one.

Which brings this back to the spec sheet. AMD rates XDNA 2 at 50 TOPS; Qualcomm and Intel advertise roughly 45 and 48 for their current NPUs. Those are real numbers about the wrong resource. They describe the prefill phase — reading your prompt — and say nothing about the decode phase, which is where the user waits. Measured on a mid-range phone without a dedicated NPU, Joshi and colleagues (IEEE ICETI4T, 2025) got 3.5–8.5 tokens/second from LLaMA 3.2 1B and 3.9–15.2 from Gemma2 2B under Ollama with Q4 GGUF — well under the ceiling a 50 GB/s bus would imply, though the review does not report that handset’s actual bandwidth, so I would not compute a precise efficiency from it.

None of this is new

In 1989 Intel shipped the 80170NX, the ETANN — Electrically Trainable Analog Neural Network — with 64 analog neurons and 10,240 floating-gate synapses on a 1µm CHMOS-III process, computing dot products in the analog domain at a reported ~2,000 million connections per second. Dedicated local neural silicon, no host CPU in the inner loop, thirty-five years before “NPU” reached a laptop spec sheet. It was characterized in SPIE Proceedings 1965 (1993) and independently evaluated in Fermilab TM-1798. It failed commercially — training was awkward, precision poor, and the data was two decades away. The idea was fine. The memory system it would have needed did not exist, which is, more or less, still the problem.


References

  1. Gholami et al. (2024). AI and Memory Wall. IEEE Micro.
  2. Kim, Han & Kim. (2025). LLM-on-the-Palm. ICCAD 2025.
  3. Pope et al. (2023). Efficiently Scaling Transformer Inference. MLSys 2023.
  4. Dettmers & Zettlemoyer. The Case for 4-Bit Precision. arXiv:2212.09720.
  5. Czakó, Kertész & Szénási. (2025). IEEE Access.
  6. Czakó, Kertész & Szénási. (2025). IEEE SMC.
  7. Xu et al. (2025). IEEE CloudCom.
  8. Rajput & Sharma. (2024). IEEE ICSA-C.
  9. Xue et al. PowerInfer-2. arXiv:2406.06282.
  10. Nik, Riegler & Halvorsen. (2025). Scientific Reports.
  11. Gaddam & Kulkarni. (2024). AIxSET.
  12. Garg et al. (2025). IEEE FLLM.
  13. Costello et al. Think-Prune-Train. IEEE ICLAD 2025.
  14. Masry, Ahmed & Mahbub. (2025). IEEE MLSP.
  15. Zhang et al. GSM1k study. arXiv:2405.00332, NeurIPS 2024.
  16. Yang et al. arXiv:2311.04850.
  17. Abdin et al. Phi-4 technical report. arXiv:2412.08905.
  18. Apple. 2025 foundation models report. arXiv:2507.13575.
  19. Joshi et al. (2025). IEEE ICETI4T.
  20. Calvin & Rogers. SPIE Proceedings 1965 (1993).
  21. Fermilab. TM-1798.