github ggml-org/llama.cpp b8099

2 hours ago
Details

llamafile: powerpc: add FP16 MMA path for Q4/Q8 matmul (#19709)

Avoid xvi8ger4pp signed→unsigned bias correction by dequantizing Q4/Q8
inputs to FP16 and using FP16×FP16→FP32 MMA. This removes
post-processing overhead and improves performance.

Performance Impact:
1.5 ~ 2x improvement in PP_Speed for Q4 and Q8 Models,
measured with llama-bench and llama-batched-bench.
Q8 Model: granite-4.0-h-micro-Q8_0.gguf (from huggingface)
Q4 Model: Meta-Llama3-8b Q4 model (generated with llama-quantize from
f32 model)

llama-bench Q8 Model Results:
model                                size     params backend    threads             test Base t/s Patch t/s
granitehybrid 3B Q8_0            3.16 GiB     3.19 B CPU              10             pp8         64.48 ± 4.72         73.99 ± 0.27
granitehybrid 3B Q8_0            3.16 GiB     3.19 B CPU              10             pp16         80.11 ± 0.32         112.53 ± 0.40
granitehybrid 3B Q8_0            3.16 GiB     3.19 B CPU              10             pp32         89.10 ± 0.27         152.95 ± 0.68
granitehybrid 3B Q8_0            3.16 GiB     3.19 B CPU              10             pp64         93.65 ± 0.25         187.83 ± 0.83
granitehybrid 3B Q8_0            3.16 GiB     3.19 B CPU              10           pp128         99.93 ± 0.02         201.32 ± 0.11
granitehybrid 3B Q8_0            3.16 GiB     3.19 B CPU              10           pp256         102.32 ± 0.40         208.32 ± 0.41
granitehybrid 3B Q8_0            3.16 GiB     3.19 B CPU              10           pp512         103.42 ± 0.40         209.98 ± 0.14
granitehybrid 3B Q8_0            3.16 GiB     3.19 B CPU              10           tg128         20.35 ± 0.01         19.57 ± 0.01

llama-bench Q4 Model Results:
model                                size     params backend    threads             test               Base    t/s                Patch   t/s
llama 8B Q4_0                    4.33 GiB     8.03 B CPU              10             pp8         34.77 ± 0.10         41.23 ± 0.08
llama 8B Q4_0                    4.33 GiB     8.03 B CPU              10             pp16         40.81 ± 0.04         64.55 ± 0.15
llama 8B Q4_0                    4.33 GiB     8.03 B CPU              10             pp32         44.65 ± 0.05         90.84 ± 0.22
llama 8B Q4_0                    4.33 GiB     8.03 B CPU              10             pp64         47.49 ± 0.03         114.39 ± 0.11
llama 8B Q4_0                    4.33 GiB     8.03 B CPU              10           pp128         49.29 ± 0.24         120.13 ± 0.19
llama 8B Q4_0                    4.33 GiB     8.03 B CPU              10           pp256         49.77 ± 0.23         121.51 ± 0.11
llama 8B Q4_0                    4.33 GiB     8.03 B CPU              10           pp512         49.89 ± 0.23         117.52 ± 0.10
llama 8B Q4_0                    4.33 GiB     8.03 B CPU              10           tg128         13.40 ± 0.01         13.37 ± 0.00

Llama perplexity Results:

Model Base Final PPL Estimate Patch Final PPL Estimate
granite-4.0-h-micro-Q8_0 1.3862 +/- 0.04424 1.3868 +/- 0.04432
Meta-Llama3-8b Q4 1.3801 +/- 0.04116 1.3803 +/- 0.04116

Signed-off-by: Shalini.Salomi.Bodapati Shalini.Salomi.Bodapati@ibm.com

macOS/iOS:

Linux:

Windows:

openEuler:

Don't miss a new llama.cpp release

NewReleases is sending notifications on new releases.