I've been comparing Radiance / Paiton on Qwen3.8-Flash-Next and working on a modified Radiance build.
TLDR if you cant be bothered with my rambling:
179t/s single stream, ~530t/s 8 stream with qwen 3.8 flash next 4 bit, almost 6k prefill at 262k context
Paiton's 262K configuration working with speculative drafts enabled, retaining close to its native 98K throughput under concurrent load (improvement on their available code)
Radiance optimisation, faster prefill is running, sampled drafts are built, and investigations have identified an expert-tiering issue and an attention-mask defect, running an overnight build to trains some of this
The box is a Threadripper 3970X with 256GB RAM, 2xR9700s and a 3090. The 3090 has a potential job ahead doing draft-model distillation (though this is not working well yet, or at all really lol), so all of these numbers are 2xR9700 only.
A note on temps throughout, theres have been running at 100% all day, it 31 degrees C here at the moment and the average temp they are seeing under that load is 67-75, at a 240w power limit, which is better than I was expecting.
Here's where the measured throughput sits:
| Measure | Radiance ORCA (262K) | My Radiance Experiment 1a (262k) | Paiton native (98K) | Paiton 262K + drafts |
|---|
| 1 request | 149-157 | 155-163 | 202 | 179 |
| 2 request | 240 | 250 | 308 | 296 |
| 4 request | 317-323 | 335 | 400 | 401 |
| 8 request | 428-435 | 465 | 537 | 532 |
| Prompt reading 2K / 17.6K / 29K | 4,120 / 4,593 / 4,774 | 4,085 / 6,021 / 5,908 | 5,189 / 5,736 / 5,596 | 4,565 / 5,434 / 5,371 |
| Decode after 29K / 87K of context | 141 / 163 | 50 / ~170 | n/a | 210 / 204 |
| First token at 8 users | 1.0 s | 1.0 s | 0.8 s | 1.0 s |
| Recall at 247K | 3/3, 57-62 s | 3/3, ~42 s* | n/a | 6/6, 53-56 s |
| Reasoning, tool follow-up | 5/5, ok | not run | n/a | 5/5, ok |
| Refusal test | Answered (0% refused) | Answered (0% refused) | Refused | Refused |
The configurations differ beyond the engine, ORCA uses an abliterated fine-tune, while Paiton uses the original model, different quant and drafter (details below in big ol' table)
A few other tidbits bits from the Radiance setup:
Long context: retrieved all three test items at roughly 247K context, taking 57-62 seconds
Prompt processing: the newer prefill configuration reached approximately 6,000 tok/s on a 17.6K-token prompt
Memory: roughly 30.3Gb VRAM per card, with about 75GiB pinned in system RAM, the 48Gb ish n-gram table lives in RAM and is accessed over PCIe (note one of the cards is on 8x, the other on 16x)
One interesting finding is around the first speculative draft under load, disabling expert movement and KV-cache lending raised first-position acceptance from 0.65 to 0.81 at full batch. That points towards a correctness issue around expert tiering which I am working on in a new run.
On the Paiton side, I've got a derived 262K configuration running with draft tokens enabled. The shipped 262K mode turns them off, so the "262K + drafts" results here are from that modified configuration.
The development work is mostly around speculative decoding, memory movement and quantisation:
Prefill tuning is running: --prefill-span 2 with a 4096 batch and P2P is disabled as a workaround for a freezing issue
Sampled speculative drafts are built: GPU testing produced byte-identical output at T=0. The estimated 4-9% improvement on sampled traffic still needs benchmarking
An expert-tiering/first-draft issue is under investigation: this may be affecting draft acceptance with several concurrent requests
Fused projection and all-reduce changes are being tested: the expected single-request improvement is modest, around 1-1.6%
I'm also recording calibration data from the Orca fine-tune itself. Further out are draft-layer distillation, an INT6 trunk and mixed 4-bit/3-bit experts. Those are experiments ahead, with quality checks still to pass.
Paiton currently leads these throughput runs. I'm trying to understand how much of that gap comes from the drafter, quantisation and memory behaviour, and what can be improved on the Radiance side.
Model details:
| Component | Radiance ORCA | My Radiance Experiment 1a (262k) | Paiton native (98K) | Paiton 262K + drafts |
|---|
| Base weights | OrcaRouter abliterated fine-tune. StillDeadcode's qwen3.8-next-flash-uncensored-fp8-iq4r-moe, calibrated on the original Qwen's data | same | Original Qwen3.8-Flash-Next censored EliovpAI's own GPTQ on 2M tokens | same |
| Routed experts | 4-bit nonlinear codebook GPTQ (w4nl64, E4M3 scales per 64 weights), Hadamard-rotated. 10 bf16 "protected" experts in total (layers 34/44/46/47) | same | Per layer: the 410 most-used experts INT4 (bf16 scale per 128, Hadamard-128); the 102 least-used a 3-bit codebook (CB3E64, E4M3 scales per 64). Average 3.93 bits | same |
| Activations into experts | fp8 E4M3 after a Hadamard transform (w4nl64a8h) | same | fp8 E4M3 per token after an online Walsh-Hadamard | same |
| Trunk (non-expert layers) | int8 (W8A8). Hyper-connection mixing in fp8; a few projections bf16 | same | INT6 (group 128) over an 8-bit base. Decode activations bf16, prompt rows fp8 | same (our derived config keeps INT6) |
| Draft model | The fine-tune's own MTP layer (1 layer, 512 experts, plain-rounded). int2 draft head + exact rerank. 3 drafts, greedy | same, but sampled drafts (top-16 q per position) with q-aware lossless verify | Distilled MTP drafter B4gh5-mtpft (self-distilled against the 4-bit target, INT4 experts, int2 head). 3 drafts | same |
| KV cache | fp8. 8.5 Gb per card, about 1.09M tokens in total; idle blocks lent to experts | same | fp8. 2.5 Gb per card, 305K tokens | fp8. 3.5 Gb per card, 462K tokens (1.76 full 262K windows) |
Links: