Skip to content

Releases: PixelML/club-170hx

Qwen3.8-27B no-train Jev endpoint — benchmark video (1× CMP 170HX, 180 W)

Choose a tag to compare

@seanphan seanphan released this 21 Sep 16:52
5f7c1d1

Claim. A stock, no-train Qwen3.8-27B (W4A16 GPTQ) serves LLM-as-judge reads on one CMP 170HX at a 180 W cap: 141.7 ms per read idle (one prompt evaluation, logprob read — no answer generated); first production workload 2026-09-21: 19,045 annotations in 4.53 h, 0 failures, 5 permutation reads per annotation, 16 clients; engine prefill 1,952 tok/s at a 178 W mean (vs ~1,955 tok/s synthetic at the same cap); answer under load 12.0 s mean, 99.8% within 15 s (queue-bound); prefix-cache hit rate 0.0% on this traffic.

Limitation. Loaded answers are queue-bound; n=42 calibration is descriptive, not certified. Classification reads only — generation throughput is a separate notebook.

Artifacts. benchmark-video.mp4 (1080×1080, 30 fps, 8 s, silent by design), benchmark-video-poster.png, benchmark-video.json (claims source), benchmark-video-source.zip (editable HyperFrames 0.8.22 project).

SHA-256

  • benchmark-video.mp4 7ca44554a0a946224f1419f5496994ff9544e1704b3dcefffceeefda57ec9d64
  • benchmark-video-poster.png 1b4c96ce2c9b4e9a67987228f8baf6cdc453aca7e7cd33259d63e797f646dbae
  • benchmark-video.json ccf5336bede5ae8903f33d42e588afd5c2d0b4bbd608625178afea312211667f
  • benchmark-video-source.zip eb237e7055ba7248a97a545c4b09ddfd2945cd4f19ec5cf1a0150a7c88d25084

Independent exact-file review: 5/5 checks pass (hashes, numeric reconciliation, public-boundary scan, ffprobe runtime, frame inspection). Receipts: results/2026-09-20-qwen3.8-27b-w4a16-jev-1card-vllm/ on main.

GLM-5.3-Flash — PP4 + MTP k=3 on vLLM sm80 (87.6 tok/s c=1)

Choose a tag to compare

@seanphan seanphan released this 05 Sep 14:59
17042ad

GLM-5.3-Flash — 4x CMP 170HX (SM80) — PP4 + MTP k=3, vLLM sm80

Pipeline parallelism, not tensor parallelism, is the right topology for this model on a
four-card node with no NVLink and no P2P. PP4 with the model native MTP drafter at depth 3
is the recipe of record and replaces the 2026-09-03 TP4 result.

TL;DR

Metric Value Protocol / label
Decode, c=1 87.55 tok/s P1 math workload, temperature 0, 512 output tokens, median of 3, clean completion — measured
Decode, c=1 67.91 tok/s P2, temperature 0.7 + ignore_eos, 512 output tokens, median of 5 — measured
Decode vs context flat 74-79 tok/s from 8,192 to 131,042 prompt tokens c=1 — measured
Drafter value 1.62x over speculation off native MTP k=3 vs k=0, same protocol — measured
Best aggregate 78.4 tok/s at c=16 4,096-token prompt, 256 output tokens — measured on a degraded link
Prefill 1,752 tok/s at 16,384 prompt tokens median of 3 — measured on a degraded link
TTFT 9.44 s at 16,384 / 3.67 s at 4,096 prompt tokens warm, streaming, prefix caching off — measured on a degraded link
Quality GSM8K 49/50, HumanEval 19/20 pass@1, structured output 10/10 checkpoint sampling defaults — measured
Stability 3/3 rounds of c=8, 24/24 requests, zero Xid, 48-53 C sustained — measured
Boots 8/8, 795-1,263 s measured
NVFP4 on this pool not viable 2 attempts, out-of-memory in the MoE conversion; SM80 has no native FP4 — measured
Lossless parity not measurable on this stack greedy output is not reproducible with speculation on or off — measured
258k context untested server configured to 393,216; 131,042 is the largest prompt run
Vision path untested multimodal profiling disabled as a node workaround
Upstream author throughput figures community-reported never mixed into the tables above

PP4 context sweep

Pre-release. The vision path is unmeasured, the block-drafter lane is still in
progress, and the aggregate / prefill / TTFT cells were measured while one card PCIe
link had retrained to Gen1 x1. This release is updated in place as those close.

Pins

Pin Value
Checkpoint wtdcode/GLM-5.3-Flash-AWQ-W4A16 @ abd7b07719111f137e1de8a0c1b7e01c11b74d1a (24 files, 190,843,146,533 bytes, byte-verified)
Quantization AWQ W4A16 (compressed-tensors)
Fork PixelML/sm80vllm, branch pp-dflash2/glm53-flash-487ecf187-20260905 — orphan overlay over vllm/vllm-openai:glm53-flash @ 487ecf187 plus 24 ported patches
Recipe script recipes/glm53-flash-4x170hx-pp4.sh on that branch
Image ghcr.io/pixelml/club-170hx:vllm-glm53-sm80-pp-20260905
Image index digest sha256:62f612b49614523e6a46e1493d35d3efd1f363917129d38cc923a31053693bfb
Topology PP4, VLLM_PP_LAYER_PARTITION=14,12,12,7 (45 hidden layers)
Speculation native MTP, num_speculative_tokens=3
Context --max-model-len 393216; largest prompt measured 131,042 tokens
KV dtype auto; prefix caching off
Hardware 4x CMP 170HX (SM80, 64 GiB each), 180 W per-card cap, no NVLink
Link state during the run degraded — one card at PCIe Gen1 x1, one at x8, two at x16
Measured 2026-09-05

Pull and run

# 1. Pull the image by digest
docker pull ghcr.io/pixelml/club-170hx@sha256:62f612b49614523e6a46e1493d35d3efd1f363917129d38cc923a31053693bfb

# 2. Download and verify the weights: expect 24 files, 190,843,146,533 bytes,
#    0 missing or mismatched. Stage on local NVMe, not a network mount.
pip install -U huggingface_hub
hf download wtdcode/GLM-5.3-Flash-AWQ-W4A16 \
  --revision abd7b07719111f137e1de8a0c1b7e01c11b74d1a \
  --local-dir <weights>

# 3. Launch (recipe of record: recipes/glm53-flash-4x170hx-pp4.sh on the fork branch)
docker run -d --name <container> --gpus '"device=0,1,2,3"' \
  --shm-size 16g --ipc=host -p 127.0.0.1:<port>:8000 \
  -e HF_HUB_OFFLINE=1 \
  -e VLLM_PP_LAYER_PARTITION=14,12,12,7 \
  -e VLLM_WORKER_MULTIPROC_METHOD=spawn \
  -e TORCH_CUDA_ARCH_LIST=8.0 \
  -e VLLM_PP_MAX_DECODE_REQS_PER_BATCH=2 \
  -e VLLM_GLM5N_SIDECAR_BLOCK_SIZE=256 \
  -v <weights>:/weights:ro \
  ghcr.io/pixelml/club-170hx:vllm-glm53-sm80-pp-20260905 \
  --model /weights --served-model-name GLM-5.3-Flash \
  --pipeline-parallel-size 4 \
  --max-model-len 393216 \
  --gpu-memory-utilization 0.90 \
  --no-enable-prefix-caching \
  --max-num-seqs 8 --max-num-batched-tokens 4096 \
  --speculative-config '{"method":"mtp","num_speculative_tokens":3}' \
  --limit-mm-per-prompt '{"image":0,"video":0}'

# 4. First request
curl http://127.0.0.1:<port>/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model":"GLM-5.3-Flash",
       "messages":[{"role":"user","content":"What is the capital of France? Answer with just the city name."}],
       "temperature":0,"max_tokens":128}'

Expected boot: about 17 minutes (1,029 s measured) from locally staged weights, 320 s of
which is engine init. Short factual answers need max_tokens >= 128; this model reasons
before it answers.

Links

Supersedes

glm-5.3-flash-4card-tp4-20260903 — TP4 + MTP k=3, 60.4 tok/s c=1 median under the same P2 protocol. TP is link-bound on this fabric: the identical TP4 recipe measured 70.5 tok/s before one card PCIe link retrained narrow and 14.4 tok/s after, while PP4 held 60.8 tok/s on the same degraded box. The TP4 release is kept for history.

Attribution

Source License What was taken
promisezackr/glm53-flash-170hx-pp8 Apache-2.0 The pipeline-parallel patch set, 24 patches, applied over vllm/vllm-openai:glm53-flash @ 487ecf187 with per-patch attribution trailers. The KV-balancing rule behind the layer partition is his; the four-stage split is our adaptation. His scripts/bench.py is the P1 protocol and its repeat guard, used unmodified. His published throughput figures are community-reported and are not mixed into the measured tables.
wtdcode/vllm-backport, wtdcode/GLM-5.3-Flash-AWQ-W4A16 Apache-2.0 (backport); per the model card (checkpoint) The SM80 vLLM enablement these images descend from, and the AWQ W4A16 checkpoint used as published at the pinned revision. Third-party verified, not re-quantized and not mirrored.
incoai/GLM-5.3-Flash-DFlash2 cc-by-nc-nd-4.0 The block drafter, downloaded for measurement only. It is a net loss on our AWQ checkpoint and is recorded as a negative cell. Not redistributed.

Assets

Chart PNG and SVG, both video cuts (1080x1920 and 1920x1080) with the poster, and the raw
receipts tarball from the evidence repository.

GLM-5.3-Flash — TP4 + MTP-3 on vLLM sm80 (56.4 tok/s c=1)

Choose a tag to compare

@seanphan seanphan released this 04 Sep 09:12
0b38de0

Superseded by glm-5.3-flash-4card-pp4-20260905 (2026-09-05). Kept for history.

GLM-5.3-Flash — 4x CMP 170HX (SM80) — TP4 + MTP-3, vLLM sm80

TL;DR

Metric Value
Decode, c=1 (median of 5 reps) 56.4 tok/s (peak 56.9) — 2.1x the EXL3 lane
Best aggregate 37.0 tok/s at c=8 (below EXL3's 44.8; TP4 all-reduce bound — PP4+MTP port pending)
Prefill / TTFT untested
Context 524,288 tokens (KV cache 650,916 tokens)

Pre-release: GLM-5.3-Flash has vision capability (Glm5NextForConditionalGeneration); this run measured text-only. Will be updated in place when the vision path is measured.

Pins

Pin Value
Checkpoint wtdcode/GLM-5.3-Flash-AWQ-W4A16 @ abd7b07719111f137e1de8a0c1b7e01c11b74d1a (190,843,146,533 bytes, byte-verified)
Fork PixelML/sm80vllm, branch glm53-sm80 @ f6fbf3b854
Image ghcr.io/pixelml/club-170hx:vllm-glm53-sm80-20260903 (sha256:f7fe5d02c2951500448553f1783ff781470f7d3fdff943ff1492659cf775bb64)
Driver 610.43.03
Topology TP4, 4x CMP 170HX, 180 W per card, forced airflow
Speculative native MTP k=3 (swept k=2: 51.1 / k=3: 56.4 / k=5: 47.1 median)

Run

docker pull ghcr.io/pixelml/club-170hx:vllm-glm53-sm80-20260903

Launch command, weights verification, and bench protocol:
notebooks/2026-09-03-glm-5.3-flash-4card-tp4-vllm.ipynb

Links

DeepSeek-V4-Flash-Vision-Exp on 4x CMP 170HX: vision measured, 119 tok/s median text c=1 (peak 162)

Choose a tag to compare

@seanphan seanphan released this 02 Sep 08:53
4974d1e

DeepSeek-V4-Flash-Vision-Exp on 4x CMP 170HX: vision measured

Real image input now runs on vLLM (SM80 fork, PP4, DSpark k=6) on four $1,600 mining cards. Measured 2026-09-02.

Text and text+image decode vs concurrency on 4x CMP 170HX

Measurement Value
Image gates (golden corpus) 10/10 keyword match
Decode c=1, text only 119 tok/s median of 5 reps (peak 162)
Decode c=1, text + image 45.3 tok/s
Power cap 250 W vs. 180 W no gain (latency-bound); 180 W kept
Decode c=2, text + image 78.2 tok/s
Uncached prefill, 2,941 tokens 2,352 tok/s warm
Warm streaming TTFT 0.386 s
Concurrency limit engine crashed at c=4 (text ladder, rep 3); recorded, not hidden
Boot from NVMe about 6 min

Text-only reference run on the same cards earlier the same day (text-path image): c=1 97.4, c=8 220.2 tok/s aggregate.

Pins: model deepseek-ai/DeepSeek-V4-Flash-Vision-Exp revision 86f746b36186f0e567729a5c06a8c918caba82a9; SM80 vLLM fork plus the PixelML vision port (five boot fixes, patch series in the evidence repository); partition 11,11,11,10; fp8 KV; max-model-len 16384.

Run it:

docker pull ghcr.io/pixelml/club-170hx:vllm-deepseek-v4-vision-sm80-20260902

Vision image digest sha256:b26232f8f041c988d3285e2278c9f5001cc49f96131bb0b22a9d38b5e5e061cd. Text-path image: ghcr.io/pixelml/club-170hx:vllm-deepseek-v4-sm80-20260902.

Links: vision notebook, text notebook, evidence repository, Hugging Face collection.

Known limits: text exact-match against the DGX Spark reference is 10/20 (finish_reason drift); the engine is not stable above c=2 on this build. Both are tracked as follow-ups.