Candidate package · vLLM XPU · 2× Intel Arc Pro B70

Qwen3.8 27B official FP8 on two Intel Arc Pro B70 cards

Alibaba's Qwen3.8 27B official block-FP8 weights on two Arc Pro B70 cards. The R187 profile (the R156 row-invariant W8A16 kernel and mixed-step GDN split, served with one whole-graph torch.compile instead of vLLM's piecewise split) is clean-boot-qualified at 54.935 tok/s MTP1 (FP16 target verifier, draft-only INT4 head), 70.142 tok/s MTP depth 2, 79.183 tok/s MTP depth 3, 82.396 tok/s MTP depth 4, 86.182 tok/s MTP depth 5, and 33.097 tok/s MTP0; every pair 12/12 against a same-configuration MTP0 oracle, repeat-exact at 224-300-token prompts, MTP0 output-identical to a single request through 64 concurrent users, MTP1 and depths 3-5 through 16, depth 2 through 4. On the piecewise compile MTP depth 2 emitted a phantom first token on one request in 64; on the whole-graph compile no pass has shown it (R182-R193, 2026-09-03). The cause is an unfixed upstream vLLM defect that also occurs on the unmodified image (R192/R194), so this is a configuration that avoids it on our deterministic build, not a fix; no patch, no image rebuild. A prebuilt copy of the exact image is on GitHub Container Registry (ghcr.io/steveseguin/vllm-openai-xpu-qwen38-fp8, digest sha256:173660ec…, equal to the image id the launchers verify); the source build in the guide remains the authoritative route.

What we measured Lab-measured

86.2tok/s strict varied-prompt decode (R187 MTP depth 5, whole-graph compile)

Median of two clean-boot fresh-server class-balanced medians over the complete fixed 12-prompt/six-class natural-512 suite (48-78-token prompts), separate empty compile caches, 12/12 complete token arrays exact versus a same-configuration MTP0 oracle (depth-5 target-verified speculative decoding; MTP1 54.935, depth 4 82.396, MTP0 33.097 on the same line), canaries before and after, cache zero; repeat-exact at 100-300-token prompts; output-identical through 16 concurrent users (MTP0: through 64). proof file

MTP = multi-token prediction, a small draft the main model verifies · oracle = the fixed prompt set whose exact outputs are checked

Model
Qwen3.8 27B official FP8
Publisher
Alibaba / Qwen
Checkpoint
Qwen/Qwen3.8-27B-FP8
Compression
FP8
Software
vLLM XPU
Cards
2× Intel Arc Pro B70 32 GiB
Model weight bytes
30.9 GB
Operating systems
Linux
Delivery
Docker / container
Good for
general coding long context
Published
2026-08-27
Clean-host replay
not yet

Still missing before this becomes an install guide

  • tested clean-host Intel driver and Docker installation
  • independent host-driver/Docker installation and strict endpoint replay
  • beginner recovery flow
  • MTP1 output identity above 16 concurrent users (MTP0 is exact through 64; the MTP1 residual is not in any censused kernel)

Measured performance profiles Lab-measured

R187 FP8 TP2 MTP0 HTTP decode over exact active context Lab-measured

33.032.731.931.230.429.82K4K8K16K24K32KExact active prompt tokens · y: tok/s
Measured on the published R187 line (R156 image, whole-graph torch.compile; 2026-09-03, clean boot): one-slot vLLM HTTP completions on two B70s at exactly 2K, 4K, 8K, 16K, 24K, and 32K active context, unrepeated technical prose, Python, and structured documents (three requests per depth, median shown), 128 output tokens, cache zero, canaries before and after. MTP0 (target only). No value is interpolated. evidence

R139 MTP0 effective prompt throughput (prompt tokens divided by HTTP TTFT) Lab-measured

3,4913,6233,5773,4323,2963,1772K4K8K16K24K32KExact submitted prompt tokens · y: tok/s
Measured on the published R139 row-invariant W8A16 image (2026-09-02, clean boot): one-slot vLLM HTTP completions on two B70s at exactly 2K, 4K, 8K, 16K, 24K, and 32K active context, unrepeated technical prose, Python, and structured documents (three requests per depth, median shown), 128 output tokens, cache zero, canaries before and after. Derived as active context tokens divided by HTTP TTFT; MTP0. evidence

R139 FP8 TP2 MTP0 HTTP TTFT over exact active context Lab-measured

5871,1312,2904,7737,45510,3132K4K8K16K24K32KExact active prompt tokens · y: ms
Measured on the published R139 row-invariant W8A16 image (2026-09-02, clean boot): one-slot vLLM HTTP completions on two B70s at exactly 2K, 4K, 8K, 16K, 24K, and 32K active context, unrepeated technical prose, Python, and structured documents (three requests per depth, median shown), 128 output tokens, cache zero, canaries before and after. Direct HTTP TTFT, MTP0. evidence

R187 FP8 TP2 MTP1 HTTP decode over exact active context Lab-measured

54.655.253.752.751.651.62K4K8K16K24K32KExact active prompt tokens · y: tok/s
Measured on the published R187 line (R156 image, whole-graph torch.compile; 2026-09-03, clean boot): one-slot vLLM HTTP completions on two B70s at exactly 2K, 4K, 8K, 16K, 24K, and 32K active context, unrepeated technical prose, Python, and structured documents (three requests per depth, median shown), 128 output tokens, cache zero, canaries before and after. MTP1 with FP16 target verifier and draft-only INT4 head; every output matched the same-image MTP0 oracle (18/18 complete arrays). evidence

R139 MTP1 effective prompt throughput (prompt tokens divided by HTTP TTFT) Lab-measured

3,4733,5633,4883,3553,2153,0922K4K8K16K24K32KExact submitted prompt tokens · y: tok/s
Measured on the published R139 row-invariant W8A16 image (2026-09-02, clean boot): one-slot vLLM HTTP completions on two B70s at exactly 2K, 4K, 8K, 16K, 24K, and 32K active context, unrepeated technical prose, Python, and structured documents (three requests per depth, median shown), 128 output tokens, cache zero, canaries before and after. Derived as active context tokens divided by HTTP TTFT; MTP1. evidence

R139 FP8 TP2 MTP1 HTTP TTFT over exact active context Lab-measured

5901,1492,3484,8837,64410,5992K4K8K16K24K32KExact active prompt tokens · y: ms
Measured on the published R139 row-invariant W8A16 image (2026-09-02, clean boot): one-slot vLLM HTTP completions on two B70s at exactly 2K, 4K, 8K, 16K, 24K, and 32K active context, unrepeated technical prose, Python, and structured documents (three requests per depth, median shown), 128 output tokens, cache zero, canaries before and after. Direct HTTP TTFT, MTP1. evidence

R187 FP8 TP2 MTP depth-2 HTTP decode over exact active context Lab-measured

70.873.471.069.060.268.52K4K8K16K24K32KExact active prompt tokens · y: tok/s
Measured on the published R187 line (R156 image, whole-graph torch.compile; 2026-09-04, clean boot): one-slot vLLM HTTP completions on two B70s at exactly 2K, 4K, 8K, 16K, 24K, and 32K active context, unrepeated technical prose, Python, and structured documents (three requests per depth, median shown), 128 output tokens, cache zero, canaries before and after. MTP1 with FP16 target verifier and draft-only INT4 head; every output matched the same-image MTP0 oracle (18/18 complete arrays). MTP depth 2 matched the same-configuration MTP0 oracle on 18/18 complete arrays. evidence

R187 FP8 TP2 MTP depth-3 HTTP decode over exact active context Lab-measured

80.683.684.777.966.983.22K4K8K16K24K32KExact active prompt tokens · y: tok/s
Measured on the published R187 line (R156 image, whole-graph torch.compile; 2026-09-04, clean boot): one-slot vLLM HTTP completions on two B70s at exactly 2K, 4K, 8K, 16K, 24K, and 32K active context, unrepeated technical prose, Python, and structured documents (three requests per depth, median shown), 128 output tokens, cache zero, canaries before and after. MTP1 with FP16 target verifier and draft-only INT4 head; every output matched the same-image MTP0 oracle (18/18 complete arrays). MTP depth 3 matched the same-configuration MTP0 oracle on 18/18 complete arrays. evidence

Many people at once Lab-measured

R187 FP8 TP2 MTP1 identity-qualified aggregate decode vs concurrent users (c1-c16) Lab-measured

53.572.2193353478124816Concurrent HTTP users · log2 spacing · y: tok/s
Measured vLLM HTTP completions on two B70s with the R187 image (MTP1, FP16 verifier, draft-only INT4 head), FP16 activations/KV, 64 service slots, 256-token total request capacity, max_num_batched_tokens=512, cache disabled, 128 returned raw token IDs per response on the 64-prompt small-context suite. Every point shown is output-identity-qualified: each concurrent output equals its own sequential oracle byte for byte (harness --require-output-identity). c32 and c64 were measured but are withheld: 1/32 and 8/64 near-tie prompts took a different valid branch. One server, one pass per point; not a promoted concurrency speed record. evidence

R187 FP8 TP2 MTP0 identity-qualified aggregate decode vs concurrent users (c1-c64) Lab-measured

33.464.41242344206729281248163264Concurrent HTTP users · log2 spacing · y: tok/s
Measured vLLM HTTP completions on two B70s with the R187 image (MTP0, target only), FP16 activations/KV, 64 service slots, 256-token total request capacity, max_num_batched_tokens=512, cache disabled, 128 returned raw token IDs per response on the 64-prompt small-context suite. Every point shown is output-identity-qualified: each concurrent output equals its own sequential oracle byte for byte (harness --require-output-identity). All seven points including c32 and c64 passed 64/64. One server, one pass per point; not a promoted concurrency speed record. evidence

Official FP8 TP2 HTTP median TTFT under concurrency Lab-measured

95.01232112672634267691248163264Concurrent HTTP users · log2 spacing · y: ms
Measured on the previous R50/R62 image (natural oneDNN W8A16 kernel), not yet re-measured on R139. Median request TTFT from the same two fresh-server, output-audited direct-P2P attempts. The service has 64 active slots, so c1-c64 are unqueued. Each point is the median of the two per-attempt p50 values; worst latency range across every reported p50/p95 metric was 4.404%. No point is interpolated or extrapolated. evidence

Official FP8 TP2 HTTP p95 TTFT under concurrency Lab-measured

95.01712112683917291,5261248163264Concurrent HTTP users · log2 spacing · y: ms
Measured on the previous R50/R62 image (natural oneDNN W8A16 kernel), not yet re-measured on R139. p95 request TTFT from the same two fresh-server, output-audited direct-P2P attempts. The service has 64 active slots, so c1-c64 are unqueued. Each point is the median of the two per-attempt p95 values; c64 reached 1.526 seconds. No point is interpolated or extrapolated. evidence

R187 FP8 TP2 MTP depth-2 identity-qualified aggregate decode vs concurrent users (c1-c4) Lab-measured

63.168.0213124Concurrent HTTP users · log2 spacing · y: tok/s
Measured vLLM HTTP completions on two B70s with the R187 image (MTP1, FP16 verifier, draft-only INT4 head), FP16 activations/KV, 64 service slots, 256-token total request capacity, max_num_batched_tokens=512, cache disabled, 128 returned raw token IDs per response on the 64-prompt small-context suite. Every point shown is output-identity-qualified: each concurrent output equals its own sequential oracle byte for byte (harness --require-output-identity). c32 and c64 were measured but are withheld: 1/32 and 8/64 near-tie prompts took a different valid branch. One server, one pass per point; not a promoted concurrency speed record. evidence

R187 FP8 TP2 MTP depth-3 identity-qualified aggregate decode vs concurrent users (c1-c16) Lab-measured

70.982.6238383557124816Concurrent HTTP users · log2 spacing · y: tok/s
Measured vLLM HTTP completions on two B70s with the R187 image (MTP1, FP16 verifier, draft-only INT4 head), FP16 activations/KV, 64 service slots, 256-token total request capacity, max_num_batched_tokens=512, cache disabled, 128 returned raw token IDs per response on the 64-prompt small-context suite. Every point shown is output-identity-qualified: each concurrent output equals its own sequential oracle byte for byte (harness --require-output-identity). c32 and c64 were measured but are withheld: 1/32 and 8/64 near-tie prompts took a different valid branch. One server, one pass per point; not a promoted concurrency speed record. evidence

R187 FP8 TP2 MTP depth-4 identity-qualified aggregate decode vs concurrent users (c1-c16) Lab-measured

79.171.1218384529124816Concurrent HTTP users · log2 spacing · y: tok/s
Measured vLLM HTTP completions on two B70s with the R187 image (MTP1, FP16 verifier, draft-only INT4 head), FP16 activations/KV, 64 service slots, 256-token total request capacity, max_num_batched_tokens=512, cache disabled, 128 returned raw token IDs per response on the 64-prompt small-context suite. Every point shown is output-identity-qualified: each concurrent output equals its own sequential oracle byte for byte (harness --require-output-identity). c32 and c64 were measured but are withheld: 1/32 and 8/64 near-tie prompts took a different valid branch. One server, one pass per point; not a promoted concurrency speed record. evidence

R187 FP8 TP2 MTP depth-5 identity-qualified aggregate decode vs concurrent users (c1-c16) Lab-measured

74.272.2215376493124816Concurrent HTTP users · log2 spacing · y: tok/s
Measured vLLM HTTP completions on two B70s with the R187 image (MTP1, FP16 verifier, draft-only INT4 head), FP16 activations/KV, 64 service slots, 256-token total request capacity, max_num_batched_tokens=512, cache disabled, 128 returned raw token IDs per response on the 64-prompt small-context suite. Every point shown is output-identity-qualified: each concurrent output equals its own sequential oracle byte for byte (harness --require-output-identity). c32 and c64 were measured but are withheld: 1/32 and 8/64 near-tie prompts took a different valid branch. One server, one pass per point; not a promoted concurrency speed record. evidence

How much faster could this get? No projection

This package's measured workload does not map cleanly onto a single model + compression + card-count shape, so no like-for-like projection is shown. The measured numbers above stand on their own.