frank-medium: serve the whole 262144-token window, and repoint every signal to llama.cpp

Context: 262144 was measured before it was deployed -- 24.72 GB on GPU 0 and
29.14 GB on GPU 1 of 34.21 GB each, ~5 GB of headroom on the busier card, and a
140,069-token prompt prefilled through the single slot in 134 s to prove the
window is real. The 114688 wall was the vLLM predecessor's arithmetic, not this
runtime's.

Throughput, measured through the service: 1.0-1.4k tok/s prefill from 4k to
140k, 43.8 tok/s decode on a 512-token generation, 41-71 % DFlash2 acceptance,
and the prefix cache re-prefilling 4 of 998 tokens on a repeated prompt.

The signals move with the runtime, so the fleet's rules and dashboard are
re-cut rather than renamed: vllm: series do not exist any more, and two of the
old rules watched things llama.cpp does not export at all (KV-pool fill, p95
latency). Those are retired with the reason written down, and LlmSpecDecodeOff
takes one of the slots -- a lost drafter is the failure no client can see. The
observability seam now fails if any rule names a series the endpoint does not
export, which is what would have caught the stale vllm: expressions.

omp models.yml (outside the repo) is updated in the same pass: contextWindow
262144, and the full reasoning-effort map, because Qwen3.8's template answers
500 on 'high' -- verified against the live endpoint, low/medium/xhigh answer
200. Subagents run at high.
This commit is contained in:
Frank
2026-09-16 15:29:40 -07:00
parent ab51d61198
commit dc76dc5dc4
8 changed files with 220 additions and 140 deletions
+21 -13
View File
@@ -50,11 +50,19 @@
# in the attention layers only, plus ~0.16 GiB per sequence of f32 DeltaNet
# state at any depth.
#
# SIZING (per card, 31.86 GiB): weights split ~14.7 GiB; the drafter rides one
# card; KV at CTX_SIZE 131,072 is 8.00 GiB total (~4 GiB per card, since the 16
# attention layers are split with everything else); the loader's compute buffers
# complete the ledger. Read the loader's own "KV self size" / "compute buffer
# size" lines rather than trusting this arithmetic.
# SIZING, measured (rocm-smi, 2026-09-16). Weights split across the two cards;
# the drafter rides the second. The loader's compute buffers are part of what
# is seen below -- they are allocated at load, not per request:
#
# CTX_SIZE GPU 0 GPU 1 headroom on the busier card
# 131072 19.89 GB 24.30 GB 9.9 GB / 31 %
# 262144 24.72 GB 29.14 GB 5.07 GB / 15 % <- deployed
#
# 262144 is the window the model ships (n_ctx_train) and it fits with room, so
# the fleet gets the whole thing; the arithmetic that used to cap this endpoint
# at 114688 was the vLLM predecessor's, not this runtime's. If a future change
# adds VRAM (a longer drafter, quantized KV, more slots) re-read the numbers
# rather than assuming, and prefer CTX_SIZE over --gpu-layers.
#
# WARNING: do not name any variable TEMP, HOST, or GPU_MAX_HEAP_SIZE (HIP reads
# those bare vars; 2026-08-13 incident). llama.cpp takes --host/--port/--temp
@@ -74,9 +82,9 @@ DRAFT_MODEL_FILE=Qwen3.8-27B-DFlash2-Q8_0.gguf
ALIAS=frank-medium
BIND_ADDR=0.0.0.0
LISTEN_PORT=7770
# Placement. HIP_VISIBLE_DEVICES hides the iGPU; DEVICES is llama.cpp's own
# list, which is the pair the split runs across.
# Device placement. HIP_VISIBLE_DEVICES hides the Raphael iGPU (HIP device 2)
# so nothing can drift onto shared system RAM; DEVICES is what llama.cpp splits
# across, and neither of the two cards has an XGMI link to the other.
HIP_VISIBLE_DEVICES=0,1
DEVICES=ROCm0,ROCm1
SPLIT_MODE=layer
@@ -88,11 +96,11 @@ NGL=999
FIT=off
FLASH_ATTN=on
# One slot at the model's documented-configured window. --parallel divides
# --ctx-size between slots; it does not multiply. The target model ships
# n_ctx_train 262144 -- raising CTX_SIZE is a measurement, not a guess (watch
# the per-card ledger), and this service was deployed at 131072 first.
CTX_SIZE=131072
# One slot at the model's full configured window (n_ctx_train 262144), which was
# measured to fit before it was deployed: see SIZING above. --parallel DIVIDES
# --ctx-size between slots, so one slot carries the whole window and a second
# concurrent request queues behind it.
CTX_SIZE=262144
PARALLEL=1
BATCH_SIZE=2048