docs: frank-medium runbook, fleet topology and client cutover
New runbook page serverAppConfigs-docs/LLM/frank-medium-rocmfpx.md records the hardware swap, the self-contained gfx1201 build, the measured layer-vs- tensor decision (llama-bench multi-device syntax gotcha included), the tensor-mode draft abort, served-path numbers, and the post-cleanup host ROCm posture. AGENTS.md, README, docs indexes, Dankserver System Specs, deployment/Hermes/OpenWebUI/Plex/Stack pages follow the rename; freetoken-frank-small is marked RETIRED and kingjones-q8agent SUPERSEDED. Work log entry added.
This commit is contained in:
1 parent
d53962fec5
commit
d4024a9180
15 files changed
+426
-80
No files matched your search
@@ -7,7 +7,7 @@ and the FrankBook-Pro Mac mini. It tracks the Podman container stacks and
|
||||
the LLM inference fleet. One repo, one checkout per host, one deploy script.
|
||||
|
||||
- **Dankserver** (192.168.0.235) — media/library stack (RomM, Copyparty,
|
||||
Calibre-Web, Jellyfin, Plex) as bare containers, plus the `frank-small`
|
||||
Calibre-Web, Jellyfin, Plex) as bare containers, plus the `frank-medium`
|
||||
LLM service.
|
||||
- **Dankclaw** (192.168.0.143) — AI/search/development/observability stack
|
||||
(SearXNG via Gluetun, ComfyUI, OpenWebUI, Hermes, Gitea, Grafana,
|
||||
@@ -27,11 +27,11 @@ prefix, reorganized in follow-up commits). The retired target checkouts
|
||||
archived. All services now run from `/home/dank/serverAppConfigs` on each
|
||||
host.
|
||||
|
||||
### LLM fleet topology (2026-09-11)
|
||||
### LLM fleet topology (2026-09-15)
|
||||
|
||||
| Target | Runtime | Service | Model | Port |
|
||||
|--------|---------|---------|-------|------|
|
||||
| Dankserver | FreeToken v0.1.2 | frank-small | batsclamp Huihui-Qwen3.6-35B-A3B-abliterated-FP8 (block-fp8 e4m3 128x128, ~35 GB safetensors), experts host-RAM LRU, 262144 ctx / 4 concurrent, reasoning on | 7770 |
|
||||
| Dankserver | charlie12345/ROCmFPX llama.cpp | frank-medium | kingjones777 Qwen3.8-27B-ROCmFPX-Q8_0-AGENT-GGUF (Q8_0_ROCMFPX_AGENT ftype 115, 26.28 GiB, 8.39 bpw), 2x Radeon AI PRO R9700 layer split, 131072 ctx / 1 slot, f16 KV, MTP draft head on ROCm1, reasoning on | 7770 |
|
||||
|Dankclaw|halogen-flash-server 0.5.8 (rootless Quadlet container)|frank-large|peonist-ai/halogen-qwen3.8-flash-next (Qwen3.8-Flash-Next w4b .hgn 115.55 GiB + quality overlay, ~68 GiB pinned, 262144 ctx / 3 slots, pool 401408 / max_tok 32768 / reserve 15, vision tower on, greedy for silent clients)|7770|
|
||||
| Dankclaw | *(retired 2026-09-11)* FastFlowLM v1.0.1 on the XDNA2 NPU | frank-npu | Gemma4-E4B-IT-NPU2 pack (vision + audio). Retired with the `amd_iommu=off` decision: the driver's SVA/PASID bind needs an enabled IOMMU | 7771 |
|
||||
|
||||
@@ -58,7 +58,12 @@ llama.cpp deployment gave way to halogen-flash-server 0.5.8 serving
|
||||
peonist-ai/halogen-qwen3.8-flash-next, now a rootless Quadlet container, and
|
||||
the kernel cmdline moved from `iommu=pt` to `amd_iommu=off` for 13–16 % of
|
||||
prefill — which retired `frank-npu` for good (see the Runtime &
|
||||
Troubleshooting section and its runbook). Runbooks:
|
||||
Troubleshooting section and its runbook). On 2026-09-15 the RTX 3090 left
|
||||
Dankserver for two Radeon AI PRO R9700 cards (gfx1201): `frank-small`
|
||||
(FreeToken/CUDA) retired and `frank-medium` (charlie12345/ROCmFPX llama.cpp,
|
||||
kingjones Q8_0_ROCMFPX-AGENT) took the :7770 endpoint — layer split, not
|
||||
tensor, because the RCCL-less build's butterfly allreduce collapses prefill
|
||||
7x (see the runbook for the measured table). Runbooks:
|
||||
[serverAppConfigs-docs/LLM/index.md](serverAppConfigs-docs/LLM/index.md).
|
||||
Retired scripts live in `old/` (reference only) and `.AGENTTRASH/`.
|
||||
|
||||
@@ -127,7 +132,7 @@ selected service and records its successful revision outside the checkout.
|
||||
./scripts/deploy.sh dankclaw
|
||||
./scripts/deploy.sh dankserver
|
||||
./scripts/deploy.sh dankclaw --service searxng
|
||||
./scripts/deploy.sh dankserver --service frank-small
|
||||
./scripts/deploy.sh dankserver --service frank-medium
|
||||
./scripts/deploy.sh dankclaw --dry-run
|
||||
```
|
||||
|
||||
@@ -306,11 +311,11 @@ DO NOT ROLL YOUR OWN BENCH UNLESS YOU CANNOT TEST THE DESIRED PARAMETER WITH THE
|
||||
|
||||
1. Stop the service before any benchmark:
|
||||
`systemctl --user stop frank-large` (Dankclaw — a **rootless** Quadlet
|
||||
service, so drop the `sudo`) or `sudo systemctl stop frank-small`
|
||||
service, so drop the `sudo`) or `sudo systemctl stop frank-medium`
|
||||
(Dankserver — still a system unit).
|
||||
Then mask it to prevent the self-healing unit from restarting:
|
||||
`systemctl --user mask frank-large` (Dankclaw) or
|
||||
`sudo systemctl mask frank-small` (Dankserver).
|
||||
`sudo systemctl mask frank-medium` (Dankserver).
|
||||
**CRITICAL WARNING:** Do NOT use `systemctl disable` on the **system** units.
|
||||
On these hosts, `systemctl disable` doesn't just remove symlinks — it **deletes
|
||||
the unit file itself** from `/etc/systemd/system/`. You'd have to manually
|
||||
@@ -326,8 +331,8 @@ DO NOT ROLL YOUR OWN BENCH UNLESS YOU CANNOT TEST THE DESIRED PARAMETER WITH THE
|
||||
against the service itself.
|
||||
3. Restart the service when the bench completes: unmask, then start:
|
||||
`systemctl --user unmask frank-large && systemctl --user start frank-large`
|
||||
(Dankclaw) or `sudo systemctl unmask frank-small && sudo systemctl start
|
||||
frank-small` (Dankserver).
|
||||
(Dankclaw) or `sudo systemctl unmask frank-medium && sudo systemctl start
|
||||
frank-medium` (Dankserver).
|
||||
4. Verify health before reporting:
|
||||
`curl http://192.168.0.235:7770/health` or
|
||||
`curl http://192.168.0.143:7770/health`.
|
||||
@@ -342,7 +347,7 @@ served alias:
|
||||
|
||||
| alias | endpoint |
|
||||
|---|---|
|
||||
| `frank-small` | Dankserver `192.168.0.235:7770` |
|
||||
| `frank-medium` | Dankserver `192.168.0.235:7770` |
|
||||
| `frank-large` | Dankclaw `192.168.0.143:7770` |
|
||||
| `gemma4-it:e4b` | *(removed 2026-09-11 with `frank-npu`)* |
|
||||
|
||||
@@ -375,8 +380,8 @@ driver cannot bind SVA/PASID, so every open of `/dev/accel/accel0` fails with
|
||||
from both the harness and Hermes. **Audio input left the fleet with it and
|
||||
has no replacement**; image input survives on `frank-large` through halogen's
|
||||
vision tower. Route map: Hermes `vision` → `frank-large`, Hermes
|
||||
`title_generation` → `frank-small`, harness `vision` → `frank-large`, harness
|
||||
`tiny` → `frank-small`, harness `task` → `frank-large` at medium effort.
|
||||
`title_generation` → `frank-medium`, harness `vision` → `frank-large`, harness
|
||||
`tiny` → `frank-medium`, harness `task` → `frank-large` at medium effort.
|
||||
|
||||
The retired runbook keeps the full record, including the original IOMMU/SVA
|
||||
root cause: [serverAppConfigs-docs/LLM/frank-npu.md](serverAppConfigs-docs/LLM/frank-npu.md).
|
||||
@@ -491,7 +496,33 @@ load on any current loader (require full per-layer
|
||||
3x). Binary and payload retained. Runbook:
|
||||
[serverAppConfigs-docs/LLM/agentionai-fast-imatrix.md](serverAppConfigs-docs/LLM/agentionai-fast-imatrix.md).
|
||||
|
||||
### Huihui-Qwen3.6-35B-A3B-abliterated-FP8 on FreeToken (Dankserver, ACTIVE)
|
||||
### kingjones Qwen3.8-27B-ROCmFPX-Q8_0-AGENT on ROCmFPX llama.cpp (Dankserver, ACTIVE since 2026-09-15)
|
||||
|
||||
The medium service serves `kingjones777/Qwen3.8-27B-ROCmFPX-Q8_0-AGENT-GGUF`
|
||||
(public, 26.28 GiB, 8.39 bpw, `Q8_0_ROCMFPX_AGENT` ftype 115 — stock
|
||||
llama.cpp cannot load it) from
|
||||
`/home/dank/models/kingjones-Qwen3.8-27B-ROCMFPX-Q8_0-AGENT/` with
|
||||
charlie12345/ROCmFPX llama.cpp `c49ebdb`, built for **gfx1201** with the
|
||||
fork's self-contained ROCm 7.14 toolchain
|
||||
(`env JOBS=8 ./scripts/build-rocmfp4-rocm714-local.sh` in
|
||||
`/home/dank/GitPackages/charlie-ROCmFPX`; the binary bundles its ROCm runtime
|
||||
via RPATH, so the host's ROCm packages never participate). `--split-mode
|
||||
layer` across both R9700s — tensor parallel loses 7x prefill on this
|
||||
RCCL-less build — 131072 context / 1 slot, f16 KV, flash-attn on, MTP draft
|
||||
head (n_max 6, p_min 0.6, `--spec-draft-device ROCm1`), reasoning on
|
||||
(deepseek format), sampler defaults from the checkpoint's instruct table.
|
||||
Measured 2026-09-15: llama-bench pp4096 1991 t/s / tg128 18.8 t/s (tensor:
|
||||
271.8 / 26.26; single card: 1160.9 / 19.42); served with MTP 35.7–46.2 tok/s
|
||||
and 60–69 % draft acceptance; prefix caching verified working with the draft
|
||||
head. Env `scripts/frank-medium.env`, serve `scripts/serve-frank-medium.sh`.
|
||||
Runbook:
|
||||
[serverAppConfigs-docs/LLM/frank-medium-rocmfpx.md](serverAppConfigs-docs/LLM/frank-medium-rocmfpx.md).
|
||||
|
||||
### Huihui-Qwen3.6-35B-A3B-abliterated-FP8 on FreeToken (Dankserver, RETIRED 2026-09-15)
|
||||
|
||||
Retired with the RTX 3090: FreeToken/CUDA cannot run on the replacement
|
||||
R9700 cards, and the FreeToken-era unit was archived to
|
||||
`~/.AGENTTRASH/20260915-frank-small-retire/host-units/`. Historical record:
|
||||
|
||||
The small service serves `batsclamp/Huihui-Qwen3.6-35B-A3B-abliterated-FP8`
|
||||
(public, ~35 GB, 26 safetensors shards) from
|
||||
@@ -623,7 +654,7 @@ graph TD
|
||||
flags. A different outcome isolates the env file as the cause.
|
||||
3. Run gdb for the backtrace with this command:
|
||||
```
|
||||
gdb -batch -ex run -ex "bt 25" --args bash scripts/serve-frank-small.sh
|
||||
gdb -batch -ex run -ex "bt 25" --args bash scripts/serve-frank-medium.sh
|
||||
```
|
||||
`llama-server` buffers its timed stdout. On SIGSEGV the log tail is lost.
|
||||
Trust gdb, not the log.
|
||||
|
||||
Reference in new issue
Block a user