frank-primary: vLLM 0.30 UVA-offload shape (pre-deploy commit)
The llama.cpp b11030 trio becomes the vLLM 0.30 trio ahead of the FP8 cutover on :7770 — same port, same alias, no client moves. Serve shape: locally built ROCm gfx1201 image (localhost/frank-primary:vllm030) execs via podman as dank from the root unit (LimitMEMLOCK=infinity legalizes the pin). UVA offload: --offload-backend uva pins the PLE family (47.75 GiB, 138 tensors: 131 n-gram table shards + 7 per-layer conv/proj) + routed experts (114.86 GiB, 150,528 tensors) in host RAM — 162.60 GiB combined, ~81.3 GiB per rank under TP=2, hence --cpu-offload-gb 82 (80/card strands 2.6 GiB of experts on the cards). Parsers per the host's own Ornith-era precedent: qwen3_xml tools + qwen3 reasoning (vLLM 0.30 emits the channel as `reasoning` — reasoning_content is renamed server-side) + enable_thinking/preserve_thinking template kwargs. Spec decode stays env-wired and OFF at bring-up. Deployer deploy_llm_primary rewritten: image gate, index-driven shard-count gate (131), stale-container cleanup, port wait, and the false-green hardening — health is only green when the unit's own MainPID is live behind the answer (2026-09-26 lesson). Seam tests rewritten to the vLLM contract (15 gates): offload arithmetic, parser wiring, no-llama.cpp-ism, deployer gates. Suite 349/349 green.
This commit is contained in:
1 parent
82960c77db
commit
ecaad36654
5 files changed
+378
-425
No files matched your search
@@ -1,19 +1,35 @@
|
||||
# frank-primary.service — vLLM 0.30 endpoint (Qwen3.8-Flash-Next-FP8,
|
||||
# UVA offload shape) on the 2x R9700 pair, dankserver :7770.
|
||||
#
|
||||
# Replaces the llama.cpp frank-primary unit of 2026-09-26 (same port, same
|
||||
# served alias; harness models.yml unchanged). The serve script execs a
|
||||
# podman container (image localhost/frank-primary:vllm030) as dank.
|
||||
#
|
||||
# WHY A ROOT UNIT (not a rootless quadlet): the UVA offload pins ~160 GiB of
|
||||
# host RAM (PLE n-gram table + routed experts). Pinned pages are charged
|
||||
# against RLIMIT_MEMLOCK; dank's login session on this host carries 8 MiB and
|
||||
# a user quadlet is capped by the user manager's own hard limit — raising
|
||||
# that means restarting user@1000.service and bouncing every user container
|
||||
# on the host. A root unit grants LimitMEMLOCK=infinity to the dank process
|
||||
# via PID1, no user-manager restart, and the image stays in dank's rootless
|
||||
# podman storage (podman run as dank reads ~/.local/share/containers).
|
||||
[Unit]
|
||||
Description=unsloth llama.cpp (b11030-mix, ROCm gfx120X) Qwen3.8-Flash-Next Q8_0, shared-Q8_0 MTP + ngram-mod spec chain, BF16 vision, 262144 ctx / 1 slot, root systemd unit (dankserver, frank-primary, 2x Radeon AI PRO R9700)
|
||||
Description=frank-primary — vLLM 0.30 Qwen3.8-Flash-Next-FP8 (UVA offload) on 2x R9700
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=dank
|
||||
Group=dank
|
||||
# The model is mmap'd (175 GiB of expert pages + the 51B-param n-gram
|
||||
# table live in page cache); an RLIMIT_MEMLOCK smaller than what the
|
||||
# runtime pins would fail the load mid-start. Parity with the other LLM
|
||||
# units on this fleet.
|
||||
# The UVA offloader pins the offloaded weights in host RAM; an RLIMIT_MEMLOCK
|
||||
# smaller than the pinned set fails the load mid-start. PID1 grants infinity
|
||||
# here — parity with the fleet's other LLM units.
|
||||
LimitMEMLOCK=infinity
|
||||
Environment="FRANK_PRIMARY_ENV_FILE=/home/dank/serverAppConfigs/scripts/frank-primary.env"
|
||||
ExecStart=/home/dank/serverAppConfigs/scripts/serve-frank-primary.sh
|
||||
# Cold start: Triton/inductor compile (several minutes on first boot) plus
|
||||
# reading+pinning ~173 GiB of weights. Parity with the radiance-era timeout.
|
||||
TimeoutStartSec=1800
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
|
||||
|
||||
Reference in new issue
Block a user