Compare commits

..
5 Commits
Author SHA1 Message Date
Frank 500ac2b871 docs(vault): consolidate the vLLM offload-knob claim to one owner (C2, C6)
The "`--swap-space` is removed; use `--kv-offloading-size`" claim was carried by
six pages, two of them with their own copy of the upstream source citation. It
now lives only in [[RAM CPU Offloading in VLLM]], which carries the 2026-10-19
verification against `vllm/config/cache.py` (no `swap_space`; `kv_offloading_size`
activates only with `kv_offloading_backend`):

- `VLLM Overview` (two argument tables), `VLLM Index` (parameter table),
  `DFlash DSpark Speculative Decoding`, `Shared Memory Architecture Dankclaw`,
  `Hybrid CPU GPU Processing Dankserver` -> cite the owner.
- `VLLM Index`'s example command used the dead flag; it now shows the live pair.
- `dankserver-vram-growth`: banner disambiguates the 2026-08 `frank-zealot`
  (llama.cpp on the 3090 when that card was in Dankserver) from today's endpoint
  of the same name on Dankclaw, so a retired crash signature does not read as a
  live fault on a same-card-class service.

Refs: vault de-dup campaign, clusters C2 and C6.
2026-10-19 02:01:14 -07:00
Frank 6a8cbde260 docs(vault): retire the ACTIVE labels on frank-medium era pages (cluster C5)
The root and LLM index pages still advertised two retired endpoints' pages as
live procedure:

- `frank-medium-radiance-mxfp4`: frontmatter said "ACTIVE frank-medium
  runbook" and the body opened "The ACTIVE frank-medium deployment". Both
  re-keyed to the era it ran (2026-09-21 -> 10-10), with [[frank-archon]]'s
  Eras table named as the owner of that shape.
- `frank-medium-model-swap`: read as live how-to for a retired endpoint.
  Re-keyed to historical, pointing at [[Model Swap and Rollback]] for the
  current swap law.
- Both index pages' rows re-keyed to match (rows are hand-copied from
  frontmatter - no generator - so both sites move together).

Refs: vault de-dup campaign, cluster C5.
2026-10-19 02:00:21 -07:00
Frank 73fb27254e docs(vault): era-correct the vLLM/Ling era pages (cluster C3)
- `Running Qwen3.6 27B FP8 on Dankclaw`: had no banner at all and opened as a
  live how-to. Added the RETIRED banner (iGPU endpoint today is
  [[frank-dragoon]]), era-tagged the hardware table, and rewrote the
  "primary service now runs vLLM-ROCm with Ling CIRU INT4" production note,
  which was false by three fleet generations.
- `ling-3.0-flash-vllm-plan`: "frank-dragoon is the Qwen3.8-27B PP head" ->
  past tense with the 2026-08-17 redo as the anchor and the live owner named.
- `frank-redo-2026-08-17` banner: stripped restated live shapes that had
  already drifted (radiance 1.0.13, PrismML b10754 - the fleet runs 10777)
  and the 3090-provenance clause owned by the PP deployment page; banner is
  now locator-only (names + ports + links).

Verified before cutting: 457.9 t/s and the ping-RTT figures are solo-held by
Ethernet Bandwidth Math.md (no duplicate), so both scout-reported "duplicates"
were kept.

Refs: vault de-dup campaign, cluster C3.
2026-10-19 01:59:13 -07:00
Frank e32df1b04f docs(NPU page): era-tag host-RAM and PP-rate restatements
One fact, one owner (de-dup campaign C4):

- `FastFlowLM NPU Inference.md` carried the host RAM figures three times
  (29 GiB budget input kept as era data; the 2026-10-18 `free -g` re-reads
  of 121/246 GiB cut -> [[Dankclaw System Specs]]/[[Dankserver System Specs]]).
- The 14-18 t/s PP-split decode is this page's own solo-held era measurement:
  kept, tagged to the 2026-08 era with [[frank-redo-2026-08-17]].
- Promotion section: `frank-zealot` "now runs the NPU endpoint" era-tagged
  (the name has been reused twice since; the NPU unit is `frank-npu`, masked).
- Repaired the Test Runbook splice introduced by the range edit above.

Refs: vault de-dup campaign, cluster C4.
2026-10-19 01:58:03 -07:00
Frank a518fc7c22 docs(vault): de-stale the quant and swap method pages
Parent-written (scout summaries were corroborated against the files, not
trusted): every restatement of an endpoint shape now cites the endpoint page,
and four claims contradicted by today's fleet state are corrected.

- Quantization Production: the challenger-contract line quoted the retired
  compaction-hub window; now cites [[frank-zealot]]'s Current shape. The 3090
  worked example is era-tagged. Sources listed [[frank-dragoon]] three times.
- Quantization by Hardware Architecture: said the 3090 lives on Dankserver
  (it moved to Dankclaw 2026-09-16; the Eras table owns the move) and ranked
  the retired Ling-3.0 Quark INT4 service as the ACTIVE Dankclaw workload. The
  active service is [[frank-dragoon]] on a closed `.hgn` format.
- GGUF Compatibility: Related claimed the ftype-115 ROCmFPX file was "in
  production"; that is an era now, so it points at [[kingjones-q8agent-rocmfpx]].
- Model Swap and Rollback: dropped the fragment byte-count ledger (AGENTS.md
  owns it), the Ampere FP8 hardware claim ([[Quantization by Hardware
  Architecture]] owns it), halogen's HTTP surface ([[frank-dragoon]]'s wire
  contract) and three brittle unit-file line refs (accepted loss: line numbers
  are derivable, the root-unit law stays). Fixed the per-slot example, which
  described the retired 3-slot arithmetic, and a Related bullet that called
  [[frank-archon]] retired while linking the same page twice.

Census over the diff: 1 orphan line, the deleted unit line-number refs above.
2026-10-19 01:52:30 -07:00
19 changed files with 134 additions and 82 deletions

No files matched your search

@@ -411,7 +411,7 @@ measurement that would settle it.
- Speculative decoding helps low-QPS, memory-bound, latency-focused workloads. It helps less at high QPS. - Speculative decoding helps low-QPS, memory-bound, latency-focused workloads. It helps less at high QPS.
- DFlash needs a non-causal attention backend; the ROCm flash_attn backend must be validated before production use. - DFlash needs a non-causal attention backend; the ROCm flash_attn backend must be validated before production use.
- The old `--swap-space` flag no longer exists in current vLLM. Use `--kv-offloading-size`. - The old `--swap-space` flag is retired; the live CPU-KV-offload knob pair is owned by [[RAM CPU Offloading in VLLM]].
- `--speculative-config` is the preferred CLI. Legacy `--spec-method`, `--spec-model`, and `--spec-tokens` flags still exist. - `--speculative-config` is the preferred CLI. Legacy `--spec-method`, `--spec-model`, and `--spec-tokens` flags still exist.
- Use `rejection_sample_method` default `strict` for lossless output. - Use `rejection_sample_method` default `strict` for lossless output.
@@ -57,7 +57,10 @@ Key properties, per the project README and docs:
## NPU Hardware on Dankclaw ## NPU Hardware on Dankclaw
Dankclaw runs an AMD Ryzen AI MAX+ 395 (Strix Halo). The chip integrates an XDNA2 NPU rated at 50 TOPS (vendor spec: "NPU TOPS — Up to 50 TOPS", [amd.com product page](https://www.amd.com/en/products/processors/laptop/ryzen/ai-300-series/amd-ryzen-ai-max-plus-395.html)). It sits beside the Radeon 8060S iGPU and shares the same unified memory pool — 30 GiB exposed to the OS in the 2026-08 reading below; the box presents **121 GiB** today (`free -g` total 121, read 2026-10-18). Dankclaw runs an AMD Ryzen AI MAX+ 395 (Strix Halo). The chip integrates an XDNA2 NPU
with 50 TOPS of compute and, crucially, **no dedicated VRAM** - it shares system memory
via the IOMMU SVA mapping. The budget this page reasons about - 29 GiB usable at
4800 MT/s LPDDR5X - is the 2026-08 host state; the live figure is [[Dankclaw System Specs]].
Live verification on Dankclaw, 2026-08-16: Live verification on Dankclaw, 2026-08-16:
@@ -89,10 +92,9 @@ Budget math for this fleet:
| Dankserver (Ryzen 7 7700X) | 62 GB | no NPU | | Dankserver (Ryzen 7 7700X) | 62 GB | no NPU |
| FLM bench box (Kraken Point) | 32 or 96 GB | ~16 or ~48 GB | | FLM bench box (Kraken Point) | 32 or 96 GB | ~16 or ~48 GB |
2026-10-18 re-read: Dankclaw's OS now reports **121 GiB** (`free -g`) and The half-of-RAM gate scales with host RAM - live figures in [[Dankclaw System Specs]]
Dankserver **246 GiB** (`free -g`), so the half-of-RAM rule would price the NPU and [[Dankserver System Specs]]. The live gate on Dankclaw is still `flm validate`
budget at ~60 GiB and the 7700X box still has no NPU. The 30 GiB / 62 GB rows (it owns the current number).
are the 2026-08-16 state; the table is moot while no NPU endpoint is deployed.
Weight sizes (approximate, Q4-class): Weight sizes (approximate, Q4-class):
@@ -159,7 +161,10 @@ Qwen3.6-35B-A3B (Q4_KS), FLM v0.9.45, Kraken Point **96 GB DRAM**:
| Decode t/s | 13.65 | 13.41 | 13.09 | 12.51 | 11.24 | 9.51 | | Decode t/s | 13.65 | 13.41 | 13.09 | 12.51 | 11.24 | 9.51 |
| Prefill t/s | 78.98 | 118.04 | 156.43 | 197.93 | 218.84 | 221.96 | | Prefill t/s | 78.98 | 118.04 | 156.43 | 197.93 | 218.84 | 221.96 |
Context: the current PP split (head + 3090 worker) decodes at 14-18 t/s for the 27B dense model. A 35B-A3B at ~10-14 t/s on an NPU with 48 GB of RAM budget is not a speed win over the existing topology. - PP and NPU together cost 2.2 GiB + NPU model + ~2 GiB of headroom. The then-current
PP split (head + 3090 worker, 2026-08 era - see [[frank-redo-2026-08-17]]) decoded at
14-18 t/s for the 27B dense model, so an NPU offload would free the head or upgrade
the worker's model.
The vendor also claims "over 10x more power-efficient" versus GPU. That is a marketing claim. We have not measured it. The vendor also claims "over 10x more power-efficient" versus GPU. That is a marketing claim. We have not measured it.
@@ -219,7 +224,12 @@ Notes:
## Promotion (2026-08-16) ## Promotion (2026-08-16)
`frank-zealot` now runs the NPU endpoint on Dankclaw (was the Dankserver llama.cpp service). Unit: `scripts/frank-zealot.service` (symlinked into `/etc/systemd/system`), wrapper `scripts/serve-flm-small.sh`, tunables `scripts/frank-zealot.env`. `LimitMEMLOCK=infinity` is set in the unit. Default model: `gemma4-it:e4b`. Swap `FLM_MODEL` in the env to switch. `frank-zealot` then ran the NPU endpoint on Dankclaw (2026-08; the name was reused
twice after this window - see the banner - and the NPU unit today is `frank-npu`,
masked). Unit: `scripts/frank-zealot.service` (symlinked into `/etc/systemd/system`),
wrapper `scripts/serve-flm-small.sh`, tunables `scripts/frank-zealot.env`.
`LimitMEMLOCK=infinity` is set in the unit. Default model: `gemma4-it:e4b`. Swap
`FLM_MODEL` in the env to switch.
### Boot policy (2026-08-17) ### Boot policy (2026-08-17)
@@ -256,11 +266,13 @@ The 4-stream wall times form a near-perfect 10.7 s ladder. Each stream self-repo
Consequence: the NPU endpoint is a single lane. It suits low-frequency background work (triage, summarization, agent side-tasks). It does not suit interactive chat for several simultaneous users. The 27B llama.cpp service, by contrast, runs PARALLEL=2 with true concurrent slots. Consequence: the NPU endpoint is a single lane. It suits low-frequency background work (triage, summarization, agent side-tasks). It does not suit interactive chat for several simultaneous users. The 27B llama.cpp service, by contrast, runs PARALLEL=2 with true concurrent slots.
## Test Runbook ## Test Runbook
This runbook targets a retired endpoint; keep it as the procedure if the NPU is This runbook targets a retired endpoint; keep it as the procedure if the NPU is
ever revived. Do not run large model loads while the production service holds ever revived.
most of the unified pool — 30 GiB exposed to the OS in the 2026-08 reading,
**121 GiB** today (`free -g`, read 2026-10-18). Check free RAM first, or stop **Host RAM availability.** The gate is half of system RAM by default - a relic of the
install: the endpoint ran on a machine that presented 30 GiB of system RAM; on today's
box that ceiling is far larger (live figure: [[Dankclaw System Specs]]). Check free RAM
first, or stop
the service the way the bench policy requires (`sudo systemctl stop the service the way the bench policy requires (`sudo systemctl stop
frank-dragoon && sudo systemctl mask frank-dragoon` — self-healing would frank-dragoon && sudo systemctl mask frank-dragoon` — self-healing would
otherwise restart it). The NPU shares the unified pool with everything else on otherwise restart it). The NPU shares the unified pool with everything else on
@@ -119,5 +119,6 @@ re-download.
- [[Llama Cpp Runtimes]] — which fork ships which custom types - [[Llama Cpp Runtimes]] — which fork ships which custom types
- [[Llama Cpp Code Diff]] — the enum tables and code-level differences - [[Llama Cpp Code Diff]] — the enum tables and code-level differences
- [[frank-dragoon]] — the ftype-115 lock-in in production * [[kingjones-q8agent-rocmfpx]] — the era that served the ftype-115 file, and
[[frank-dragoon]] for what runs there now
- [[Llama Cpp Serving Sizing]] — pricing what a payload costs once it loads - [[Llama Cpp Serving Sizing]] — pricing what a payload costs once it loads
@@ -56,7 +56,10 @@ Lower values leave more GPU memory for KV cache. This reduces swap frequency.
### Swap Space / KV Offload ### Swap Space / KV Offload
Recent vLLM releases removed the `--swap-space` engine argument — `CacheConfig` on `main` has no `swap_space` field ([source](https://raw.githubusercontent.com/vllm-project/vllm/main/vllm/config/cache.py), read 2026-10-18). Use `--kv-offloading-size` (`kv_offloading_size`, same file) to move KV cache to CPU RAM. In Podman, mount the host cache read-write for KV offload writes. The table below shows historical `--swap-space` guidance as a sizing reference. Current vLLM has no `--swap-space` engine argument, and the CPU KV-offload knob pair
is owned by [[RAM CPU Offloading in VLLM]] (that page carries the upstream
`CacheConfig` verification). In Podman, mount the host cache read-write for KV offload
writes. The table below shows historical `--swap-space` guidance as a sizing reference.
| System RAM | Recommended Swap | | System RAM | Recommended Swap |
|------------|------------------| |------------|------------------|
@@ -40,9 +40,9 @@ curl -s <health> # then a REAL completion
``` ```
Deploy caveat: "healthy after Ns" = systemd ACTIVE, not model LOADED — Deploy caveat: "healthy after Ns" = systemd ACTIVE, not model LOADED —
confirm with a real `/v1/chat/completions`. RTX 3090 (Ampere) has no confirm with a real `/v1/chat/completions`. On Ampere an FP8 file buys memory
FP8/FP4 tensor cores: FP8 weights run via upcast but must still fit; choose and no compute ([[Quantization by Hardware Architecture]]): choose the quant by
quant by size fit, then accept the compute path the card supports. Before size fit, then accept the compute path the card supports. Before
choosing a smaller quant, state WHICH of the two you are buying — headroom, choosing a smaller quant, state WHICH of the two you are buying — headroom,
or a design change (a smaller quant does not change what the runtime can or a design change (a smaller quant does not change what the runtime can
express; per-tensor cross-device placement stays refused under express; per-tensor cross-device placement stays refused under
@@ -60,8 +60,8 @@ express; per-tensor cross-device placement stays refused under
## 3. Fetch and verify (HF payloads) ## 3. Fetch and verify (HF payloads)
**Inventory by QUANT NAME, never by extension** — large quants ship as **Inventory by QUANT NAME, never by extension** — large quants ship as
`.partNofM` fragments (Q4_K_M = 37.00+37.00+36.97 GiB), so an `.partNofM` fragments, so an `endswith(".gguf")` filter makes a whole rung look
`endswith(".gguf")` filter makes Q4_K_S look nonexistent. Check both nonexistent (AGENTS.md carries the worked fragment ledger). Check both
mradermacher repos (`…-i1-GGUF` imatrix, `…-GGUF` plain) and the model's own mradermacher repos (`…-i1-GGUF` imatrix, `…-GGUF` plain) and the model's own
repo; the tree API's `blobs=true` gives `lfs.oid` per file. Gated mirrors repo; the tree API's `blobs=true` gives `lfs.oid` per file. Gated mirrors
return 403 even with a valid token until the account accepts the gate — return 403 even with a valid token until the account accepts the gate —
@@ -150,7 +150,7 @@ recoverable, drift is not.
entry in `serverAppConfigs-docs/log.md`. entry in `serverAppConfigs-docs/log.md`.
2. `~/.omp/agent/models.yml`: `contextWindow` must equal the REAL per-slot 2. `~/.omp/agent/models.yml`: `contextWindow` must equal the REAL per-slot
context — llama.cpp logs `n_ctx_slot` per prompt (`--parallel N` divides context — llama.cpp logs `n_ctx_slot` per prompt (`--parallel N` divides
the pool; e.g. 262144 native / 2 slots = 131072 per slot); vLLM reports the pool; e.g. a 524288 pool over 2 slots = 262144 per slot); vLLM reports
`max-model-len` and its concurrency line. Overselling causes silent `max-model-len` and its concurrency line. Overselling causes silent
client-side overflow or a discovered-wall 400. Also `maxTokens` vs the client-side overflow or a discovered-wall 400. Also `maxTokens` vs the
engine's cap, `input` capabilities (text/image), and engine's cap, `input` capabilities (text/image), and
@@ -252,12 +252,10 @@ small/fast + image roles at the new endpoint; move the vision role WITH the
vision tower (one owner per capability). `shared/homepage/services.json`: a vision tower (one owner per capability). `shared/homepage/services.json`: a
card per endpoint, probed from the monitor's own host. Prometheus: only add card per endpoint, probed from the monitor's own host. Prometheus: only add
a job if the runtime actually exposes Prometheus text — and re-measure rather a job if the runtime actually exposes Prometheus text — and re-measure rather
than repeat, because that answer moves. This bullet once said halogen serves than repeat, because that answer moves: halogen's HTTP surface has grown twice
`/health`, `/cache`, `/v1/*` "and nothing else"; measured 2026-10-18 on since this page was written, and the endpoint list that matters for a scrape
Dankclaw, `curl -s http://127.0.0.1:7770/metrics` returns Prometheus text target — including whether `/metrics` answers — is [[frank-dragoon]]'s wire
(`# HELP llamacpp:prompt_tokens_total …`, content-type contract.
`text/plain; version=0.0.4`) while an invented path 404s — so the surface has
grown and a scrape target is expressible again.
**4. Cutover, then verify by driving it.** `deploy.sh <target> --service **4. Cutover, then verify by driving it.** `deploy.sh <target> --service
<large> --service <small>` (order matters); per endpoint: `/health`, <large> --service <small>` (order matters); per endpoint: `/health`,
@@ -265,10 +263,10 @@ grown and a scrape target is expressible again.
`reasoning_content`, a `tools` request returns `tool_calls`, an image `reasoning_content`, a `tools` request returns `tool_calls`, an image
request is answered (or refused with a named reason), the runtime's own request is answered (or refused with a named reason), the runtime's own
speculation counters move, and the unit is `enabled` and `active`. All three LLM speculation counters move, and the unit is `enabled` and `active`. All three LLM
endpoints are **root** units today (`User=dank` + `WantedBy=multi-user.target` — endpoints are **root** units today (`scripts/frank-archon.service`,
`scripts/frank-archon.service:30,71`, `scripts/frank-dragoon.service:8,31`, `scripts/frank-dragoon.service`, `scripts/frank-zealot.service`), so linger is
`scripts/frank-zealot.service:8,26`), so linger is not what gates them; linger not what gates them; linger matters for rootless quadlets. Read the engine's boot
matters for rootless quadlets. Read the engine's boot ledger for a silent clamp. Finally spend one ledger for a silent clamp. Finally spend one
real request through the harness per changed role — routing labels lie; the real request through the harness per changed role — routing labels lie; the
servers' own journals do not. servers' own journals do not.
@@ -285,4 +283,5 @@ predecessor "stopped" (the port race above).
- [[Llama Cpp Serving Sizing]] — pricing the shape once it loads - [[Llama Cpp Serving Sizing]] — pricing the shape once it loads
- [[RDNA4 MoE Expert Offload VRAM Budget]] — vLLM-side fit arithmetic - [[RDNA4 MoE Expert Offload VRAM Budget]] — vLLM-side fit arithmetic
- [[LLM Bench Windows and Measurement]] — measuring the new deployment - [[LLM Bench Windows and Measurement]] — measuring the new deployment
- [[frank-archon]] — the retired tcclaviger vLLM endpoint (2026-09-29 → 10-05); the live Dankserver endpoint is [[frank-archon]] * [[frank-archon]] — the live Dankserver endpoint; the tcclaviger vLLM era
(2026-09-29 → 10-05) is a row in its Eras table
@@ -147,12 +147,14 @@ cut to GPTQ-w4 for the 3090 is a bench experiment that needs no new
hardware; EXL3 (`convert.py` on the 3090, exllama serve) is the hardware; EXL3 (`convert.py` on the 3090, exllama serve) is the
quality-per-bit extreme of the same menu. quality-per-bit extreme of the same menu.
Caveats before any swap: the serving contract (OpenAI server, Caveats before any swap: the serving contract (OpenAI server,
`reasoning_content`, vision mmproj, compaction-hub window `reasoning_content`, vision mmproj, and the compaction-hub window the endpoint
200,704 ×2 slots) must be met by the challenger runtime, and the declares in its Current shape — [[frank-zealot]]) must be met by the challenger
24 GB card runs ONE server — benching follows the stop-and-mask law. runtime, and the 24 GB card runs ONE server — benching follows the stop-and-mask
law.
#### Worked example — the frank-archon w4dn8 recipe ported to the 3090 #### Worked example — the frank-archon w4dn8 recipe ported to the 3090
(audit 2026-10-08, target `Qwen3.6-35B-A3B`) (audit 2026-10-08, target `Qwen3.6-35B-A3B`; sized at that date's hub shape —
the window history is [[frank-zealot]]'s Eras table)
**The methodology ports; the encoding must be translated.** llama.cpp **The methodology ports; the encoding must be translated.** llama.cpp
decodes no GPTQ — the recipe re-expresses on GGUF-native terms: decodes no GPTQ — the recipe re-expresses on GGUF-native terms:
imatrix on our corpora (replaces the radiance grams; runs the 65 GiB imatrix on our corpora (replaces the radiance grams; runs the 65 GiB
@@ -253,8 +255,6 @@ top-8**, moe_intermediate 512, hidden 2048, MTP ×1, 262k ctx, vocab
- Repo: `scripts/convert-swift15-w4dn8.sh`, - Repo: `scripts/convert-swift15-w4dn8.sh`,
`scripts/recipes/qwen4exp-swift15-w4dn8-i8-hc8m.recipe`, `scripts/recipes/qwen4exp-swift15-w4dn8-i8-hc8m.recipe`,
`scripts/kld-gate-swift15.sh`, `scripts/build-llama-rdna4.sh`, `scripts/kld-gate-swift15.sh`, `scripts/build-llama-rdna4.sh`,
`scripts/build-kairic-edge-gfx1151.sh`, [[frank-dragoon]], `scripts/build-kairic-edge-gfx1151.sh`; endpoints [[frank-archon]],
[[frank-dragoon]], [[qwen3.8-strix-optimizations]], [[frank-dragoon]], [[frank-zealot]]; method [[qwen3.8-strix-optimizations]]
[[frank-archon]], and [[GGUF Compatibility]].
[[frank-zealot]],
[[frank-dragoon]], [[GGUF Compatibility]].
@@ -108,9 +108,10 @@ Use ROCmFP4 only with the ROCmFPX fork of llama.cpp. Upstream llama.cpp cannot r
## Choices for This Project ## Choices for This Project
### Dankserver (RTX 3090, 24 GB, Ampere) ### The RTX 3090 (24 GB, Ampere) — frank-zealot's card
The RTX 3090 has no native FP8 or FP4 tensor cores. Use: The 3090 has no native FP8 or FP4 tensor cores. It has sat in Dankclaw since
2026-09-16; [[frank-zealot]]'s Eras table records the move off Dankserver. Use:
| Ranking | Format | Why | | Ranking | Format | Why |
|---------|--------|-----| |---------|--------|-----|
@@ -121,13 +122,17 @@ The RTX 3090 has no native FP8 or FP4 tensor cores. Use:
### Dankclaw (Strix Halo gfx1151, RDNA 3.5) ### Dankclaw (Strix Halo gfx1151, RDNA 3.5)
RDNA 3.5 has no native FP8 tensor cores. The APU shares memory. The active Ling-3.0-flash service runs vLLM-ROCm with the AMD Quark INT4 (W4A16) format (the jcbtc CIRU Strix-native bundle). INT4 weights keep the 124B model inside the 96 GiB frame buffer with a full-precision KV cache. RDNA 3.5 has no native FP8 tensor cores and the APU shares its memory, so the
GPU budget is the GTT aperture and every live figure on the box is
[[Dankclaw System Specs]]. What serves here today is [[frank-dragoon]]: a
vendor `.hgn` checkpoint, a format this page cannot rank because no public
quantizer exists for it ([[Quantization Production]]).
| Ranking | Format | Why | | Ranking | Format | Why |
|---------|--------|-----| |---------|--------|-----|
| 1 | INT4 W4A16 (Quark/vLLM) | active; fits 96 GiB; native ROCm kernels; concurrency | | 1 | `.hgn` (deployed) | the halogen engine's own format; production door is closed |
| 2 | MXFP4 (Quark) | same-bit, higher accuracy; beta on gfx1151 (A/B experiment) | | 2 | GGUF K/I quants, K_P blends | the only self-produced option on this card ([[Quantization Production]]) |
| 3 | GGUF Q4_K_M / Q8_0 | works with upstream llama.cpp only | | 3 | INT4 W4A16 (Quark) / MXFP4 (Quark) | the retired Ling-3.0-flash vLLM era, measured under the firmware-VGM frame buffer: [[ling-3.0-flash-trial]] |
| 4 | FP8 (vLLM) | software emulation; memory savings only; no compute win | | 4 | FP8 (vLLM) | software emulation; memory savings only; no compute win |
## See Also ## See Also
@@ -11,9 +11,19 @@ timestamp: 2026-08-28
## Overview ## Overview
vLLM uses CPU RAM and swap space to extend GPU memory capacity. This allows larger models to run on GPUs with limited VRAM. vLLM does not offload model weights to CPU. Instead, vLLM moves KV cache data between GPU and CPU. Stock vLLM offloads **KV pages**, not weights: the scheduler moves KV cache between GPU
and CPU. That is the upstream behaviour and it is NOT the whole story on our hosts — the
tcclaviger/R4D fork ran a real **weight** offload (`--enable-expert-offload`, tiered
expert placement, a pinned host pool per rank), which is how a 147 GiB MoE served from a
246 GiB box: [[RDNA4 MoE Expert Offload VRAM Budget]] and the tcclaviger era row of
[[frank-archon]]. First-hand in-repo evidence outranks a generic upstream claim about our
own hosts ([[Model Swap and Rollback]] §10).
> **Current vLLM note:** Recent vLLM releases removed the `--swap-space` engine argument. CPU KV-cache offloading now uses `--kv-offloading-size`. See the parameters below for details. > **Verified 2026-10-19 against `vllm/config/cache.py` on `main`:** there is no
> `swap_space` field — `--swap-space` is gone from current engine args. CPU KV offload is
> `--kv-offloading-size`, and it activates **only** together with `--kv-offloading-backend`
> (default `native`); both fields live in that one file. This page is the fleet's owner of
> that knob contract — other pages link here instead of restating it.
## How CPU Offloading Works ## How CPU Offloading Works
@@ -42,9 +52,12 @@ This parameter controls the fraction of GPU memory used for KV cache.
Lower values leave more GPU memory for model weights. Higher values allow more concurrent requests but increase swap frequency. Lower values leave more GPU memory for model weights. Higher values allow more concurrent requests but increase swap frequency.
### swap_space (removed) / kv-offloading-size (current) ### swap_space (removed) / kv-offloading-size + kv-offloading-backend (current)
The `--swap-space` argument was removed from current vLLM engine args. Use `--kv-offloading-size` instead. The table below describes the historical `--swap-space` values for reference. `--swap-space` no longer exists in current engine args (verified above); the live pair is
`--kv-offloading-size` with `--kv-offloading-backend`, and offload stays off until the size
is set. The table below is the historical `--swap-space` sizing guidance, kept as a sizing
reference only.
| Value | Description | | Value | Description |
|-------|-------------| |-------|-------------|
@@ -103,6 +116,9 @@ This parameter sets the KV cache data type.
## Memory Configuration Examples ## Memory Configuration Examples
All three examples carry the retired `--swap-space` syntax and are kept as sizing
references; the live knob pair is named above.
### Small Model on Single GPU ### Small Model on Single GPU
``` ```
@@ -157,7 +173,7 @@ WARNING scheduler.py: Sequence group 0 is preempted by PreemptionMode.RECOMPUTE
If you see frequent preemptions: If you see frequent preemptions:
1. Increase `gpu_memory_utilization` 1. Increase `gpu_memory_utilization`
2. Increase `swap_space` 2. Raise the KV offload budget (`--kv-offloading-size`, with `--kv-offloading-backend`)
3. Decrease `max_num_seqs` 3. Decrease `max_num_seqs`
4. Increase `tensor_parallel_size` 4. Increase `tensor_parallel_size`
5. Increase `max_model_len` to match actual usage 5. Increase `max_model_len` to match actual usage
@@ -169,7 +185,8 @@ If you see frequent preemptions:
- Reduce `max_num_seqs` to limit concurrent requests - Reduce `max_num_seqs` to limit concurrent requests
- Disable CUDA graphs with `--enforce-eager` to save memory - Disable CUDA graphs with `--enforce-eager` to save memory
- Set `compilation_config.cudagraph_capture_sizes` to smaller values - Set `compilation_config.cudagraph_capture_sizes` to smaller values
- Use `--kv-cache-memory` to skip memory profiling - Set `--kv-cache-memory-bytes` to pin the KV budget instead of letting the profiler guess
(the flag our own `scripts/patches/gpu_worker-kv-cap.patch` reads)
- Limit multi-modal inputs with `limit_mm_per_prompt` - Limit multi-modal inputs with `limit_mm_per_prompt`
## Environment Variables ## Environment Variables
@@ -7,6 +7,12 @@ timestamp: 2026-09-03
--- ---
# Running Qwen3.6 27B FP8 on Dankclaw # Running Qwen3.6 27B FP8 on Dankclaw
> **RETIRED - vLLM era (before the 2026-08-17 redo).** Nothing on this page serves
> today: no vLLM or ROCm process runs on Dankclaw, and the iGPU endpoint at
> `192.168.0.143:7770` is [[frank-dragoon]] (halogen flash-server). The page stays as
> the era record of the Qwen3.6-27B-FP8 vLLM bring-up and the Strix Halo ROCm
> recipes ([[frank-redo-2026-08-17]]). The hardware table below carries the era's
> host figures; live ones are [[Dankclaw System Specs]].
## Model Information ## Model Information
@@ -29,6 +35,7 @@ Qwen3.6-27B is a dense vision-language model from the Qwen3.6 series. It uses 27
| Vision Encoder | Yes (image-text-to-text) | | Vision Encoder | Yes (image-text-to-text) |
## Hardware: Dankclaw ## Hardware: Dankclaw
*Era figures (2026-08). The host has changed since - [[Dankclaw System Specs]].*
| Property | Value | | Property | Value |
|----------|-------| |----------|-------|
@@ -55,7 +62,11 @@ The FP8 variant requires approximately 16-17 GB. ThinkingCap-FP8 requires ~29 GB
## Prerequisites ## Prerequisites
> **Production note:** Dankclaw's primary service now runs vLLM-ROCm with the Ling-3.0-flash CIRU INT4 model (see `scripts/frank-dragoon.service`). This page documents the alternative vLLM FP8 deployment of Qwen3.6-27B. > **Era note (2026-08, superseded twice):** at writing time Dankclaw's primary
> service was the vLLM-ROCm Ling-3.0-flash CIRU INT4 trial ([[ling-3.0-flash-trial]],
> retired 2026-08-17), and this page documented the alternative vLLM FP8 deployment
> of Qwen3.6-27B. Both paths are dead; `scripts/frank-dragoon.service` today is the
> halogen flash-server unit ([[frank-dragoon]]).
Install vLLM for ROCm. Version 0.24.0+ is required for Qwen3.6 with speculative decoding: Install vLLM for ROCm. Version 0.24.0+ is required for Qwen3.6 with speculative decoding:
@@ -103,7 +103,7 @@ vllm serve model \
- `gpu_memory_utilization`: Set lower (0.8-0.85) to leave room for CPU operations - `gpu_memory_utilization`: Set lower (0.8-0.85) to leave room for CPU operations
- `max_model_len`: Match actual context needs - `max_model_len`: Match actual context needs
- The old `--swap-space` argument was removed from current vLLM — `CacheConfig` on `main` carries no `swap_space` field ([source](https://raw.githubusercontent.com/vllm-project/vllm/main/vllm/config/cache.py), read 2026-10-18). Use `--kv-offloading-size` (`kv_offloading_size`, same file) for CPU KV offload - `--swap-space` is retired from current vLLM; the CPU KV-offload knob pair, with the upstream `CacheConfig` verification, is owned by [[RAM CPU Offloading in VLLM]]
### NUMA Binding ### NUMA Binding
+2 -2
View File
@@ -60,7 +60,7 @@ vllm serve meta-llama/Llama-3.1-70B-Instruct --tensor-parallel-size 4
vllm serve Qwen/Qwen2.5-1.5B-Instruct --quantization fp8 vllm serve Qwen/Qwen2.5-1.5B-Instruct --quantization fp8
# With GPU memory control # With GPU memory control
vllm serve Qwen/Qwen2.5-1.5B-Instruct --gpu-memory-utilization 0.8 --swap-space 8 vllm serve Qwen/Qwen2.5-1.5B-Instruct --gpu-memory-utilization 0.8 --kv-offloading-size 8 --kv-offloading-backend native
``` ```
### Common API Endpoints ### Common API Endpoints
@@ -79,7 +79,7 @@ vllm serve Qwen/Qwen2.5-1.5B-Instruct --gpu-memory-utilization 0.8 --swap-space
|-----------|-------------|---------------| |-----------|-------------|---------------|
| tensor_parallel_size | Number of GPUs for model sharding | 1-8 | | tensor_parallel_size | Number of GPUs for model sharding | 1-8 |
| gpu_memory_utilization | Fraction of GPU memory for KV cache (default 0.92) | 0.7-0.95 | | gpu_memory_utilization | Fraction of GPU memory for KV cache (default 0.92) | 0.7-0.95 |
| swap_space | Removed in current vLLM; use `--kv-offloading-size` | n/a | | swap_space | Retired; live knob pair in [[RAM CPU Offloading in VLLM]] | n/a |
| max_model_len | Maximum context length | auto | | max_model_len | Maximum context length | auto |
| max_num_batched_tokens | Max tokens per batch | 2048-8192 | | max_num_batched_tokens | Max tokens per batch | 2048-8192 |
| max_num_seqs | Max sequences per batch | 128-512 | | max_num_seqs | Max sequences per batch | 128-512 |
+2 -2
View File
@@ -140,7 +140,7 @@ curl http://localhost:8000/v1/chat/completions \
| `tensor_parallel_size` | 1 | Number of GPUs for tensor parallelism | | `tensor_parallel_size` | 1 | Number of GPUs for tensor parallelism |
| `pipeline_parallel_size` | 1 | Number of GPUs for pipeline parallelism | | `pipeline_parallel_size` | 1 | Number of GPUs for pipeline parallelism |
| `gpu_memory_utilization` | 0.92 | Fraction of GPU memory for KV cache | | `gpu_memory_utilization` | 0.92 | Fraction of GPU memory for KV cache |
| `swap_space` | removed | Removed in current vLLM; use `--kv-offloading-size` | | `swap_space` | — | retired; the live CPU-KV-offload knob pair is in [[RAM CPU Offloading in VLLM]] |
| `enforce_eager` | false | Use eager mode (no CUDA graphs) | | `enforce_eager` | false | Use eager mode (no CUDA graphs) |
| `max_num_batched_tokens` | 2048 | Max tokens per batch | | `max_num_batched_tokens` | 2048 | Max tokens per batch |
| `max_num_seqs` | 128 | Max sequences per batch | | `max_num_seqs` | 128 | Max sequences per batch |
@@ -167,7 +167,7 @@ curl http://localhost:8000/v1/chat/completions \
| Argument | Default | Description | | Argument | Default | Description |
|----------|---------|-------------| |----------|---------|-------------|
| `gpu_memory_utilization` | 0.92 | Fraction of GPU memory for KV cache | | `gpu_memory_utilization` | 0.92 | Fraction of GPU memory for KV cache |
| `swap_space` | removed | Removed in current vLLM; use `--kv-offloading-size` | | `swap_space` | — | retired; the live CPU-KV-offload knob pair is in [[RAM CPU Offloading in VLLM]] |
| `kv_cache_dtype` | auto | KV cache data type (auto, fp8, fp8_e5m2) | | `kv_cache_dtype` | auto | KV cache data type (auto, fp8, fp8_e5m2) |
| `max_model_len` | auto | Maximum context length | | `max_model_len` | auto | Maximum context length |
| `num_gpu_blocks` | auto | Number of GPU blocks | | `num_gpu_blocks` | auto | Number of GPU blocks |
@@ -14,6 +14,10 @@ timestamp: 2026-09-03
> **SUPERSEDED 2026-08-17.** The Frank redo retired this topology. > **SUPERSEDED 2026-08-17.** The Frank redo retired this topology.
> See [[frank-redo-2026-08-17]] and [[deployment]] for the active configuration. > See [[frank-redo-2026-08-17]] and [[deployment]] for the active configuration.
> The `frank-zealot` below is the 2026-08 service: llama.cpp on the RTX 3090
> **while that card sat in Dankserver**. Today's [[frank-zealot]] is a different host
> (Dankclaw), payload and runtime build, though the same card class - this crash
> signature is not a live fault.
# Dankserver VRAM and RAM Growth Under Load # Dankserver VRAM and RAM Growth Under Load
@@ -1,7 +1,7 @@
--- ---
type: runbook type: runbook
title: frank-medium Model Swap title: frank-medium Model Swap
description: How to swap the checkpoint behind the frank-medium endpoint (Dankserver :7770, vllm-radiance TP=2) — the streamlining toolchain (hf-manifest.py, hf-fetch.sh, swap-frank-medium.sh), the quantization-aware entrypoint contract, the quadlet edit, the deploy, the capability battery, and the rollback path. description: RETIRED-era procedure (frank-medium is a retired endpoint; `:7770` on Dankserver is [[frank-archon]] today and the live swap law is [[Model Swap and Rollback]]) — how a checkpoint swap behind frank-medium worked: the streamlining toolchain (hf-manifest.py, hf-fetch.sh, swap-frank-medium.sh), the quantization-aware entrypoint contract, the quadlet edit, the deploy, the capability battery, and the rollback path.
tags: tags:
- frank-medium - frank-medium
- dankserver - dankserver
@@ -14,12 +14,13 @@ timestamp: 2026-09-20
# frank-medium Model Swap # frank-medium Model Swap
Swapping the checkpoint behind **frank-medium** (Dankserver `:7770`, **Historical.** frank-medium is a retired endpoint — `:7770` on Dankserver is
vllm-radiance TP=2) is a four-step process, and the toolchain below drives all [[frank-archon]] today, and the live procedure is [[Model Swap and Rollback]].
of it. The design goal (2026-09-20, after the MXFP4 → FP8 swap) is that a swap This page records how a swap worked in that era: a four-step process whose design
is **one command**: generate a manifest, download it verified, point the goal (2026-09-20, after the MXFP4 → FP8 swap) was that a swap be **one command** —
quadlet at it, deploy. The entrypoint is quantization-aware, so the only repo generate a manifest, download it verified, point the quadlet at it, deploy. The
change a swap makes is the quadlet's four env vars. entrypoint was quantization-aware, so the only repo change a swap made was the
quadlet's four env vars.
## Why this exists ## Why this exists
@@ -1,7 +1,7 @@
--- ---
type: configuration type: configuration
title: frank-medium vllm-radiance MXFP6 Runbook title: frank-medium vllm-radiance MXFP6 Runbook
description: ACTIVE frank-medium runbook — vllm-radiance serving hugypufy/Swift-Qwen3.8-27B-PARO-MXFP6 (ParoQuant MXFP6 W4A8, DFlash2 drafter, unquantized bf16 KV) as ONE tensor-parallel process (TP=2) on Dankserver's two AMD Radeon AI PRO R9700 (gfx1201). Cut to MXFP6 on 2026-09-21 (PR #51's launch6_p kernel, image 0.13.0-e060895); the MXFP4 checkpoint (just1moremodel/Qwen3.8-27B-Uncensored-MXFP4-awq, the 2026-09-21 shape) is the on-disk rollback. Model-swap process: [[frank-medium-model-swap]]. The sections below describe the 2026-09-16 two-replica era. description: RETIRED era runbook (endpoint renamed frank-archon 2026-10-10; this shape is a row in [[frank-archon]]'s Eras table) — vllm-radiance serving hugypufy/Swift-Qwen3.8-27B-PARO-MXFP6 (ParoQuant MXFP6 W4A8, DFlash2 drafter, unquantized bf16 KV) as ONE tensor-parallel process (TP=2) on Dankserver's two AMD Radeon AI PRO R9700 (gfx1201). Cut to MXFP6 on 2026-09-21 (PR #51's launch6_p kernel, image 0.13.0-e060895); the MXFP4 checkpoint (just1moremodel/Qwen3.8-27B-Uncensored-MXFP4-awq, the 2026-09-21 shape) is the on-disk rollback. Model-swap process: [[frank-medium-model-swap]]. The sections below describe the 2026-09-16 two-replica era.
tags: tags:
- frank-medium - frank-medium
- dankserver - dankserver
@@ -19,7 +19,8 @@ timestamp: 2026-09-21
# frank-medium vllm-radiance MXFP6 Runbook # frank-medium vllm-radiance MXFP6 Runbook
The ACTIVE frank-medium deployment: the `ggz14/vllm-radiance-mxfp4:0.13.0-e060895` **RETIRED era (2026-09-21 → 10-10; the endpoint is [[frank-archon]] today and this
shape is one row in its Eras table.)** The deployment was the `ggz14/vllm-radiance-mxfp4:0.13.0-e060895`
image (built from PR #51's head, tagged locally as image (built from PR #51's head, tagged locally as
`localhost/radiance-vllm:0.13.0-e060895`) plus the `radiance-vllm-mxfp4` `localhost/radiance-vllm:0.13.0-e060895`) plus the `radiance-vllm-mxfp4`
patches at e060895, serving `hugypufy/Swift-Qwen3.8-27B-PARO-MXFP6` patches at e060895, serving `hugypufy/Swift-Qwen3.8-27B-PARO-MXFP6`
@@ -14,14 +14,10 @@ The pipeline-parallel split and the FastFlowLM NPU endpoint were retired.
The old scripts moved to `old/scripts/` in this repository. The old scripts moved to `old/scripts/` in this repository.
> **HISTORY — the topology below is two fleet generations dead.** Today the > **HISTORY — the topology below is two fleet generations dead.** Today the
> fleet is three endpoints: [[frank-archon]] > fleet is three endpoints, each owned by its page: [[frank-archon]]
> (`192.168.0.235:7770`, radiance 1.0.13, 2×R9700 TP=2), > (`192.168.0.235:7770`), [[frank-dragoon]] (`192.168.0.143:7770`) and
> [[frank-dragoon]] (`192.168.0.143:7770`, halogen > [[frank-zealot]] (`192.168.0.143:7771`). No vLLM and no ROCm endpoint serves
> flash-server 0.16.2 on the iGPU) and > anything; there is no pipeline parallelism and no NPU endpoint.
> [[frank-zealot]] (`192.168.0.143:7771`, llama.cpp
> PrismML fork build 10754 on the RTX 3090 — the card that sat in Dankserver
> until 2026-09-15). No vLLM and no ROCm endpoint serves anything; there is no
> pipeline parallelism and no NPU endpoint.
## New Topology ## New Topology
+2 -2
View File
@@ -19,8 +19,8 @@ each of those owns exactly that one thing. The incidents behind the laws are in
|---|---| |---|---|
| [[frank-medium-batch-ubatch]] | llama-bench sweep of --batch-size against --ubatch-size on frank-medium (2x Radeon AI PRO R9700, layer split) at the… | | [[frank-medium-batch-ubatch]] | llama-bench sweep of --batch-size against --ubatch-size on frank-medium (2x Radeon AI PRO R9700, layer split) at the… |
| [[frank-medium-llamacpp-dflash2]] | The former ACTIVE frank-medium deployment since 2026-09-16 (model swapped 2026-09-19) — mainline llama.cpp on… | | [[frank-medium-llamacpp-dflash2]] | The former ACTIVE frank-medium deployment since 2026-09-16 (model swapped 2026-09-19) — mainline llama.cpp on… |
| [[frank-medium-model-swap]] | How to swap the checkpoint behind the frank-medium endpoint (Dankserver :7770, vllm-radiance TP=2) — the streamlining… | | [[frank-medium-model-swap]] | RETIRED-era swap procedure for the frank-medium endpoint (`:7770` is now [[frank-archon]]) — the… |
| [[frank-medium-radiance-mxfp4]] | ACTIVE frank-medium runbook — vllm-radiance serving hugypufy/Swift-Qwen3.8-27B-PARO-MXFP6 (ParoQuant MXFP6 W4A8,… | | [[frank-medium-radiance-mxfp4]] | RETIRED frank-medium era runbook — vllm-radiance serving hugypufy/Swift-Qwen3.8-27B-PARO-MXFP6 (ParoQuant MXFP6 W4A8,… |
| [[frank-medium-rocmfpx]] | charlie12345/ROCmFPX llama.cpp serving kingjones777/Qwen3.8-27B-ROCmFPX-Q8_0-AGENT-GGUF as frank-medium on Dankserver… | | [[frank-medium-rocmfpx]] | charlie12345/ROCmFPX llama.cpp serving kingjones777/Qwen3.8-27B-ROCmFPX-Q8_0-AGENT-GGUF as frank-medium on Dankserver… |
| [[frank-npu]] | The retired FastFlowLM endpoint on Dankclaw's XDNA2 NPU — what it served, why it died on 2026-09-11 with the… | | [[frank-npu]] | The retired FastFlowLM endpoint on Dankclaw's XDNA2 NPU — what it served, why it died on 2026-09-11 with the… |
| [[frank-redo-2026-08-17]] | This page records the full redo of the inference fleet on 2026-08-17. | | [[frank-redo-2026-08-17]] | This page records the full redo of the inference fleet on 2026-08-17. |
@@ -15,6 +15,8 @@ This page was the plan for a vLLM-ROCm deployment of
Dankclaw. The deployment never shipped. The actual Ling work used the Dankclaw. The deployment never shipped. The actual Ling work used the
llama.cpp Q6_K fork trial instead: [[ling-3.0-flash-trial]]. llama.cpp Q6_K fork trial instead: [[ling-3.0-flash-trial]].
The trial service (`frank-dragoon-ling`) is retired and disabled under the The trial service (`frank-dragoon-ling`) was retired and disabled under the boot
boot policy (2026-08-17). `frank-dragoon` is the Qwen3.8-27B PP policy on 2026-08-17, in the same redo that renamed `frank-dragoon` to the
head, not the Ling path. See git history for the full decision table. Qwen3.8-27B PP head ([[frank-redo-2026-08-17]]). Two fleet generations later the
name belongs to the halogen flash-server endpoint ([[frank-dragoon]]). See git
history for the full decision table.
+2 -2
View File
@@ -26,8 +26,8 @@ that endpoint's page, not a page.
|---|---| |---|---|
| [[frank-medium-batch-ubatch]] | llama-bench sweep of --batch-size against --ubatch-size on frank-medium (2x Radeon AI PRO R9700, layer split) at the… | | [[frank-medium-batch-ubatch]] | llama-bench sweep of --batch-size against --ubatch-size on frank-medium (2x Radeon AI PRO R9700, layer split) at the… |
| [[frank-medium-llamacpp-dflash2]] | The former ACTIVE frank-medium deployment since 2026-09-16 (model swapped 2026-09-19) — mainline llama.cpp on… | | [[frank-medium-llamacpp-dflash2]] | The former ACTIVE frank-medium deployment since 2026-09-16 (model swapped 2026-09-19) — mainline llama.cpp on… |
| [[frank-medium-model-swap]] | How to swap the checkpoint behind the frank-medium endpoint (Dankserver :7770, vllm-radiance TP=2) — the streamlining… | | [[frank-medium-model-swap]] | RETIRED-era swap procedure for the frank-medium endpoint (`:7770` is now [[frank-archon]]) — the… |
| [[frank-medium-radiance-mxfp4]] | ACTIVE frank-medium runbook — vllm-radiance serving hugypufy/Swift-Qwen3.8-27B-PARO-MXFP6 (ParoQuant MXFP6 W4A8,… | | [[frank-medium-radiance-mxfp4]] | RETIRED frank-medium era runbook — vllm-radiance serving hugypufy/Swift-Qwen3.8-27B-PARO-MXFP6 (ParoQuant MXFP6 W4A8,… |
| [[frank-medium-rocmfpx]] | charlie12345/ROCmFPX llama.cpp serving kingjones777/Qwen3.8-27B-ROCmFPX-Q8_0-AGENT-GGUF as frank-medium on Dankserver… | | [[frank-medium-rocmfpx]] | charlie12345/ROCmFPX llama.cpp serving kingjones777/Qwen3.8-27B-ROCmFPX-Q8_0-AGENT-GGUF as frank-medium on Dankserver… |
| [[frank-npu]] | The retired FastFlowLM endpoint on Dankclaw's XDNA2 NPU — what it served, why it died on 2026-09-11 with the… | | [[frank-npu]] | The retired FastFlowLM endpoint on Dankclaw's XDNA2 NPU — what it served, why it died on 2026-09-11 with the… |
| [[frank-redo-2026-08-17]] | This page records the full redo of the inference fleet on 2026-08-17. | | [[frank-redo-2026-08-17]] | This page records the full redo of the inference fleet on 2026-08-17. |