docs: llama.cpp stack at production state (2026-08-16) + sibling-project links
- spec matrix: new 'Production state' section — PP head (RPC0+ROCm0, split 0.40/0.60), pool 401400 / n_ctx_slot 200704 live, MTP n_max 4 over ngram-mod fallback (journal acceptance stats), f16 KV. 2026-08-15 standalone state marked superseded (Vulkan0 verdict was standalone-only; PP head runs ROCm0 by default). - deployment.md: fix frank-default-large section (MTP not 'no draft', ROCm0 not Vulkan0, 200704/slot not 262144, f16 not q8_0 KV, serve-pp-head.sh not serve-llama-frank-large.sh). - PP deployment doc: production-state section; test-day open questions resolved with journal evidence. - index.md: NPU line now qwen3.6-moe:35b-a3b @262k ctx; Sibling projects section -> serverAppConfigs. - AGENTS.md: overview reflects PP+MTP reality; sibling pointer.
This commit is contained in:
1 parent
f5a78db017
commit
7fe271e65d
5 files changed
+139
-31
No files matched your search
@@ -2,7 +2,25 @@
|
|||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
This project manages deployment scripts for two LLM inference servers. Dankclaw runs a llama.cpp service for Qwen3.8-27B (unsloth UD-Q8_K_XL) with llama.cpp's `--spec-default` (ngram-mod, no draft model, Vulkan0 backend, 2 parallel slots, port 7770). Dankclaw's NPU endpoint (FastFlowLM, `frank-default-small`, port 52625) serves Qwen3.6-35B-A3B as registry tag `qwen3.6-moe:35b-a3b` at 262144 ctx (swapped in 2026-08-16; the old llama.cpp 35B service on Dankserver is stopped). See [docs/deployment.md](docs/deployment.md) for the full deployment and update process, and [docs/qwen3.8-spec-matrix.md](docs/qwen3.8-spec-matrix.md) for the spec decision (--spec-default + Vulkan0, 2026-08-15; DSpark retired same day for a ROCm parallel crash; DFlash retired earlier for premature EOS).
|
This project manages deployment scripts for the LLM inference fleet.
|
||||||
|
Dankclaw runs a llama.cpp pipeline-parallel head for Qwen3.8-27B (unsloth
|
||||||
|
UD-Q8_K_XL): MTP draft (bundled head, `--spec-draft-n-max 4`) over the
|
||||||
|
`--spec-default` ngram-mod fallback, 2 parallel slots at 200704 context
|
||||||
|
(pool 401400), tensors split 0.40/0.60 to the Dankserver RTX 3090
|
||||||
|
`ggml-rpc` worker, head GPU side on ROCm0 (no `--device` flag), port 7770.
|
||||||
|
The Dankclaw NPU endpoint (FastFlowLM, `frank-default-small`, port 52625)
|
||||||
|
serves Qwen3.6-35B-A3B as registry tag `qwen3.6-moe:35b-a3b` at 262144 ctx
|
||||||
|
(swapped in 2026-08-16; the old llama.cpp 35B service on Dankserver is
|
||||||
|
stopped). See [docs/deployment.md](docs/deployment.md) for the deployment
|
||||||
|
process, [docs/qwen3.8-spec-matrix.md](docs/qwen3.8-spec-matrix.md) for the
|
||||||
|
spec history and current production state, and
|
||||||
|
[docs/Pipeline Parallelism/Qwen3.8 PP Deployment.md](docs/Pipeline%20Parallelism/Qwen3.8%20PP%20Deployment.md)
|
||||||
|
for the PP runbook.
|
||||||
|
|
||||||
|
**Sibling project:** [../serverAppConfigs](../serverAppConfigs) manages the
|
||||||
|
Podman app stack on the same hosts (OpenWebUI, Gitea, observability). Its
|
||||||
|
OpenWebUI consumes the `:7770` endpoint; its Gitea instance hosts this
|
||||||
|
repository. Cross-links live in both knowledge-base indexes.
|
||||||
|
|
||||||
## Benchmarking Policy (MANDATORY)
|
## Benchmarking Policy (MANDATORY)
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,33 @@ Split Qwen3.8-27B UD-Q8_K_XL across the Strix Halo iGPU (head) and the RTX
|
|||||||
morning-of runbook. Research background:
|
morning-of runbook. Research background:
|
||||||
[Qwen3.8 Strix optimizations](../../qwen3.8-strix-optimizations.md).
|
[Qwen3.8 Strix optimizations](../../qwen3.8-strix-optimizations.md).
|
||||||
|
|
||||||
|
## Production state (promoted 2026-08-16)
|
||||||
|
|
||||||
|
This split is the production `frank-default-large` service (renamed from
|
||||||
|
`frank-pp-head`, commit `48142f5`). Current state, verified against the
|
||||||
|
live journal (2026-08-16, 15:03 load):
|
||||||
|
|
||||||
|
- Split `0.40,0.60` (not the test-day `1,1`): 40% of the layers on the
|
||||||
|
3090 — its maximum under the 2x200700 f16 KV budget — 60% on the iGPU.
|
||||||
|
- Pool `401400`, `PARALLEL=2`, live `n_ctx_slot = 200704`.
|
||||||
|
- MTP enabled: `--spec-type draft-mtp --spec-draft-n-max 4` + ngram-mod
|
||||||
|
fallback (48/64/24). Journal acceptance: MTP mean len 3.00
|
||||||
|
(per-position 0.730/0.541/0.411/0.323).
|
||||||
|
- Head GPU side: **ROCm0** (no `--device` flag; HIP registers before
|
||||||
|
Vulkan). KV at load: 15680 MiB ROCm0 + 9408 MiB RPC0.
|
||||||
|
- Unit `frank-default-large.service`, launched through
|
||||||
|
`serve-pp-head.sh` + `frank-default-large.env`.
|
||||||
|
|
||||||
|
Open questions from the test day, resolved:
|
||||||
|
|
||||||
|
1. MTP (in the last layer group, iGPU side) drafts cleanly across the RPC
|
||||||
|
boundary — see the acceptance figures above.
|
||||||
|
2. Two parallel slots hold under production load: 150k-token prompts
|
||||||
|
prefill and generate, slots turn over every few minutes, no RPC
|
||||||
|
faults observed.
|
||||||
|
3. Long prompts (~160k tokens) prefill on the ROCm0 side with no
|
||||||
|
RPC-boundary anomaly in production traffic.
|
||||||
|
|
||||||
## Topology
|
## Topology
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
+28
-12
@@ -140,23 +140,36 @@ curl -sf http://127.0.0.1:7770/health
|
|||||||
|
|
||||||
### Dankclaw — frank-default-large
|
### Dankclaw — frank-default-large
|
||||||
|
|
||||||
The active service on Dankclaw runs llama.cpp serving the unsloth
|
The active service on Dankclaw is the llama.cpp **pipeline-parallel
|
||||||
Qwen3.8-27B `UD-Q8_K_XL` model under the alias `frank-default-large` on port
|
head**. It serves the unsloth Qwen3.8-27B `UD-Q8_K_XL` model under the
|
||||||
7770. It uses llama.cpp's **`--spec-default`** preset (ngram-mod, no draft
|
alias `frank-default-large` on port 7770. The head splits the tensors
|
||||||
model) for speculative decoding on the **Vulkan0** backend, with **2
|
`0.40,0.60` to the `ggml-rpc` worker on Dankserver (RTX 3090, port 50052).
|
||||||
parallel slots** at 262144 context each, KV cache `q8_0` K / `q8_0` V on
|
Speculative decoding runs **MTP** (bundled head, `--spec-draft-n-max 4`)
|
||||||
GPU, full layer offload (`--gpu-layers all`, `--fit off`), and batch 8192 /
|
with the `--spec-default` ngram-mod fallback (48/64/24). The head GPU side
|
||||||
ubatch 256. The unit file is `scripts/frank-default-large.service`. It
|
runs **ROCm0** (no `--device` flag; default device selection puts RPC
|
||||||
launches through `scripts/serve-llama-frank-large.sh`, which reads tunables
|
first and picks ROCm for the iGPU). **2 parallel slots** at 200704 context
|
||||||
from `scripts/frank-default-large.env`.
|
each (pool 401400), KV cache `f16` K / `f16` V, full layer offload
|
||||||
|
(`--gpu-layers all`, `--fit off`), batch 8192 / ubatch 256, `--direct-io`.
|
||||||
|
The unit file is `scripts/frank-default-large.service`. It launches through
|
||||||
|
`scripts/serve-pp-head.sh`, which reads tunables from
|
||||||
|
`scripts/frank-default-large.env`.
|
||||||
|
|
||||||
|
> Note: 2026-08-16 — the pipeline-parallel split was promoted to
|
||||||
|
> production as `frank-default-large` (renamed from `frank-pp-head`);
|
||||||
|
> the standalone single-node service retired. MTP was re-enabled at
|
||||||
|
> `n_max 4` over the ngram-mod fallback. The pool shrank from 524288 to
|
||||||
|
> 401400 (2 slots x 200700) to fit the split KV budget. See
|
||||||
|
> [[Pipeline Parallelism/Qwen3.8 PP Deployment]] for the runbook.
|
||||||
|
|
||||||
> Note: 2026-08-15 — the spec went DSpark (crashed under two concurrent 16k
|
> Note: 2026-08-15 — the spec went DSpark (crashed under two concurrent 16k
|
||||||
> prompts on ROCm, `ROCm error: an illegal memory access`, status 6/ABRT) →
|
> prompts on ROCm, `ROCm error: an illegal memory access`, status 6/ABRT) →
|
||||||
> `--spec-default` (ngram-mod, parallel-safe, PARALLEL=2). The backend went
|
> `--spec-default` (ngram-mod, parallel-safe, PARALLEL=2). The backend went
|
||||||
> ROCm → Vulkan0 after a 262k-ctx bench showed Vulkan decodes 48% faster
|
> ROCm → Vulkan0 after a 262k-ctx bench showed Vulkan decodes 48% faster
|
||||||
> (5.68 vs 3.83 t/s). See [[qwen3.8-spec-matrix]] for both decisions and
|
> (5.68 vs 3.83 t/s). That Vulkan0 verdict applied to the standalone
|
||||||
> the bench table. Also retired earlier: bundled MTP, the vLLM-ROCm CIRU
|
> configuration; the PP head runs ROCm0 by default (HIP registers before
|
||||||
> INT4 Ling-3.0-flash runtime, and the llama-serve/vLLM units on Dankclaw.
|
> Vulkan). See [[qwen3.8-spec-matrix]] for both decisions and the bench
|
||||||
|
> table. Also retired earlier: the vLLM-ROCm CIRU INT4 Ling-3.0-flash
|
||||||
|
> runtime, and the llama-serve/vLLM units on Dankclaw.
|
||||||
|
|
||||||
### Dankserver — frank-default-small (STOPPED 2026-08-16)
|
### Dankserver — frank-default-small (STOPPED 2026-08-16)
|
||||||
|
|
||||||
@@ -216,3 +229,6 @@ This crash class recurs on Dankserver. The 2026-08-14 investigation ruled out ct
|
|||||||
- [AGENTS.md](../AGENTS.md) — the git workflow rules
|
- [AGENTS.md](../AGENTS.md) — the git workflow rules
|
||||||
- [README.md](../README.md) — repository overview
|
- [README.md](../README.md) — repository overview
|
||||||
- [index.md](index.md) — knowledge base index
|
- [index.md](index.md) — knowledge base index
|
||||||
|
- [serverAppConfigs knowledge base](../serverAppConfigs/docs/index.md) —
|
||||||
|
the sibling Podman app stack on the same hosts; its OpenWebUI consumes
|
||||||
|
the `:7770` endpoint, and its Gitea instance hosts this repository
|
||||||
+13
-5
@@ -1,6 +1,8 @@
|
|||||||
# vLLM Scripts — Knowledge Base
|
# vLLM Scripts — Knowledge Base
|
||||||
|
|
||||||
Documentation for running vLLM inference on two local machines.
|
Documentation for the LLM inference fleet on two local machines:
|
||||||
|
llama.cpp production (PP head + RPC worker), the FastFlowLM NPU endpoint,
|
||||||
|
plus a vLLM research archive.
|
||||||
|
|
||||||
## Deployment Topology
|
## Deployment Topology
|
||||||
|
|
||||||
@@ -22,8 +24,8 @@ split 0.40/0.60 to worker, MTP+ngram-mod]
|
|||||||
D --> E --> F
|
D --> E --> F
|
||||||
G[FastFlowLM NPU XDNA2 50 TOPS
|
G[FastFlowLM NPU XDNA2 50 TOPS
|
||||||
frank-default-small, port 52625]
|
frank-default-small, port 52625]
|
||||||
H[gemma4-it:e4b
|
H[qwen3.6-moe:35b-a3b
|
||||||
12.2 t/s, 32k ctx, vision]
|
12.5-13.1 t/s, 262k ctx, vision]
|
||||||
D --> G --> H
|
D --> G --> H
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -56,7 +58,7 @@ frank-default-small, port 52625]
|
|||||||
- [[Running Qwen3.6 35B A3B FP8 on Dankserver]] — MoE model (35B total, 3B active) on RTX 3090
|
- [[Running Qwen3.6 35B A3B FP8 on Dankserver]] — MoE model (35B total, 3B active) on RTX 3090
|
||||||
- [[Running Qwen3.6 27B FP8 on Dankclaw]] — Dense model (27B) on Strix Halo APU
|
- [[Running Qwen3.6 27B FP8 on Dankclaw]] — Dense model (27B) on Strix Halo APU
|
||||||
- [[frank-default-large-benchmark]] — backend/spec benchmark; chose MTP sidecar (2026-08-14) over DFlash (parallel premature-EOS bug)
|
- [[frank-default-large-benchmark]] — backend/spec benchmark; chose MTP sidecar (2026-08-14) over DFlash (parallel premature-EOS bug)
|
||||||
- [[qwen3.8-spec-matrix]] — Qwen3.8-27B UD-Q8_K_XL spec matrix; production = --spec-default (ngram-mod), PARALLEL=2, Vulkan0 backend (2026-08-15)
|
- [[qwen3.8-spec-matrix]] — Qwen3.8-27B UD-Q8_K_XL spec history + current production state: PP head, MTP (n_max 4) over the ngram-mod fallback, 2 slots @ 200704 (2026-08-16)
|
||||||
- [[qwen3.8-strix-optimizations]] — Qwen3.8-27B Strix speed research: ranked levers that keep UD-Q8_K_XL (PP to 3090, MTP tuning, same-bit Q8_0 A/B, prefill path, OS), quant landscape, 2026-08-16 test matrix
|
- [[qwen3.8-strix-optimizations]] — Qwen3.8-27B Strix speed research: ranked levers that keep UD-Q8_K_XL (PP to 3090, MTP tuning, same-bit Q8_0 A/B, prefill path, OS), quant landscape, 2026-08-16 test matrix
|
||||||
- [[frank-default-small-benchmark]] — ncmoe and batch/ubatch sweep that drove the Dankserver state
|
- [[frank-default-small-benchmark]] — ncmoe and batch/ubatch sweep that drove the Dankserver state
|
||||||
- [[dankserver-vram-growth]] — VRAM/RAM growth investigation behind the recurring cuBLAS crash on frank-default-small
|
- [[dankserver-vram-growth]] — VRAM/RAM growth investigation behind the recurring cuBLAS crash on frank-default-small
|
||||||
@@ -77,4 +79,10 @@ frank-default-small, port 52625]
|
|||||||
- [[Pipeline Parallelism/Mixed-Vendor Experiments]] — NVIDIA + Strix Halo real-world runs
|
- [[Pipeline Parallelism/Mixed-Vendor Experiments]] — NVIDIA + Strix Halo real-world runs
|
||||||
- [[Pipeline Parallelism/Expected Performance]] — estimated tok/s over 1/2.5/10 GbE
|
- [[Pipeline Parallelism/Expected Performance]] — estimated tok/s over 1/2.5/10 GbE
|
||||||
- [[Pipeline Parallelism/Sample Script Set]] — educational two-node Qwen3.6-27B Q8 split
|
- [[Pipeline Parallelism/Sample Script Set]] — educational two-node Qwen3.6-27B Q8 split
|
||||||
- [[Pipeline Parallelism/Qwen3.8 PP Deployment]] — production design + runbook: Qwen3.8-27B head (Strix) / worker (RTX 3090) over RPC, b10433, scripts in scripts/
|
- [[Pipeline Parallelism/Qwen3.8 PP Deployment]] — the production deployment (promoted 2026-08-16) + runbook: Qwen3.8-27B head (Strix) / worker (RTX 3090) over RPC, b10433, scripts in scripts/
|
||||||
|
|
||||||
|
## Sibling projects
|
||||||
|
|
||||||
|
- [serverAppConfigs](../serverAppConfigs/docs/index.md) — the Podman app
|
||||||
|
stack on the same two hosts. Its OpenWebUI consumes the `:7770`
|
||||||
|
endpoint; its Gitea instance hosts this repository.
|
||||||
+52
-13
@@ -1,10 +1,41 @@
|
|||||||
# Qwen3.8-27B UD-Q8_K_XL Speculative-Decoding Matrix
|
# Qwen3.8-27B UD-Q8_K_XL Speculative-Decoding Matrix
|
||||||
|
|
||||||
This page records the speculative-decoding benchmark and the production
|
This page records the speculative-decoding benchmark and the production
|
||||||
tuning for the unsloth Qwen3.8-27B `UD-Q8_K_XL` service on Dankclaw
|
tuning for the unsloth Qwen3.8-27B `UD-Q8_K_XL` service
|
||||||
(`frank-default-large`).
|
(`frank-default-large`), now a pipeline-parallel head with a Dankserver
|
||||||
|
worker.
|
||||||
|
|
||||||
## Result (applied, 2026-08-15: --spec-default)
|
## Production state (2026-08-16: PP split + MTP)
|
||||||
|
|
||||||
|
Current production, verified against the live process and journal
|
||||||
|
(2026-08-16, service start 15:03). Topology detail:
|
||||||
|
[[Pipeline Parallelism/Qwen3.8 PP Deployment]].
|
||||||
|
|
||||||
|
- Devices: `RPC0` (Dankserver RTX 3090) + `ROCm0` (Strix iGPU). The head
|
||||||
|
passes no `--device` flag. Default selection puts RPC first and picks
|
||||||
|
ROCm for the iGPU (HIP registers before Vulkan). The Vulkan0 side stays
|
||||||
|
an option via `HEAD_BIN=.../build-vulkan-rpc`.
|
||||||
|
- Split: `--tensor-split 0.40,0.60` — 40% of the layers on the 3090
|
||||||
|
(its maximum under the KV budget), 60% on the iGPU.
|
||||||
|
- Context: pool 401400, 2 slots. The journal reports
|
||||||
|
`n_ctx_slot = 200704`. The pi `models.json` declares 200000
|
||||||
|
(conservative).
|
||||||
|
- Spec: **MTP re-enabled** — `--spec-type draft-mtp --spec-draft-n-max 4`
|
||||||
|
(bundled head) with the `--spec-default` ngram-mod fallback (48/64/24).
|
||||||
|
Journal acceptance over one production window: MTP mean len 3.00
|
||||||
|
(per-position 0.730/0.541/0.411/0.323, 58934 drafts); ngram-mod as the
|
||||||
|
rare fallback (423 drafts in the same window).
|
||||||
|
- KV: `f16` K / `f16` V on both devices (15680 MiB ROCm0 + 9408 MiB RPC0
|
||||||
|
at load).
|
||||||
|
- Batch 8192 / ubatch 256, `--direct-io`, `--fit off`,
|
||||||
|
`--gpu-layers all`.
|
||||||
|
|
||||||
|
## Result (superseded 2026-08-16: standalone --spec-default)
|
||||||
|
|
||||||
|
Superseded for topology on 2026-08-16, when the PP split became
|
||||||
|
production. The ngram-mod preset survives as the fallback layer under
|
||||||
|
MTP. The Vulkan0 verdict in this section applies to the standalone
|
||||||
|
configuration only.
|
||||||
|
|
||||||
- Model: `Qwen3.8-27B-UD-Q8_K_XL.gguf` (29.29 GiB, bundled MTP).
|
- Model: `Qwen3.8-27B-UD-Q8_K_XL.gguf` (29.29 GiB, bundled MTP).
|
||||||
- Spec: llama.cpp **`--spec-default`** preset = **ngram-mod** (n_match 24,
|
- Spec: llama.cpp **`--spec-default`** preset = **ngram-mod** (n_match 24,
|
||||||
@@ -153,22 +184,30 @@ that is the long-context attention penalty, not a spec artifact.
|
|||||||
|
|
||||||
## Production Configuration
|
## Production Configuration
|
||||||
|
|
||||||
`scripts/frank-default-large.env`:
|
`scripts/frank-default-large.env` (live 2026-08-16):
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
SPEC_DEFAULT=1 # llama.cpp preset = ngram-mod (48/64/24)
|
RPC_SERVERS=192.168.0.235:50052 # Dankserver worker
|
||||||
SPEC_TYPE=
|
TENSOR_SPLIT=0.40,0.60 # [RPC0, iGPU]
|
||||||
DRAFT_FILE=
|
CTX_SIZE=401400 # pool = 2 slots x 200700
|
||||||
|
PARALLEL=2
|
||||||
|
SPEC_NONE=0
|
||||||
|
SPEC_DEFAULT=1 # ngram-mod fallback (48/64/24)
|
||||||
|
MTP=1 # draft-mtp, bundled head
|
||||||
|
SPEC_DRAFT_N_MAX=4
|
||||||
|
SPEC_NGRAM_MOD_N_MIN=48
|
||||||
|
SPEC_NGRAM_MOD_N_MAX=64
|
||||||
|
SPEC_NGRAM_MOD_N_MATCH=24
|
||||||
|
CACHE_TYPE_K=f16
|
||||||
|
CACHE_TYPE_V=f16
|
||||||
BATCH_SIZE=8192
|
BATCH_SIZE=8192
|
||||||
UBATCH_SIZE=256
|
UBATCH_SIZE=256
|
||||||
CTX_SIZE=524288
|
|
||||||
PARALLEL=2 # passes 2x32k parallel stream test (2026-08-15)
|
|
||||||
DEVICE=Vulkan0 # 48% faster decode at 262k ctx
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Window: computed at 262144 per slot (the pi `models.json` contextWindow for
|
There is no `DEVICE` variable. The head must not pass `--device` (the RPC
|
||||||
`frank-default-large`). The unit reports `n_ctx_slot = 262144`; CTX_SIZE is
|
device would be silently dropped). Live slot context: `n_ctx_slot =
|
||||||
a pool ceiling and per-slot stays 262144 regardless of the slot count.
|
200704`. The pi `models.json` contextWindow for `frank-default-large`
|
||||||
|
declares 200000, a safe under-estimate of the live slot.
|
||||||
|
|
||||||
## See Also
|
## See Also
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user