|
|
@@ -31,6 +31,21 @@
|
|
|
# NVMe per box; NFS mode exists upstream too). First load is slow;
|
|
|
# JIT caches persist per node (see extra_mounts).
|
|
|
#
|
|
|
+# =====================================================================
|
|
|
+# STATUS 2026-08-30: boots fully to weight-stream, then global-OOM kills
|
|
|
+# the worker at 75-95% of shard load — REPRODUCED TWICE (12:22:25 and
|
|
|
+# 13:12:24, dmesg oom-killer) while streaming the 164 GiB checkpoint from
|
|
|
+# the shared NAS on BOTH nodes. GB10 unified memory + NFS page cache
|
|
|
+# cannot keep up (their kit streams NFS to the HEAD only; the worker reads
|
|
|
+# local NVMe, and even their local mode "wedges into swap at ~90%" by
|
|
|
+# their own caveat). Fixed knobs so far: entrypoint (NGC wrapper execs
|
|
|
+# first CMD arg as a file — `vllm serve` must be explicit), drafter repo
|
|
|
+# (incoai raw drafter is NOT in the NAS hub — we serve the MXFP8 mirror),
|
|
|
+# GMU 0.86 (their 0.85 left 1.14 GiB free when warmup wanted 1.12).
|
|
|
+# REMAINING FIX: per-node local mirror (sm121 --mirror after pointing
|
|
|
+# hf_cache_dir at the NAS). dgx3 has 400+ GiB free; dgx4 is 98% full —
|
|
|
+# blocked on local-cache cleanup there.
|
|
|
+#
|
|
|
# Boot markers (engine log): "Model loading took ~88 GiB"-scale BEFORE any
|
|
|
# EXL3 trellis lines → "GPU KV cache size" ≈ 1.4M tokens (fp8_e4m3 @524k)
|
|
|
# → "Application startup complete". A "Setting attention block size to
|
|
|
@@ -51,6 +66,11 @@ tensor_parallel_size = 2
|
|
|
pipeline_parallel_size = 1
|
|
|
distributed_backend = "mp"
|
|
|
shm_size = "32gb"
|
|
|
+# The image's NGC entrypoint wrapper (/opt/nvidia/nvidia_entrypoint.sh)
|
|
|
+# execs the first CMD argument as a FILE unless it is a known command —
|
|
|
+# so `vllm serve` must be passed explicitly, as the upstream launch
|
|
|
+# script does (verified: first arg landed as a relative model path).
|
|
|
+entrypoint = ["vllm", "serve"]
|
|
|
|
|
|
args = [
|
|
|
# Stable served name — quant-agnostic (shared across glm53 quants)
|
|
|
@@ -60,7 +80,10 @@ args = [
|
|
|
"--quantization", "exl3",
|
|
|
"--distributed-executor-backend", "mp",
|
|
|
# Their validated defaults; 0.88+ risks unified-memory swap on GB10
|
|
|
- "--gpu-memory-utilization", "0.85",
|
|
|
+ # 0.85 upstream default left 1.14 GiB when the warmup wanted 1.12 GiB
|
|
|
+# (OOM at engine init, 2026-08-30); 0.86 = one notch of slack. Their
|
|
|
+# 0.88+ warning is about swap wedging — 0.86 stays below that.
|
|
|
+ "--gpu-memory-utilization", "0.86",
|
|
|
"--max-model-len", "524288",
|
|
|
"--max-num-seqs", "4",
|
|
|
# vLLM auto-bumps to 4608 under fp8 KV (KDA state page parity)
|
|
|
@@ -71,9 +94,13 @@ args = [
|
|
|
# 1,435,070-token pool at 524k fp8; do NOT raise (2.26 GiB floor @13.4e9)
|
|
|
"--kv-cache-memory", "12400000000",
|
|
|
# Drafter by hub id (resolved from the mounted NAS HF_HOME like the
|
|
|
- # target model; 7 = trained block size 8 minus the bonus token)
|
|
|
+ # target model; 7 = trained block size 8 minus the bonus token).
|
|
|
+ # Upstream uses `incoai/GLM-5.3-Flash-DFlash2` (raw fp8-e4m3 drafter);
|
|
|
+ # we serve the MXFP8-compressed qualified mirror instead — already in
|
|
|
+ # the NAS hub, and this build executes serialized MXFP8 projections
|
|
|
+ # natively. Falls forward to the raw drafter if quality differs.
|
|
|
"--speculative-config", """
|
|
|
-'{"method":"dflash","model":"incoai/GLM-5.3-Flash-DFlash2","num_speculative_tokens":7}'""",
|
|
|
+'{"method":"dflash","model":"local-inference-lab/GLM-5.3-Flash-DFlash2-MXFP8","num_speculative_tokens":7}'""",
|
|
|
# required at 524288 on GB10 unified memory (upstream default SKIP_MM_PROFILING=1)
|
|
|
"--skip-mm-profiling",
|
|
|
"--tool-call-parser", "glm47",
|