r/LocalLLaMA • u/saltexx • 2h ago
I Built A Thing We open-sourced Paddock, our Rust/C++ inference engine with its own CUDA kernels (MIT/Apache-2.0)
I'm one of the developers. We said in August it would go open source in September and it did last night. MIT or Apache-2.0, pick one. The repo you see is our internal repo, kernels included, so from now on everything happens in public.
It's an inference engine in Rust and C++ with our own CUDA kernels. One binary with OpenAI and Anthropic style APIs, loads GGUF and safetensors. We run about 300B tokens a year through it at work.
Some numbers: Qwen3.8-27B FP8 on one RTX PRO 6000, spec decoding off on every engine:
- vs vLLM faster in 13 of 13 cells, 1.02x to 1.19x (so not huge)
- vs SGLang faster in 10 of 13, behind in 2, level in 1
- vs llama.cpp Q8_0 faster in 13 of 13, 1.5x to 37x
- 32 clients at 1024 in / 1024 out: 1062 tok/s, vLLM 958, SGLang 844
Full board with the losses: https://truespar.com/paddock/benchmarks/qwen38-27b
What it does not do yet: CUDA only, Windows and Linux. Validated on Blackwell (5090, RTX PRO 4500/5000/6000, B200) and Ampere (an A6000 was the bring-up card, 30-series works). Ada kernels ship but nobody has run a board on them so the engine refuses to start unless you set PADDOCK_UNVALIDATED_ARCH=1. Hopper and A100 kernels are in the tree without a board. No Mac, no ROCm, no Vulkan. One model per GPU, no tensor parallel.
https://github.com/truespar/paddock
Thankful for any help and input!
3
u/takoulseum 2h ago
One model per gpu means the model must fit in a single gpu as no tp so pipeline parallel not supported too?
1
u/AI_spell 19m ago
One thing I’d watch in a custom engine is KV-cache allocation and attention behavior when the context crosses a block boundary. A benchmark can look great at 4k then hit a latency or OOM cliff at 8k or 16k, especially with variable batch sizes, so reporting max context along with batch and concurrency would be useful.
1
u/BodyPhysical 2h ago
would suggest to please build release binaries which could be zipped and downloaded through the github repo
-4
u/JollyJoker3 1h ago
Asked Claude if it's worth trying, it essentially said no;
The llama.cpp column is broken, not slow. 16 s to first token at one client on a PRO 6000 for a 1k prompt is not a plausible number for llama.cpp. They ran -c 262144 -np 32, which splits into 8k slots but forces an enormous KV allocation up front. The 37.5x claim rests on that column, and I wouldn't trust it.
1
2
u/saltexx 1h ago
Flags and the GGUF are on the board page, -c 262144 -np 32 is 32 slots of 8k like the vLLM run, KV alloc is at startup. Post the flags you'd use and I'll rerun it.
1
u/JollyJoker3 0m ago
No clue what flags to use and apparently what I said was a Claude hallucination. Something is broken though. Both "Short chat" and "Long generation" take 128 tokens in. Time to first token is 1.4s for one, 17s for the other.
5
u/Human-Gas-1288 2h ago
does this works on Windows?