GLM-5.3-Flash EXL3 2.60bpw PP2 on 2x CMP 170HX DFlash2 k3
00 upvotes — sign in to vote sign in to votecommunity Community submission — verify on your own hardware.
recipe by AlexBrandes (vLLM CMP170HX fork + plugin + this recipe + measurements)↗, turboderp (ExLlamaV3 engine + GLM-5.3-Flash-exl3 2.60bpw checkpoint)↗, incoai (GLM-5.3-Flash-DFlash2 drafter, CC BY-NC-ND 4.0)↗, Morrowmake (sm_80 GLM-5.3 code lineage via vllm-sm80)↗, Z.ai (GLM-5.3-Flash base model)↗ · listed by localai-recipes
Initial version · updated 5 h ago · license Apache-2.0
chat code vision pipeline-parallel vision dflash2 long-context exl3 speculative docker-build
GLM-5.3-Flash (turboderp's EXL3 2.60 bpw pack, sc_2.60bpw) served by AlexBrandes' vLLM fork at PP2/TP1 - VLLM_PP_LAYER_PARTITION=23,22, 23 target layers on card 1 and 22 plus the DFlash2 drafter (3 draft tokens) on card 2 - on two CMP 170HX 64 GB cards. sm_80 tensor-core EXL3 paths on for prefill and small-row decode; PP scheduler spreads decodes and never mixes prefill+decode tokens in one step; FULL_DECODE_ONLY CUDA graphs. 225,280-token context, up to 4 sequences, block size 4608. Image built locally from the repo Dockerfile at three pins (upstream vLLM a0d7356b98 + branch 2a4e1379 + plugin 947ef7c), 17 min, no GPU. Author-measured 2026-11-05: structured C1 83.0 / code 76.5 / prose 57.8 tok/s, aggregate C4 191.9, cold prefill 1,741-1,852 tok/s, HumanEval 142/164, GSM8K 1228/1319, needle 16/16, vision 7/7. Recipe, engine and measurements by AlexBrandes; checkpoint MIT, drafter CC BY-NC-ND 4.0.
Launch command
vllm serve /model --host 0.0.0.0 --port 8000 --served-model-name glm-5.3-flash-exl3-2.60bpw --quantization exl3 --load-format exl3 --dtype bfloat16 --pipeline-parallel-size 2 --tensor-parallel-size 1 --mm-encoder-tp-mode data --max-model-len 225280 --max-num-seqs 4 --max-num-batched-tokens 2048 --prefill-chunk-with-decodes 512 --block-size 4608 --gpu-memory-utilization 0.97 --enable-auto-tool-choice --tool-call-parser glm47 --reasoning-parser glm47 --enable-prompt-tokens-details --compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY"}' --speculative-config '{"method": "dflash", "model": "/draft", "num_speculative_tokens": 3, "quantization": null, "draft_load_config": {"load_format": "safetensors"}}' --hf-overrides '{"text_config": {"aux_hidden_state_tensor": "stream_mean"}}'runtime
env: "serve.sh exports (verbatim @ db1af3228): VLLM_CACHE_ROOT=/cache/vllm TRITON_CACHE_DIR=/cache/triton CUDA_CACHE_PATH=/cache/cuda VLLM_PP_LAYER_PARTITION=23,22 (23 target layers on card 1, 22 + drafter on card 2) VLLM_PP_SPREAD_DECODES=1 VLLM_PP_HOMOGENEOUS_STEPS=1 VLLM_SM80_KDA_PREFILL=1 VLLM_EXL3_MOE_PREFILL_TC=1 VLLM_EXL3_DENSE_PREFILL_TC=1 VLLM_EXL3_DENSE_PREFILL_ONE_PRODUCT=float VLLM_EXL3_MOE_DECODE_TC=1 VLLM_EXL3_MOE_DECODE_TC_MODE=full VLLM_EXL3_DENSE_DECODE_TC=1 VLLM_EXL3_DENSE_DECODE_TC_FAMILIES=all VLLM_EXL3_DENSE_DECODE_SPLITK=1 VLLM_EXL3_DECODE_VARIANT=off. Run (README step 3): docker build -t glm53-flash-exl3:947ef7c recipes/glm53-flash-exl3, then docker run --rm --gpus all --shm-size 16g --user $(id -u):$(id -g) -e HOME=/cache -e HF_HUB_OFFLINE=1 -e CUDA_VISIBLE_DEVICES=0,1 -p 127.0.0.1:8000:8000 -v $MODEL_DIR:/model:ro -v $DRAFT_DIR:/draft:ro -v $CACHE_DIR:/cache -v $PWD/recipes/glm53-flash-exl3/chat_template.jinja:/model/chat_template.jinja:ro glm53-flash-exl3:947ef7c (the jinja mount must replace the tokenizer's own template, not --chat-template: the GLM reasoning parser reads that one). Weights: hf download turboderp/GLM-5.3-Flash-exl3 --revision 24781209f2862a939cc21e01d256c943bd1a58a3; hf download incoai/GLM-5.3-Flash-DFlash2 --revision bf582e4eacc1810f76656d1811693ff6c6737d2a."
notes: 'Engine is three pins per the Dockerfile: upstream vLLM a0d7356b98e929c17051bac44f5a086e4117974d (prebuilt wheel from wheels.vllm.ai), AlexBrandes/vllm branch 2a4e1379093a84fd0852c197bb76c09a34a0473f (Python files over the wheel), vllm-cmp170hx plugin 947ef7c7e1a96135521dce27cf953178816da42e (EXL3 extension compiled at build time, TORCH_CUDA_ARCH_LIST=8.0). Measured image id sha256:ee218f38789644c2b42d8bcbc79b4dc18a5bb25cc7c33ca5491486dcd8d7156c (docker build --no-cache); rebuilds get their own image identity. serve.sh ends in exec vllm serve ... "$@"; extra argv (none used for the measured runs) would append here.'
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/glm-5-3-flash-exl3-2-60bpw-pp2-on-2x-cmp-170hx-dflash2-k3.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/glm-5-3-flash-exl3-2-60bpw-pp2-on-2x-cmp-170hx-dflash2-k3.jsonDownloads
- Weights https://huggingface.co/turboderp/GLM-5.3-Flash-exl324781209f2862a939cc21e01d256c943bd1a58a3 - sc_2.60bpw branch (results.json checkpoint): 2.5-bit routed experts, 6-bit dense/attention, LM head + vision tower; ~110 GB; keeps GLM-5.3-Flash's MIT license
- Drafter https://huggingface.co/incoai/GLM-5.3-Flash-DFlash2bf582e4eacc1810f76656d1811693ff6c6737d2a - BF16 drafter, stream_mean auxiliary state, CC BY-NC-ND 4.0 (non-commercial, no redistribution)
- Reference https://github.com/AlexBrandes/vllm2a4e1379093a84fd0852c197bb76c09a34a0473f - measured vLLM branch commit; recipe dir recipes/glm53-flash-exl3 @ db1af3228a1bd764bf9ba2c12ae9780c13819cb3 (branch plugin)
- Reference https://github.com/vllm-project/vllma0d7356b98e929c17051bac44f5a086e4117974d - upstream vLLM base commit; prebuilt wheel from wheels.vllm.ai (sha256 5e293d985d...)
- Engine image https://github.com/AlexBrandes/vllm947ef7c7e1a96135521dce27cf953178816da42e - vllm-cmp170hx plugin commit (EXL3 extension, sm_80 GLM-5.3 code derived from Morrowmake's vllm-sm80); measured image id sha256:ee218f38789644c2... (local build, not published)
Revision notes
Initial version.
Revision history
Initial version.
Fork
Sign in to fork this recipe — a fork is your own copy; you own it and only you can update it.