expXa

Research

expXa vs PXA 4 on Qwen3.6-35B-A3B Q6_K

How do the engines compare on the fully GPU-resident 35B model, and how much does multi-token prediction change the result?

Finding

With depth-one MTP, the median 4,096-token request took 2.252 s on expXa and 2.272 s on PXA 4. At 65,536 tokens, the medians were 19.545 s and 22.016 s.

At 65,536 input tokens with MTP, expXa’s median request time was 11.2% lower. MTP increased decode throughput but slightly increased total request time at that length in both engines; its benefit depends on the balance of input and output work.

This comparison changes no engine configuration. The tables show the observed medians and ranges; three repetitions per configuration support a descriptive comparison, not a statistical claim of a universal winner.

Matched depth-one MTP

Three scored runs per engine and input length, with exactly 128 generated tokens. Request time includes the whole HTTP request; native prefill and decode rates describe the engine’s timed phases.

EngineMTPInput tokensPrefill tok/sDecode tok/sRequest sRange s
expXaDepth 15121,905.1109.11.4531.440–1.493
PXA 4.0.1Depth 15121,908.3102.71.5721.566–1.582
expXaDepth 14,0964,434.3104.32.2522.224–2.256
PXA 4.0.1Depth 14,0964,419.299.62.2722.267–2.293
expXaDepth 116,3844,730.799.74.8374.817–4.850
PXA 4.0.1Depth 116,3844,573.391.55.0495.048–5.055
expXaDepth 165,5363,654.286.719.54519.531–19.576
PXA 4.0.1Depth 165,5363,232.679.122.01622.002–22.043

Matched runs with MTP disabled

EngineMTPInput tokensPrefill tok/sDecode tok/sRequest sRange s
expXaOff5121,900.192.21.6681.662–1.706
PXA 4.0.1Off5121,953.893.01.6511.640–1.687
expXaOff4,0964,451.090.72.3802.374–2.451
PXA 4.0.1Off4,0964,429.991.82.3722.366–2.372
expXaOff16,3844,779.288.24.9394.921–5.054
PXA 4.0.1Off16,3844,638.589.15.0235.011–5.028
expXaOff65,5363,772.477.519.11519.108–19.118
PXA 4.0.1Off65,5363,328.678.921.39621.396–21.407

What MTP changes

The following compares median total request time with MTP off and on within each engine. Positive percentages mean a shorter request with MTP. Draft and acceptance counts for each request are included in the download.

Input tokensexpXa off, sexpXa on, sReductionPXA off, sPXA on, sReduction
5121.6681.45312.9%1.6511.5724.8%
4,0962.3802.2525.4%2.3722.2724.2%
16,3844.9394.8372.1%5.0235.049-0.5%
65,53619.11519.545-2.3%21.39622.016-2.9%

Correctness and recovery checks

Natural-stop arithmetic, grounding, extraction and negation checks passed 48/48 cases. Chat-formatted retrieval checks placed three edited facts throughout a roughly 65K-token archive and passed 8/8 cases. Following-request checks after cancellation passed 12/12 launch groups. These are bounded functional checks, not a general model-quality benchmark.

EngineMTPShort checks65K retrievalCancellation recovery
expXaDepth 112/122/23/3
expXaOff12/122/23/3
PXA 4.0.1Depth 112/122/23/3
PXA 4.0.1Off12/122/23/3

Method

  • Identical Q6_K weights and CPU-resident vision projector, both GPUs, equal layer split, all model layers on GPU. Context allocation 262,144; Q8_0 key/value cache; 10 generation and 10 batch threads; batch 4,096 and microbatch 1,024; one slot; 64 context checkpoints.
  • expXa uses its qualified 4×8 attention and two-token Q6_K MTP profile. PXA uses its own implementation with the same explicit depth-one MTP setting. MTP-off arms disable speculation explicitly. This measures complete builds; it does not isolate one attention kernel.
  • Matched token arrays at 512, 4,096, 16,384 and 65,536 tokens. Temperature zero, seed 42, prompt caching disabled. All five model end-of-generation tokens are suppressed for speed requests only. Natural-stop checks clear that bias.
  • Three rounds rotate the four engine/MTP configurations and prompt-length order. Every launch has an unscored 512-token warmup. Loading is excluded. The schedule is rotated, but three rounds do not fully counterbalance four configurations.
  • Every scored response must report the complete input length, no truncation and exactly 128 generated tokens. Request wall time and time to first content are measured by the same local client.
  • Other inference was fenced throughout the scored window. Other models remained loaded, so this is the same shared-memory layout for both engines. Resource reserves and unrelated process identities were monitored. The original serving configuration was restored and verified afterward.

Excluded attempts

An initial launch was refused by the runtime lock before scoring. A subsequent attempt stopped after a 4,096-token request ended at 93 output tokens despite the generic ignore-EOS option. Its entire partial arm, including the preceding 512-token run, was excluded. The final study explicitly suppressed all five end-of-generation tokens for both engines and reran the comparison.

Limits

  • One dual-V100 host, one quantization and three repetitions per configuration. Shared-host CPU and storage activity can still introduce noise.
  • Synthetic, repetitive prompts with forced output length can favor different speculative acceptance rates than conversation. Natural stopping and real workloads may change the ranking.
  • The 262K context was allocated; the longest speed prompt evaluated here was 65,536 tokens. This is not a 262K retrieval or throughput qualification.
  • Output hashes were stable across repeats within each configuration. They differed across configurations at 512 and 4,096 input tokens, and matched across all four configurations at 16,384 and 65,536 tokens. Short-input decode rates therefore include differences in the generated token sequence. Passing the short functional checks does not establish broad equivalence or language quality.
All 48 scored runs
EngineMTPRoundInputRequest sFirst content sPrefill tok/sDecode tok/s
expXaOff116,3844.9213.4664,781.388.4
expXaOff14,0962.3800.9674,456.190.7
expXaOff15121.7060.3171,909.792.2
expXaOff165,53619.10817.4243,774.776.9
expXaOff216,3845.0543.5044,735.382.8
expXaOff24,0962.4510.9824,386.687.2
expXaOff25121.6620.2771,891.592.5
expXaOff265,53619.11517.4573,766.778.2
expXaOff316,3844.9393.4784,779.288.2
expXaOff34,0962.3740.9674,451.091.1
expXaOff35121.6680.2781,900.192.1
expXaOff365,53619.11817.4353,772.477.5
expXaDepth 1116,3844.8173.4764,736.799.7
expXaDepth 114,0962.2560.9724,431.7104.0
expXaDepth 115121.4930.3091,958.8108.4
expXaDepth 1165,53619.54517.9943,654.486.7
expXaDepth 1216,3844.8373.4884,720.499.1
expXaDepth 124,0962.2520.9724,434.3104.3
expXaDepth 125121.4530.2751,905.1109.1
expXaDepth 1265,53619.57618.0233,649.086.5
expXaDepth 1316,3844.8503.5144,730.7100.0
expXaDepth 134,0962.2240.9634,470.5105.9
expXaDepth 135121.4400.2761,899.7110.3
expXaDepth 1365,53619.53117.9953,654.287.8
PXA 4.0.1Off116,3845.0283.5844,638.389.0
PXA 4.0.1Off14,0962.3720.9744,429.991.7
PXA 4.0.1Off15121.6870.3101,976.393.0
PXA 4.0.1Off165,53621.39619.7483,329.378.6
PXA 4.0.1Off216,3845.0113.5704,640.589.2
PXA 4.0.1Off24,0962.3720.9794,399.592.2
PXA 4.0.1Off25121.6400.2691,949.593.4
PXA 4.0.1Off265,53621.40719.7753,325.579.3
PXA 4.0.1Off316,3845.0233.5814,638.589.1
PXA 4.0.1Off34,0962.3660.9704,434.491.8
PXA 4.0.1Off35121.6510.2691,953.892.7
PXA 4.0.1Off365,53621.39619.7553,328.678.9
PXA 4.0.1Depth 1116,3845.0493.5894,587.891.5
PXA 4.0.1Depth 114,0962.2720.9354,419.299.6
PXA 4.0.1Depth 115121.5720.2711,908.3102.7
PXA 4.0.1Depth 1165,53622.01620.3333,233.179.5
PXA 4.0.1Depth 1216,3845.0553.6014,573.391.5
PXA 4.0.1Depth 124,0962.2930.9434,369.898.7
PXA 4.0.1Depth 125121.5820.2751,905.3102.6
PXA 4.0.1Depth 1265,53622.04320.3433,231.978.7
PXA 4.0.1Depth 1316,3845.0483.6004,570.291.8
PXA 4.0.1Depth 134,0962.2670.9314,428.699.7
PXA 4.0.1Depth 135121.5660.2741,909.6103.5
PXA 4.0.1Depth 1365,53622.00220.3253,232.679.1

Related study: the 30B Q4_K_M comparison with CPU expert offload. Its placement and model differ, so the absolute times are not a controlled model-to-model comparison.