Qwen3.8-Flash-Next W4A16 2x CMP 170HX PP2 MTP5 PLE (AlexBrandes)
00 upvotes — sign in to vote sign in to votecommunity Community submission — verify on your own hardware.
recipe by AlexBrandes (recipe, fork, image, measurements)↗, AlexBrandes (vllm fork: PP + NVMe-mmapped PLE, Mamba PP state, draft lm_head, graph-safe PLE, bounded prefill)↗, polyuij42-del (community CMP 170HX W4A16 work the fork builds on)↗, nguyenthimy2022kg-alt (community SM80 170HX work the fork builds on)↗, MiaAI-Lab (sparkDash benchmark protocol @ 3e6d4ef)↗, Intel (INT4 W4A16 AutoRound quant)↗ · listed by localai-recipes
revision r3 · commit 44b6d37a73 · updated 3 d ago · license CC-BY-4.0
chat code pipeline-parallel mtp-speculative long-context nvme-mmap sm80 nvme-ple no-p2p prefix-caching mtp5 sparkdash
Recipe by AlexBrandes. Qwen3.8-Flash-Next (Intel/Qwen3.8-Flash-Next-W4A16-AutoRound @ 4c67bf68) on two NVIDIA CMP 170HX cards in PIPELINE parallel (PP2, layer split 26/22) with a vLLM v0.30.0 fork (AlexBrandes/vllm @ 02acf67c, 6 commits) in a digest-pinned container. Native MTP with 5 draft tokens (lm_head quantized to int4 by tools/quantize_lm_head.py, sha256 pinned), reasoning + tool calls, full 262,144-token window. The ~102 GB n-gram (PLE) table stays on NVMe read through mmap (VLLM_PLE_MMAP=1); BF16 KV, prefix caching, FP32 Mamba state. FIRST 2x170HX recipe with NO P2P or link modification needed - PP sends one activation per step, so it runs on stock PCIe Gen2 x4 links (all sibling rows need the unlock/P2P-mod prerequisite). Measured 2026-10-17 with sparkDash (3e6d4ef): 226 tok/s single-user code, 840 tok/s 8 users, 5,885-7,104 tok/s prefill 4k-128k; HumanEval 157/164, GSM8K 1,271/1,319, needle 12/12.
Launch command
./download.sh ./start.sh '# ./start.sh (HOST_TUNE=1 default) runs host-tune.sh via sudo (170 W, 16 KB readahead, drop caches), then execs:' 'docker run -d --name cmp170hx-qwen38-flash-next --gpus "device=0,1" --shm-size 1g -p 127.0.0.1:8000:8000' '-e VLLM_USE_BREAKABLE_CUDAGRAPH=1 -e VLLM_MTP_DRAFT_HEAD_PATH=/drafthead/head-w4a16.safetensors' '-e VLLM_PLE_MMAP=1 -e VLLM_PLE_MMAP_RANDOM=1 -e VLLM_PLE_HOST_IDS=1 -e VLLM_MIXED_PREFILL_CHUNK=560' '-e FLASHINFER_DISABLE_VERSION_CHECK=1 -e VLLM_PP_LAYER_PARTITION=26,22' '-v ./models/Qwen3.8-Flash-Next-W4A16-AutoRound:/models/Qwen3.8-Flash-Next-W4A16-AutoRound:ro' '-v ./models/draft-head-w4a16.safetensors:/drafthead/head-w4a16.safetensors:ro' ghcr.io/alexbrandes/cmp170hx-qwen38-flash-next@sha256:d6fc872d943b3e9e5cc9eb583b51d72af200e039fbbb7401700bb38d665f0957 'vllm serve /models/Qwen3.8-Flash-Next-W4A16-AutoRound' '--pipeline-parallel-size 2' '--served-model-name qwen3.8-flash-next-w4a16' '--max-model-len 262144' '--block-size 1680' '--mamba-cache-mode align' '--mamba-ssm-cache-dtype float32' '--max-num-seqs 8' '--max-num-batched-tokens 2048' '--gpu-memory-utilization 0.95' '--max-parallel-loading-workers 1' '--moe-backend auto' --enable-prefix-caching --enable-prompt-tokens-details '--reasoning-parser qwen3' --enable-auto-tool-choice '--tool-call-parser qwen3_coder' --trust-remote-code --no-enable-flashinfer-autotune '-cc {"cudagraph_mode":"FULL_AND_PIECEWISE","splitting_ops":["vllm::unified_attention_with_output","vllm::mamba_mixer2","vllm::mamba_mixer","vllm::short_conv","vllm::qwen4_exp_ple_short_conv","vllm::qwen4_exp_qsa_with_output","vllm::linear_attention","vllm::qwen_gdn_attention_core","vllm::ple_mmap_lookup"]}' '--speculative-config {"method":"mtp","num_speculative_tokens":5}'Use this recipe with your agent
Paste this into any agent chat — it fetches and applies the recipe:
Fetch https://localairecipes.com/api/v1/recipes/qwen3-8-flash-next-w4a16-2x-cmp-170hx-pp2-mtp5-ple-alexbrandes.json and apply the inference recipe it describes (engine flags, model, quant, context) to my setup. Ask before overwriting any existing config.Or fetch it directly:
curl -fsSL https://localairecipes.com/api/v1/recipes/qwen3-8-flash-next-w4a16-2x-cmp-170hx-pp2-mtp5-ple-alexbrandes.jsonDownloads
- Weights https://huggingface.co/Intel/Qwen3.8-Flash-Next-W4A16-AutoRound4c67bf686b7f7fd386bae6b07ab59e8ff1d5b897
- Engine image https://ghcr.io/alexbrandes/cmp170hx-qwen38-flash-next@sha256:d6fc872d943b3e9e5cc9eb583b51d72af200e039fbbb7401700bb38d665f0957engine-02acf67ca1
- Reference https://github.com/AlexBrandes/cmp170hx-qwen38-flash-next3f0d60096b3548a5f5449ebca7ab4b0f353bc772
Revision notes
Direct ingest of a 2026-10-17 GitHub-search find (lar-scout card t_67dee659). Recipe repo pinned at HEAD 3f0d60096b3548a5f5449ebca7ab4b0f353bc772 (verified via git ls-remote at ingest; single commit). Engine fork branch cmp170hx-qwen38-flash-next @ 02acf67c verified live (branch tip == pin at ingest). All launch argv transcribed from start.sh at that sha and cross-checked against results/2026-10-17.json launch.args (identical). Checkpoint revision 4c67bf68 + draft-head sha256 5c5461d7... resolved from versions.env as the card instructed. All perf numbers author-reported (T0 submitter) from results/2026-10-17.json three-run medians; no independent re-run. Distinctives vs the site's other 2x170HX QFN rows: pipeline parallel on STOCK PCIe links (no P2P/capacitor mod needed - clee PP3, Morrowmake TP2, Minachist PP2 and mannydelrio PP2 all require link/unlock work), NVMe-mmapped PLE via VLLM_PLE_MMAP (vs staged preadv / shard-direct variants), MTP-5 (siblings use 3-4), BF16 KV + FP32 Mamba state, 262k window (siblings stretch to 384k-1M). Host-tuning caveat: start.sh needs sudo (power limit + readahead + cache drop); HOST_TUNE=0 skips it at ~10% decode cost.
Revision history
- 44b6d37a73 recipe: update qwen3-8-flash-next-w4a16-2x-cmp-170hx-pp2-mtp5-ple-alexbrandes (r3: /performance) 3 d ago diff
- 289e081c45 recipe: update qwen3-8-flash-next-w4a16-2x-cmp-170hx-pp2-mtp5-ple-alexbrandes (r2: /max_context_len) 11 d ago diff
- 6ab4c0e01b recipe: create qwen3-8-flash-next-w4a16-2x-cmp-170hx-pp2-mtp5-ple-alexbrandes 13 d ago
Fork
Sign in to fork this recipe — a fork is your own copy; you own it and only you can update it.