frank-medium: swap ROCmFPX llama.cpp runtime for vllm-radiance MXFP4

Rootless Quadlet on dankserver serving
just1moremodel/Qwen3.8-27B-Uncensored-MXFP4-awq (the radiance stack's
designated alternate target; ships its fp8 MTP head, no rewrite step) with
the DFlash2-FP8 drafter at SPEC=7 on the 2x R9700s (TP=2, host network,
:7770, alias frank-medium unchanged).

- dankserver/frank-medium/: quadlet unit, container entrypoint (fork of
  serve-mxfp4.sh's patch block at pinned clone commit 97353293), healthcheck
- dispatcher retires the root llama.cpp unit, re-tags the registry image to
  the localhost alias, installs the quadlet, waits on /health
- planner maps dankserver/frank-medium/* to frank-medium; scripts-era
  mappings removed
- ROCmFPX-era env/serve/unit/download scripts staged in scripts/.AGENTTRASH
  with .rocmfpx suffix; seams updated (frank_medium_quadlet.bats new)
This commit is contained in:
Frank
2026-09-15 20:59:55 -07:00
parent db29c4d227
commit 6b647c1558
13 changed files with 566 additions and 47 deletions
+10 -8
View File
@@ -28,23 +28,25 @@ REMOTE_DEPLOY="$REPO_ROOT/scripts/deploy-remote.sh"
! grep -q 'frank_npu\|frank-npu' "$REMOTE_DEPLOY"
}
@test "shared chat-template changes map only to the service that reads it" {
# frank-medium reads the tracked template only when its env file points at
# it (the GGUF's embedded template is the default); frank-large runs
# halogen-flash-server, which owns its own chat handling. So a template
# edit is a no-op on Dankclaw and selects frank-medium on Dankserver.
@test "chat-template changes plan no service: the radiance runtime ships its own template" {
# The ROCmFPX llama.cpp deployment optionally read the tracked
# scripts/chat-template.jinja; the vllm-radiance runtime mounts its own
# qwen-fixed-v22.3.jinja out of the pinned clone instead. Nobody reads
# the tracked template any more, so an edit to it deploys nothing.
run python3 "$PLANNER" --target dankclaw --paths scripts/chat-template.jinja
[ "$status" -eq 0 ]
[ -z "$output" ]
run python3 "$PLANNER" --target dankserver --paths scripts/chat-template.jinja
[ "$status" -eq 0 ]
[ "$output" = "frank-medium" ]
[ -z "$output" ]
}
@test "deployment planner maps the dankserver model to frank-medium only" {
@test "deployment planner maps the frank-medium service dir to frank-medium only" {
run python3 "$PLANNER" --target dankserver --paths \
scripts/frank-medium.service
dankserver/frank-medium/quadlet/frank-medium.container \
dankserver/frank-medium/radiance-entrypoint.sh \
dankserver/frank-medium/frank-medium-healthcheck.py
[ "$status" -eq 0 ]
[ "$output" = "frank-medium" ]
}