chore: track live agent config (config, models, append-system, managed-skills, memories, plugin lock)
This commit is contained in:
1 parent
772607434a
commit
552d1ef8bf
23 files changed
+640
No files matched your search
@@ -0,0 +1,49 @@
|
||||
# frank-default-large Model & Runtime Reference
|
||||
|
||||
## Host & Environment
|
||||
- **Host:** Dankclaw (AMD Radeon 8060S Strix Halo, gfx1151 iGPU)
|
||||
- **Memory:** 64 GiB unified memory + page cache/SVM (~116 GiB total pool)
|
||||
- **Runtime:** `charlie12345/ROCmFPX` llama.cpp fork (`llama-server`)
|
||||
- **Build Flags:** `-DGGML_HIP=ON -DGGML_HIP_ROCMI4_W4A4=ON -DCMAKE_HIP_ARCHITECTURES=gfx1151 -DGGML_CUDA_FA_ALL_QUANTS=ON -DLLAMA_BUILD_WEBUI=OFF -DCMAKE_EXE_LINKER_FLAGS=-no-pie`
|
||||
|
||||
## Model Architecture
|
||||
- **Model:** `Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF` (177B total params)
|
||||
- **Composition:** 51.2B PLE (n-gram) + 125.8B MoE/Attention (56B active MoE: 512 experts, 10 used; 48 layers: 12 attn + 36 SSM)
|
||||
- **Quant:** `Q4_0_ROCMFP4_STRIX` (file_type=105), ~113.47 GiB single GGUF
|
||||
- **VRAM Behavior:** PLE table streams exclusively from page cache/host RAM. GPU resident memory remains ~63-69 GiB regardless of total file size.
|
||||
- **Indexing/Connections:** QSA indexer (4 heads, top_k=2048); Hyper-connections (count=4, low_rank=320); PLE layer 1 (ngram_size=3, heads_per_ngram=8)
|
||||
|
||||
## Critical Constraints (DO NOT OVERRIDE)
|
||||
- **FIT=off**: Auto-fit crashes on this architecture's hyper-connection/indexer config.
|
||||
- **Context Limit**: `-ngl 999` required to force SVM backing for all layers.
|
||||
- **Env Vars**: NEVER set `TEMP`, `HOST`, or `GPU_MAX_HEAP_SIZE`. ROCm HIP runtime consumes bare env vars. llama.cpp CLI flags (`--host`, `--port`, `--temp`) are not read from env.
|
||||
- **Capabilities**: Text-only. No `mmproj`, no MTP draft head.
|
||||
|
||||
## Configuration & Tunings (`scripts/frank-default-large.env`)
|
||||
```
|
||||
BATCH_SIZE=4096
|
||||
UBATCH_SIZE=4096
|
||||
NUM_THREADS=16
|
||||
THREAD_BATCH=32
|
||||
CTX_SIZE=524288
|
||||
PARALLEL=2
|
||||
CACHE_TYPE_K=f16
|
||||
CACHE_TYPE_V=f16
|
||||
CTX_CHECKPOINTS=16
|
||||
CACHE_RAM=8192
|
||||
HSA_OVERRIDE_GFX_VERSION=11.5.1
|
||||
LISTEN_PORT=7770
|
||||
```
|
||||
|
||||
## Operational Workflow & Benchmarking
|
||||
- **Startup:** Model load takes ~55s+. GPU pool handles heavy I/O via mmap.
|
||||
- **Health Checks:** Use `curl -s http://127.0.0.1:7770/health` (or target benchmark ports). Always poll in loops (5+ checks, ~5s apart) before proceeding.
|
||||
- **Benchmark Orchestration:** SSH from controller. Use `frank-default-small` to drive benchmark scripts against `frank-default-large`.
|
||||
- **Current Status:** Batch/ubatch tuning interrupted during health-polling for benchmark servers (ports 7772/7773). Next phase: threads-batch sweep.
|
||||
- **Prior History:** CIRU PromptForge v3 → Kairic Edge IU4 → Qwen3.8-27B ROCmFP4 STRIX MTP → Q8_0 AGENT (failed) → STRIX MTP → Qwen3.8-Flash-Next 177B.
|
||||
|
||||
## File & Git References
|
||||
- **Model Path:** `/home/dank/models/kingjones-Qwen3.8-Flash-Next-ROCmFP4-STRIX/Qwen3.8-Flash-Next-Q4_0-ROCmFP4-STRIX.gguf`
|
||||
- **Configs:** `scripts/frank-default-large.env`, `scripts/serve-frank-large.sh`
|
||||
- **Docs:** `docs/LLM/kingjones-strix-rocmfp4.md`, `docs/LLM/index.md`, `docs/index.md`
|
||||
- **Git Branch:** `frank-large-strix-model` (origin: Dankclaw Gitea)
|
||||
@@ -0,0 +1,12 @@
|
||||
- MTP draft heads for Qwen3.8-Flash-Next are INCOMPATIBLE with the STRIX_LEAN Uncensored model on the charlie12345/ROCmFPX qwen4exp binary. Both attempted heads — EasiiX Q8_0 (4.1 GB) and agentionai ROCmFP4-FAST (2.28 GiB) — fail with missing tensor 'blk.0.hc_attn_norm.weight'. The qwen4exp binary expects this hyper-connection attn norm tensor in the draft GGUF, but neither draft head carries it. MTP only ever worked on the 27B model (kingjones-Qwen3.8-27B-STRIX-MTP with mtp-Qwen3.8-27B-Q4_0.gguf), never on any Flash-Next variant. The Flash-Next STRIX (non-LEAN) that ran before the 2026-08-28 session never loaded a draft model at all. Current production config: SPEC_TYPE=ngram-mod only. To get MTP working on STRIX_LEAN, need either a draft head that includes hc_attn_norm tensors or a binary that doesn't require them for draft models. _(context: frank-default-large MTP integration attempt on Dankclaw, 2026-08-28. Downloaded two MTP heads from HuggingFace, both failed to load against the STRIX_LEAN Uncensored model. Service crash-looped on each attempt. Fell back to ngram-mod only. Files: scripts/frank-default-large.env, scripts/serve-frank-large.sh.)_
|
||||
- The MTP draft head GGUF mtp-Qwen3.8-Flash-Next-Q8_0.gguf (EasiiX/Qwen3.8-Flash-Next-MTP-Strix-Halo-GGUF, 4.1 GB) is INCOMPATIBLE with the STRIX_LEAN Uncensored Flash-Next model on the charlie12345/ROCmFPX binary (build-qwen38). The draft GGUF is missing tensor blk.0.hc_attn_norm.weight (hyper-connection attention norm) that the qwen4exp architecture expects. The service crash-loops: main model loads fine (~59s), then draft model load fails and exits. MTP only ever worked on the older 27B model (Qwen3.8-27B-Uncensored-Q6_0_ROCMFPX_AGENT + its own mtp-Qwen3.8-27B-Q4_0.gguf head). The Flash-Next STRIX (non-LEAN) that ran before this session never loaded a draft model either — it ran ngram-only. Current production config: SPEC_TYPE=ngram-mod (no draft sidecar). TODO: find a compatible MTP head for STRIX_LEAN or build one from the Flash-Next checkpoint. _(context: frank-default-large MTP draft head integration on Dankclaw, 2026-08-28)_
|
||||
- When running Python scripts on a remote host (Dankclaw) that need to manage local services (systemctl, sed), use subprocess.run(cmd, shell=True) for local execution — NOT nested SSH back to the same host. Nested SSH to localhost fails (no key auth for self-loopback). Also: before git pull --ff-only on a remote, verify the branch with git branch --show-current — Dankclaw was on frank-large-strix-model not main, so pulls were no-ops and new files didn't appear. _(context: bench-spec-decode.py ran on Dankclaw but used ssh() to SSH back to itself for systemctl/sed. All SSH calls failed with Permission denied. Also: Dankclaw was on frank-large-strix-model branch, not main, so git pull --ff-only was a no-op and the new file didn't appear.)_
|
||||
- When deploying to Dankclaw (or any remote host), verify the remote checkout is on the correct branch (main) before pulling. On 2026-08-28, Dankclaw was on frank-large-strix-model with uncommitted local changes (STRIX_LEAN model paths + mmproj), causing git pull to be a no-op on the wrong branch. The benchmark script wasn't found because it was committed to main but Dankclaw was on a feature branch. Fix: git stash && git checkout main && git pull --ff-only on the remote. _(context: frank-default-large MTP benchmark deployment on Dankclaw. The git pull said "Already up to date" because it was on frank-large-strix-model, not main.)_
|
||||
- The docs-completeness test (test 112, tests/docs_completeness.bats) scans ALL .md files under docs/ — including untracked files — and requires every one to be linked from docs/index.md via [[Title]] wikilink. Untracked files like docs/Clippings/ will fail this test and block the pre-commit hook. Fix: move untracked docs that aren't meant to be part of the knowledge base to .AGENTTRASH/ before committing. _(context: Committing MTP draft head changes to frank-default-large was blocked by pre-existing test 112 failure caused by untracked docs/Clippings/Caddy Anubis.md.)_
|
||||
- To verify GGUF model architecture compatibility without llama-gguf or Python GGUF parsing: strings on the first ~2KB of a GGUF file extracts general.architecture, general.name, general.size_label, and all arch.* metadata keys (block_count, embedding_length, expert_count, etc.). For remote files: curl -sL -r 0-2048 'url' | strings | head -40. The architecture string (e.g. qwen4exp, qwen3moe, llama) is the primary compatibility key — a draft head GGUF must report the same general.architecture as the target model. Cross-reference against the serving binary's --help output for the relevant feature flags (e.g. --spec-type draft-mtp, --model-draft) before declaring compatibility. The Python struct.unpack approach for GGUF header parsing is fragile (fails on custom type codes); strings is more robust for a quick architecture check. _(context: Assessed EasiiX/Qwen3.8-Flash-Next-MTP-Strix-Halo-GGUF MTP draft head compatibility against frank-default-large (Qwen3.8-Flash-Next qwen4exp) on Dankclaw. Needed to verify architecture match between the draft head GGUF and the target model GGUF without llama-gguf binary available.)_
|
||||
- On these hosts (Dankclaw, Dankserver), systemctl disable service doesn't just remove symlinks — it deletes the unit file itself from /etc/systemd/system/. Use systemctl mask (creates symlink to /dev/null, safe and reversible via unmask) instead of disable during benchmarks. The unit files are in scripts/service.service in the repo. _(context: AGENTS.md benchmarking policy section updated. Occurred when running bench for frank-default-large on dankclaw.)_
|
||||
- frank-default-large (Qwen3.8-Flash-Next ROCmFP4 STRIX on dankclaw) decode throughput across threads-batch: TB=8: 3.3 tok/s (76.6s), TB=16: 3.4 tok/s (74.8s), TB=32: 3.4 tok/s (75.0s). Benchmark: ~23.5K token code prompt, 256 generated tokens, HTTP API, fresh server per value. Decode throughput is flat across all tested values; TB=16 is optimal due to prefill advantage (373.5 tok/s vs 354.4 at TB=32). TB=8 is marginally worse than 16 on both prefill and decode. _(context: bench-decode-threads-batch.py ran on dankclaw. Model: kingjones-Qwen3.8-Flash-Next-Q4_0-ROCmFP4-STRIX.gguf (113.47 GiB). Prompt: /tmp/bench-prompts/prompt_code.txt extended to 8200 words (~23.5K tokens).)_
|
||||
- On dankclaw and dankserver, systemctl disable frank-default-large (and similar systemd service units) doesn't just remove symlinks — it **deletes the unit file itself** from /etc/systemd/system/. Always use systemctl mask instead (creates symlink to /dev/null, safe and reversible with unmask). When restoring after a disable: copy the unit file from this repo back to /etc/systemd/system/, run systemctl daemon-reload, then enable + start.
|
||||
- When benchmarking llama.cpp server-side parameters (--threads-batch, --ubatch-size, etc.), use HTTP-based prefill benchmarking: start the server with the target parameter, send a large prompt via /v1/chat/completions with max_tokens=1 (the server crashes on max_tokens=0), measure prompt_tokens / wall_time from the response usage. Do NOT use llama-bench — it benchmarks the bench binary itself, not the server, and cannot target server-side parameters. Script at scripts/bench-threads-batch-http.py demonstrates this pattern.
|
||||
- frank-default-large (Qwen3.8-Flash-Next ROCmFP4 STRIX on dankclaw) best threads-batch: 16. Measured prefill throughput sweep: tb=16: 373.5 tok/s, tb=32: 354.4, tb=48: 344.1, tb=64: 344.7, tb=80: 344.4, tb=96: 357.1, tb=128: 321.1. Lower thread batching wins for prefill — fewer threads compete for GPU resources. Used HTTP-based benchmarking (llama-bench cannot benchmark --threads-batch, it's a server-side parameter). Used max_tokens=1 instead of 0 (server crashes on 0-token requests). Script: scripts/bench-threads-batch-http.py.
|
||||
- When editing bash scripts that use :: for default-value expansion (e.g., :: "${VAR:=default}"), the edit tool's parser can misinterpret :: and produce mangled output with extra characters (literal ^ prefix or ::: instead of ::). For targeted fixes to these specific lines, use sed in-place instead of the edit tool. Example: sed -i 's/^:: "/: "/' script.sh. _(context: frank-default-large model swap: edited scripts/serve-frank-large.sh default-value lines from :: to single-colon. The edit tool produced ::: with a literal ^ on line 40. Required sed fallback to fix.)_
|
||||
@@ -0,0 +1 @@
|
||||
Host: Dankclaw (gfx1151, 64GB SVM). Model: frank-default-large (Qwen3.8-Flash-Next 177B, ROCmFP4). PLE streams from page cache; GPU resident ~63-69GB. ENV constraints: FIT=off, -ngl 999, NEVER set TEMP/HOST/GPU_MAX_HEAP_SIZE. Env: scripts/frank-default-large.env (port 7770, batch=4096, ctx=524k). Benchmark orchestration via SSH: use frank-default-small as driver. Always poll health endpoints in loops (~5s intervals) due to slow mmap load. Current task: resume batch/ubatch tuning (interrupted during health-check polling).
|
||||
@@ -0,0 +1,72 @@
|
||||
# Raw Memories
|
||||
|
||||
## 01a042cc-e1c5-7482-87a2-14deadb82202
|
||||
updated_at: 1787833610
|
||||
## frank-default-large: Qwen3.8-Flash-Next tuning on Dankclaw (Strix Halo gfx1151)
|
||||
|
||||
### Model & Architecture
|
||||
- kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF, 177B params (51.2B PLE n-gram + 125.8B MoE/attention)
|
||||
- 56B MoE: 512 experts (10 used), 48 layers (12 attn + 36 SSM, full_attention_interval=4), 2 KV heads x 256 dim
|
||||
- QSA indexer: 4 heads, top_k=2048; hyper-connections: count=4, low_rank=320
|
||||
- PLE layer 1: ngram_size=3, heads_per_ngram=8
|
||||
- Quant: Q4_0_ROCMFP4_STRIX (file_type=105), 113.47 GiB single GGUF
|
||||
- PLE table: 50.66 GiB Q8_0, streamed from page cache (NEVER in GPU VRAM)
|
||||
- GPU resident: ~63-69 GiB on Strix Halo unified memory pool (116 GiB SVM-backed)
|
||||
|
||||
### Runtime
|
||||
- ROCmFPX llama.cpp fork at /home/dank/GitPackages/ROCmFPX/build-qwen38/bin/llama-server
|
||||
- PR #27742 (qwen4exp architecture) merged
|
||||
- Build: -DGGML_HIP=ON -DGGML_HIP_ROCMI4_W4A4=ON -DCMAKE_HIP_ARCHITECTURES=gfx1151 -DGGML_CUDA_FA_ALL_QUANTS=ON -DLLAMA_BUILD_WEBUI=OFF -DCMAKE_EXE_LINKER_FLAGS=-no-pie
|
||||
|
||||
### Critical Constraints (DO NOT CHANGE)
|
||||
- FIT=off: auto-fit segfaults on this model's hyper-connection/indexer config
|
||||
- -ngl 999 places all layers on SVM-backed GPU pool
|
||||
- NEVER name env vars TEMP, HOST, or GPU_MAX_HEAP_SIZE — ROCm HIP runtime reads bare env vars (2026-08-13 TEMP incident)
|
||||
- llama.cpp reads --host/--port/--temp as CLI flags only, never env vars
|
||||
- Text-only: no mmproj, no MTP draft head
|
||||
|
||||
### Current Tunings (env file: frank-default-large.env)
|
||||
- BATCH_SIZE=4096, UBATCH_SIZE=4096
|
||||
- NUM_THREADS=16, THREAD_BATCH=32
|
||||
- CTX_SIZE=524288, PARALLEL=2
|
||||
- CACHE_TYPE_K=f16, CACHE_TYPE_V=f16
|
||||
- CTX_CHECKPOINTS=16, CACHE_RAM=8192
|
||||
- HSA_OVERRIDE_GFX_VERSION=11.5.1
|
||||
- Port 7770 (LISTEN_PORT)
|
||||
|
||||
### Benchmark Status (interrupted)
|
||||
- Goal: tune batch/ubatch for optimal token prefill
|
||||
- Next planned step: threads-batch sweep
|
||||
- Benchmark servers targeted ports 7772 and 7773
|
||||
- Session interrupted during health-check polling loop; servers returned no output via curl on those ports (likely still loading 113 GiB model or not yet started)
|
||||
- The repeated poll pattern (5+ identical checks, ~5s apart) suggests the assistant was waiting for model load completion before starting benchmarks
|
||||
|
||||
### Workflow Pattern
|
||||
- SSH into dankclaw from controller; check health via `curl -s http://127.0.0.1:PORT/health`
|
||||
- Model load on unified memory is extremely slow (113 GiB mmap); benchmark scripts must account for long startup
|
||||
- Use frank-default-small (the serving model for this agent) to orchestrate benchmarks against frank-default-large
|
||||
|
||||
## 01a042a4-7e85-7728-802d-c8442896f6e6
|
||||
updated_at: 1787827055
|
||||
## frank-default-large model swap (2026-09-02)
|
||||
|
||||
**Host:** Dankclaw — AMD Radeon 8060S (Strix Halo), gfx1151 iGPU, 64 GiB unified memory. Runtime: charlie12345/ROCmFPX llama.cpp build-kairic v81. Port 7770.
|
||||
|
||||
**Swap:** STRIX_LEAN-GGUF (56B MoE / 35.76B PLE, 3 shards, 98.5 GiB) → Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF (177B total / 51.2B PLE, single file, 113.47 GiB on disk).
|
||||
|
||||
**File path:** `/home/dank/models/kingjones-Qwen3.8-Flash-Next-ROCmFP4-STRIX/Qwen3.8-Flash-Next-Q4_0-ROCmFP4-STRIX.gguf`
|
||||
|
||||
**Key architectural fact:** PLE (Projection Layer Embedding) table streams from page cache — never enters GPU VRAM regardless of tier. This is why a 114 GiB file fits in 64 GiB unified memory: only ~63-69 GiB is GPU-resident (same as LEAN variant). The PLE table occupies host RAM/page-cache.
|
||||
|
||||
**Performance:** Load time ~55 seconds. Generation speed and prompt throughput within noise of STRIX_LEAN at every context depth. 200/200 tests pass.
|
||||
|
||||
**Config files modified:**
|
||||
- `scripts/frank-default-large.env` — MODEL_DIR, MODEL_FILE, header comments
|
||||
- `scripts/serve-frank-large.sh` — header comments, default values
|
||||
- `docs/LLM/kingjones-strix-rocmfp4.md` — new 195-line runbook
|
||||
- `docs/LLM/index.md` — active model reference updated
|
||||
- `docs/index.md` — top-level index links new doc
|
||||
|
||||
**Git:** Branch `frank-large-strix-model` pushed to origin (Gitea on Dankclaw).
|
||||
|
||||
**Prior history on this slot (for context):** CIRU PromptForge v3 → Kairic Edge IU4 (reverted) → kingjones Qwen3.8-27B ROCmFP4 STRIX MTP (Q6 AGENT, standalone MTP draft, Turbo4 V cache, 262K ctx/1 slot) → Q8_0 AGENT experiment (failed, set_rows bug) → STRIX MTP restored → now Flash-Next full 177B.
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
thread_id: 01a042a4-7e85-7728-802d-c8442896f6e6
|
||||
updated_at: 1787827055
|
||||
|
||||
Swapped frank-default-large model on Dankclaw (AMD Strix Halo) from STRIX_LEAN-GGUF (56B MoE, 3-sharded) to Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF (177B total, 51.2B PLE, single 114 GiB file). PLE table streams from page cache, never enters GPU VRAM. Load ~55s, GPU resident ~63-69 GiB unchanged. Branch frank-large-strix-model pushed.
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
thread_id: 01a042cc-e1c5-7482-87a2-14deadb82202
|
||||
updated_at: 1787833610
|
||||
|
||||
Benchmarking batch/ubatch for frank-default-large (Qwen3.8-Flash-Next 177B MoE, ROCmFP4) on Dankclaw Strix Halo gfx1151 unified memory. Session interrupted during health-check polling of benchmark servers on ports 7772/7773; no results captured.
|
||||
+1
@@ -0,0 +1 @@
|
||||
Orchestrate llama.cpp benchmarking on Dankclaw (gfx1151) using frank-default-large. Follow strict env constraints, health-check polling patterns, and resource isolation. SSH from controller, use frank-default-small as driver, poll health endpoints with 5+ checks at ~5s intervals, and apply env file tunings before starting throughput tests.
|
||||
Reference in new issue
Block a user