|
@@ -5,15 +5,25 @@
|
|
|
# embeddings / lm_head kept original precision. Quantizes via regex targets,
|
|
# embeddings / lm_head kept original precision. Quantizes via regex targets,
|
|
|
# so no name-prefix matching bugs.
|
|
# so no name-prefix matching bugs.
|
|
|
# Model: https://huggingface.co/RedHatAI/GLM-5.3-Flash-NVFP4
|
|
# Model: https://huggingface.co/RedHatAI/GLM-5.3-Flash-NVFP4
|
|
|
-# (~177 GB → ~88 GB/node on 2 Sparks; GMU 0.85 = ~101 GiB budget)
|
|
|
|
|
|
|
+# (~177 GB → ~88 GB/node on 2 Sparks)
|
|
|
|
|
+# KV: pinned --kv-cache-memory-bytes 10 GiB (same as -lab, identical MLA
|
|
|
|
|
+# geometry) → ~1.16 M-token pool @ fp8_ds_mla = 2.22× concurrency at the
|
|
|
|
|
+# 524288 ctx. GMU 0.90 matches the proven lab config; the pin overrides
|
|
|
|
|
+# GMU-based KV sizing.
|
|
|
#
|
|
#
|
|
|
# ⚠ NO MTP DRAFTER IN THIS CHECKPOINT — the index has 146,745 tensors and
|
|
# ⚠ NO MTP DRAFTER IN THIS CHECKPOINT — the index has 146,745 tensors and
|
|
|
# zero layer-45/MTP weights. `--speculative-config mtp` WILL fail to load.
|
|
# zero layer-45/MTP weights. `--speculative-config mtp` WILL fail to load.
|
|
|
# This recipe is baseline decode only (~15 tok/s class on this arch —
|
|
# This recipe is baseline decode only (~15 tok/s class on this arch —
|
|
|
# spec decode buys 1.3–2×; use glm53-flash-nvfp4[-lab] when MTP matters).
|
|
# spec decode buys 1.3–2×; use glm53-flash-nvfp4[-lab] when MTP matters).
|
|
|
#
|
|
#
|
|
|
-# Image: shared glm53-flash-nvfp4:local overlay (day-0 vLLM image + the
|
|
|
|
|
-# NoPE-MLA / sm120 sparse-MLA mod). The mod is arch-level, quant-independent.
|
|
|
|
|
|
|
+# Image: the -lab overlay (day-0 vLLM image + NoPE-MLA mod + FujitsuPolycom
|
|
|
|
|
+# arch patches). The sparse_attn_indexer CC-12.0 guards are REQUIRED at the
|
|
|
|
|
+# 512K ctx: at 262K the indexer topk fit 48 SMs, at 512K it wants 62 CTAs and
|
|
|
|
|
+# the fallback needs 128 KB smem (GB10 has 99 KB) → hard boot abort
|
|
|
|
|
+# (launch_persistent_topk oversubscribe, 2026-08-28). The patches are
|
|
|
|
|
+# arch-level, not quant-level: the modelopt quantprobe is a no-op for this
|
|
|
|
|
+# compressed-tensors checkpoint, the model.py naming shim anchors on
|
|
|
|
|
+# arch-internal names.
|
|
|
#
|
|
#
|
|
|
# GB10 gotchas handled (see glm53-flash-nvfp4 header for detail):
|
|
# GB10 gotchas handled (see glm53-flash-nvfp4 header for detail):
|
|
|
# --moe-backend marlin → if vLLM rejects marlin for W4A4 at startup (marlin
|
|
# --moe-backend marlin → if vLLM rejects marlin for W4A4 at startup (marlin
|
|
@@ -21,10 +31,13 @@
|
|
|
# token-loop garbage (the silent FLASHINFER_CUTLASS corruption) before
|
|
# token-loop garbage (the silent FLASHINFER_CUTLASS corruption) before
|
|
|
# trusting it; `--moe-backend triton` is the other candidate.
|
|
# trusting it; `--moe-backend triton` is the other candidate.
|
|
|
#
|
|
#
|
|
|
-# Vendor note: RedHatAI's own README suggests --no-enable-flashinfer-autotune
|
|
|
|
|
-# for a fast boot — deliberately NOT set here: the GB10 sparse-MLA kernels
|
|
|
|
|
-# rely on the autotune result (first boot is slow by design, tune persists to
|
|
|
|
|
-# ~/.cache/vllm). Add it if you want to skip re-tuning after the first run.
|
|
|
|
|
|
|
+# GB10 gotcha (MEASURED): at 524288 ctx WITH flashinfer autotune on, rank 0
|
|
|
|
|
+# dies mid-boot on a driver OOM (NVRM NV_ERR_NO_MEMORY _memdescAllocInternal,
|
|
|
|
|
+# 2026-08-28 05:01) — autotune/graph scratch at the 512K verify shapes doesn't
|
|
|
|
|
+# fit the unified-memory headroom. The 262144 ctx + autotune combo booted
|
|
|
|
|
+# fine. Fix = the lab-proven boot: autotune + cutedsl warmup off (a perf
|
|
|
|
|
+# micro-opt only; the sparse-MLA kernels have a non-autotuned fallback) and
|
|
|
|
|
+# expandable_segments to cut fragmentation.
|
|
|
#
|
|
#
|
|
|
# PREREQUISITES: weights cached on both nodes:
|
|
# PREREQUISITES: weights cached on both nodes:
|
|
|
# huggingface-cli download RedHatAI/GLM-5.3-Flash-NVFP4
|
|
# huggingface-cli download RedHatAI/GLM-5.3-Flash-NVFP4
|
|
@@ -35,8 +48,8 @@
|
|
|
|
|
|
|
|
engine = "vllm"
|
|
engine = "vllm"
|
|
|
name = "GLM-5.3-Flash NVFP4-redhat (vLLM, 2x Spark, no MTP)"
|
|
name = "GLM-5.3-Flash NVFP4-redhat (vLLM, 2x Spark, no MTP)"
|
|
|
-docker_image = "glm53-flash-nvfp4:local"
|
|
|
|
|
-docker_image_dir = "glm53-flash-nvfp4"
|
|
|
|
|
|
|
+docker_image = "glm53-flash-nvfp4-lab:local"
|
|
|
|
|
+docker_image_dir = "glm53-flash-nvfp4-lab"
|
|
|
model = "RedHatAI/GLM-5.3-Flash-NVFP4"
|
|
model = "RedHatAI/GLM-5.3-Flash-NVFP4"
|
|
|
required_nodes = 2
|
|
required_nodes = 2
|
|
|
tensor_parallel_size = 2
|
|
tensor_parallel_size = 2
|
|
@@ -49,8 +62,13 @@ args = [
|
|
|
"--served-model-name", "glm53",
|
|
"--served-model-name", "glm53",
|
|
|
"--trust-remote-code",
|
|
"--trust-remote-code",
|
|
|
"--distributed-executor-backend", "mp",
|
|
"--distributed-executor-backend", "mp",
|
|
|
- "--gpu-memory-utilization", "0.85",
|
|
|
|
|
- "--max-model-len", "262144",
|
|
|
|
|
|
|
+ "--gpu-memory-utilization", "0.90",
|
|
|
|
|
+ "--kv-cache-memory-bytes", "10737418240",
|
|
|
|
|
+ "--max-model-len", "524288",
|
|
|
|
|
+ # Scan/graph scratch scales with the prefill chunk: 8192 OOMs the driver
|
|
|
|
|
+ # at 512K ctx (05:38 NVRM OOM), 4096 is the lab-proven ceiling here.
|
|
|
|
|
+ "--max-num-batched-tokens", "4096",
|
|
|
|
|
+ "--block-size", "256",
|
|
|
"--max-num-seqs", "1",
|
|
"--max-num-seqs", "1",
|
|
|
"--kv-cache-dtype", "fp8_ds_mla",
|
|
"--kv-cache-dtype", "fp8_ds_mla",
|
|
|
"--language-model-only",
|
|
"--language-model-only",
|
|
@@ -59,6 +77,8 @@ args = [
|
|
|
"--tool-call-parser", "glm47",
|
|
"--tool-call-parser", "glm47",
|
|
|
"--enable-auto-tool-choice",
|
|
"--enable-auto-tool-choice",
|
|
|
"--reasoning-parser", "glm45",
|
|
"--reasoning-parser", "glm45",
|
|
|
|
|
+ "--kernel-config", """
|
|
|
|
|
+'{"enable_cutedsl_warmup":false,"enable_flashinfer_autotune":false}'""",
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
[env]
|
|
[env]
|
|
@@ -69,3 +89,4 @@ VLLM_ENGINE_READY_TIMEOUT_S = "3600"
|
|
|
TORCH_CUDA_ARCH_LIST = "12.1a"
|
|
TORCH_CUDA_ARCH_LIST = "12.1a"
|
|
|
CUTE_DSL_ARCH = "sm_121a"
|
|
CUTE_DSL_ARCH = "sm_121a"
|
|
|
OMP_NUM_THREADS = "4"
|
|
OMP_NUM_THREADS = "4"
|
|
|
|
|
+PYTORCH_CUDA_ALLOC_CONF = "expandable_segments:True"
|