independent research node · battlemage host cell

The lab behind the measurements.

Bare-metal Battlemage validation by Sergio Barrientos. The exact hardware, driver versions, and commands behind every published tok/s — run them yourself and compare against the raw results in the cookbook.

Browse the B70 measurement library →

the actual test node · verified facts

One test cell. Every published number.

GPU

Intel Arc Pro B70 (BMG-31)

32 GB GDDR6 · 608 GB/s · 256 XMX engines

Host

AMD Ryzen 7 5700X3D

32 GB RAM · bare metal

OS

Ubuntu 26.04

Linux 6.12 · xe kernel driver · Level Zero 1.3.36

Engines

vLLM XPU · llama.cpp SYCL

intel/vllm:0.21.0-xpu-int4moe + 4 pinned patches

Power

150 W MoE · 180–230 W dense

Energy-counter draw, measured via xpu-smi

repro commands · run them on your own card

Discover the node. Reproduce the numbers.

bash
b70-lab · Arc Pro B70 @ /dev/dri/renderD128
bash

b70-lab:~$ xpu-smi discovery

# Lists every Arc GPU the driver stack can see — device IDs, VRAM, PCI addresses

Device IDDevice NamePCI BDFVisible VRAMRole
0Intel(R) Arc(TM) Pro B70 GPU0000:03:00.032,656 MiB GDDR6LLM inference (llama.cpp / vLLM)
1Intel(R) Arc(TM) Pro B70 GPU0000:07:00.032,656 MiB GDDR6VideoGen node (ComfyUI, PyTorch XPU)

# Driver: xe 6.12 · Level Zero loader 1.3.36 · 608 GB/s per card

b70-lab:~$ echo '{"method":"mtp","num_speculative_tokens":1}' > /tmp/spec.json

b70-lab:~$ sudo docker run -d --name b70vllm -p 8000:8000 \

--device /dev/dri --group-add $(stat -c "%g" /dev/dri/render* | head -n1) \

-v /dev/dri:/dev/dri:ro -v /path/to/model:/model:ro \

-v $PWD/patches/patch_xpu_int4_moe_v4.py:/patch_v4.py:ro \

-v $PWD/patches/patch_mtp_bf16_draft.py:/patch_mtp.py:ro \

-v /tmp/spec.json:/spec.json:ro \

-e VLLM_TARGET_DEVICE=xpu -e ZE_FLAT_DEVICE_HIERARCHY=COMPOSITE -e ZE_AFFINITY_MASK=0 \

--entrypoint bash intel/vllm:0.21.0-xpu-int4moe \

-lc 'python /patch_v4.py && python /patch_mtp.py && SPEC=$(cat /spec.json) && \

exec vllm serve /model --quantization gptq --dtype float16 \

--max-model-len 16384 --gpu-memory-utilization 0.92 --max-num-seqs 1 \

--language-model-only --speculative-config "$SPEC" \

--cudagraph-capture-sizes 1 2 4 8 16 32'

# The 126 t/s MoE path (Qwen3.6-35B-A3B, GPTQ-Int4 + MTP). Watch for:

# [B70] GDN XPU: spec decode active

# Full quick start incl. model link: README.md → "Quick start" in the cookbook repo

b70-lab:~$ ./llama-bench -m Qwen3.6-35B-A3B-UD-Q4_K_XL.gguf \

-p 2048 -n 128 -ngl 99 -ncmoe 0 -fa 1 -ctk q8_0 -ctv q4_1 -b 8192 -ub 4096 -r 5

# llama.cpp SYCL (DPC++) build — the cells from the engine comparison table

ModelQuantTest (p2k/g128)tok/sPower
Qwen3.6-35B-A3B (MoE)Q4_K_XLtg128 decode69150 W
Qwen3.6-35B-A3B (MoE)Q4_K_XLpp2048 prefill1,498150 W
ThinkingCap-Qwen3.6-27B (dense)Q4_K_Mtg128 decode23230 W
ThinkingCap-Qwen3.6-27B (dense)Q4_K_Mpp2048 prefill1,007230 W

# Source: results/engine-comparison-full-20260806.md in the cookbook repo — full p×g grids, vLLM MTP comparison, power sweeps