Skip to content

Commit a1230c8

Browse files
TheTomclaude
andcommitted
docs: block size is the bottleneck — q4_0 at block 32 = 100% of q8_0
Diagnostic benchmark proves the 26% gap is entirely from block size 128. q4_0 (block 32, 4-bit quantization) runs at 84.2 tok/s = identical to q8_0. Next: turbo3 with block size 32. Co-Authored-By: tturney@psyguard.ai Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 18f4241 commit a1230c8

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

docs/turbo-speed-investigation.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,3 +314,23 @@ Everyone else is CPU-only or CUDA. Our Metal kernels are unique.
314314
|-------|------|-----------------|-------|-------------|
315315
| MoE 35B | 85.5 tok/s | **62.2 tok/s** | **73%** | **4.9×** |
316316
| Qwopus 27B | 17.6 tok/s | **15.5 tok/s** | **88%** | **4.9×** |
317+
318+
### 2026-03-25: Block size diagnostic — THE ANSWER
319+
320+
| Cache | Block | Gen tok/s | vs q8_0 |
321+
|-------|-------|-----------|---------|
322+
| q8_0 | 32 | 84.1 | 1.00× |
323+
| q4_0 | 32 | 84.2 | 1.00× |
324+
| q4_1 | 32 | 84.6 | 1.01× |
325+
| q5_0 | 32 | 80.6 | 0.96× |
326+
| turbo3 | 128 | 62.5 | 0.74× |
327+
| turbo4 | 128 | 42.8 | 0.51× |
328+
329+
CONCLUSION: q4_0 (block 32, 4-bit) runs at 100% of q8_0 speed.
330+
The 26% gap on turbo3 is ENTIRELY from block size 128.
331+
The quantization math (centroid lookup) adds zero overhead at block 32.
332+
333+
Next: implement block size 32 variant of turbo3.
334+
Challenge: rotation operates on head_dim=128, but blocks are 32.
335+
Solution: quantize 128 elements with rotation, store as 4×32 blocks.
336+
Dequant reads 32-element blocks without rotation (pre-rotate-queries).

0 commit comments

Comments
 (0)