CPU vs Vulkan on 2014 hardware: GGUF 6.6x slower than PyTorch on a non-AVX2 CPU, but 1.8-5.4x faster on an old iGPU

#3
by samy232381s - opened

Hi Mohammed ๐Ÿ‘‹

Thanks for the GGUF package โ€” one self-contained 1.35 GB file, no Python, and it produced correct Egyptian Arabic on the very first try on a 2014 laptop. I benchmarked it against the PyTorch path on the same machine and got results at both extremes, so I hope the numbers are useful.

Setup โ€” AMD A8 PRO-7600B R7 (4 cores, 2014, no AVX2/FMA, no CUDA), 14.9 GB RAM, Windows 10. Same Egyptian-Arabic text (43 chars), same 6.0 s reference clip + its transcript, --seed 42, --threads 4.

Runtime steps wall time RTF
PyTorch voicetut_tts (fp32, MKL/oneDNN) 8 115โ€“121 s โ€”
PyTorch voicetut_tts 16 359 s โ€”
audio.cpp v0.9.2 CPU (voicetut-tts-q8_0.gguf) 8 798.9 s 208.7
audio.cpp v0.9.2 Vulkan (Radeon R7 iGPU, UMA) 8 66.6 s 8.3
audio.cpp v0.9.2 Vulkan 16 66.9 s 15.6

Two observations that surprised me:

  • On the CPU path, ggml is 6.6x slower than Python/MKL here (RTF 208.7). My guess: the fast kernels assume AVX2/FMA and q8_0 dequantization on plain SSE is the bottleneck.
  • On the same machine the Vulkan build is 1.8x faster than PyTorch at 8 steps and 5.4x faster at 16 steps โ€” even though the driver reports fp16: 0, int dot: 0, matrix cores: none. Really nice work on that backend.

Questions

  1. Is AVX2 effectively required for the CPU path to beat the Python/MKL path? If so, would you consider a note in the README (e.g. "CPU-only without AVX2: prefer the Python package")? I'm happy to run more tests (fp32 GGUF, thread counts, 1/4/8 steps) and report back.
  2. My CLI wall time (~67 s) looks like it includes ~30 s of model load. Would audiocpp_server with a resident model bring per-request time to ~35 s? I'm about to measure that too.

(And quietly still hoping for the Cairo-TTS weights ๐Ÿ™‚ โ€” my CPU-only environment has been ready since Oct 14; I also asked in the other discussion.)

Thanks again โ€” this package is the first thing that made TTS feel fast on this laptop.

โ€” Sami (16), Egypt

Short follow-up, @mohammedaly22 โ€” one new number and one question, no essay.

Resident audio.cpp server, Vulkan, 32 steps, same A8: a 2.4 s clip in 86.4 s wall (RTF around 36). Consistent with the 8- and 16-step numbers above, so no regression โ€” just confirming it scales with steps.

Question: is a non-AVX2 (SSE-only) CPU path on the roadmap, or is CPU-without-AVX2 out of scope? If it is out of scope, feel free to close this and I will leave it here. And if GitHub issues are a better place for reports like this, say so and I will move there.

โ€” Sami

ุงู„ุง ู†ุณุชุทูŠุน ุชุญู…ูŠู„ ู…ูˆุฏู„ cairo tts

Sign up or log in to comment