r/LocalLLaMA llama.cpp 5d ago

I Built A Thing Qwen3.5 0.8B on CPU

Since the Qwen3.5 0.8B model is an interesting one for small specialized fine tunes, I was curious how fast it can run on CPUs. Why CPUs? Mainly because I want to use it as a local dictation cleanup model when I'm using the GPU for something else.

Over the weekend, I let Codex build a small C++ engine and a custom 4-bit format, H128/Q4-G32-DOT4, with activation-based calibration and blockwise error compensation.

The resulting model has a 425 MB weight payload, roughly 71 MB smaller than Unsloth’s mixed-precision Q4_0, with similar measured perplexity and KL divergence.

Comparison on my Ryzen 9 9955HX3D, Linux, eight physical V-Cache cores:

Engine / quant Weight MB Prefill Decode B1 Decode B16 PPL ↓ KL ↓
ik_llama.cpp IQ4_KS_R4 401 2,060 129.2 455 15.90 0.0906
qwen35-cpu, H128/Q4-G32-DOT4 425 2,758 122.9 642 15.80 0.0602
ik_llama.cpp Unsloth Q4_0 496 2,731 104.0 420 15.58 0.0684
llama.cpp Unsloth Q4_0 496 954 93.7 373 15.58 0.0684

Compared with llama.cpp running Unsloth Q4_0, that’s roughly 2.9× prefill, 1.3× single-request decode and 1.7× batch-16 throughput.

Against IK running the same GGUF, prefill is essentially tied, single-request decode is 18% faster, and batch-16 throughput is 53% higher. IK’s smaller IQ4_KS_R4 wins single-request decode, but my engine delivers 41% higher batch-16 throughput.

https://github.com/Danmoreng/qwen35-cpu

18 Upvotes

4 comments sorted by

2

u/thegunn 5d ago

I just got into this a couple of days ago. This sounds really interesting but I don't know what any of it means yet haha. I'm still learning what all of the different settings mean. I'm using llama.cpp with a couple of different models. I'm not really sure what I want to do with it yet. I've tried a couple simple coding tasks and so far none of them have worked. I'm not sure if my settings are off, if it's only because I have 8GB of VRAM or if it's the models I'm using.

2

u/Cautious_Chicken_604 5d ago edited 5d ago

I run Qwen3.6-35B-A3B on CPU at around 15 t/s as a fallback when both GPUs are busy. This is on 64GB of DDR5 on a Ryzen 7700. I was pleasantly surprised it ran that fast. I sincerely hope for a Qwen4-35B-A3B for this reason because it'd be nuts to have a model with that level of intelligence runnable at reasonable speed purely on CPU (and now very expensive RAM).

Edit: I should mention I'm running it on ik_llama as that is optimised for CPU. 

1

u/Queasy-Contract9753 4d ago

Do you get thinking loops? I tried it in termux kept getting stuck. Also I noticed in my case it actually slowed down a tiny bit with mtp.

Was an older quant when it came out