fix(frank-large): load the model as its native 3-way split, not a concatenated file

The first cutover crash-looped the unit with 'invalid split file name':
the fetch script concatenated the three split parts into a single GGUF,
but part 1's header carries ggml.file_count=3, so the byte-correct
concatenation still advertises itself as a split and the loader demands
a -NNNNN-of-NNNNN filename.

- serve-frank-large.sh: -m points at part 1; llama.cpp loads the split
  natively (parts 2-3 auto-discovered in the same directory)
- deploy-remote.sh: LLM_LARGE_MODEL gate path follows
- download-frank-large-unsloth.sh: assembly removed; the parts ARE the
  canonical payload, verified against live Hub LFS oids
- docs: runbook model section + troubleshooting note, AGENTS.md, log
- the redundant 87 GiB assembled file is staged on dankclaw at
  ~/.AGENTTRASH/20260921-frank-large-assembled/
This commit is contained in:
Frank committed 2026-09-21 13:58:54 -07:00
1 parent 384747a72f
commit d6f9b8539a
11 files changed
+72 -36

No files matched your search

+14 -1
View File
@@ -52,7 +52,7 @@ timestamp: 2026-09-14
Qwen3.8-Flash-CIRU-STRIX-Orca, 262144 ctx) to the unsloth llama.cpp
prebuilt (b11030-mix-5ff778e, ROCm gfx1151, bundles its own ROCm 7.16)
serving `unsloth/Qwen3.8-Flash-Next-GGUF:UD-IQ4_XS` (87.3 GiB, three HF
split parts concatenated), one conversation at 200,000 ctx, MTP depth 2.
split parts), one conversation at 200,000 ctx, MTP depth 2.
The fleet contract is unchanged: port 7770, alias `frank-large`,
text-only.
- **Why the unsloth prebuilt.** The qwen4exp MTP graph exists only in the
@@ -80,6 +80,19 @@ timestamp: 2026-09-14
- **Files.** `scripts/serve-frank-large.sh`, `scripts/frank-large.env`,
`scripts/frank-large.service`, `scripts/download-frank-large-unsloth.sh`,
`scripts/deploy-remote.sh`, `tests/frank_large_unit.bats`.
- **The split-filename trap (caught at cutover).** The first cutover
crash-looped the unit ~110 times with `invalid split file name` at model
load (~50 ms, before any weights were read): the fetch script
concatenated the three parts into a single GGUF, but part 1's header
carries `ggml.file_count=3`, so the byte-correct concatenation still
advertises itself as a 3-way split and the loader demands a
`-NNNNN-of-NNNNN` filename. Fix: the parts ARE the canonical payload —
the serve script points `-m` at part 1 and llama.cpp loads the split
natively (parts 2–3 auto-discovered in the same directory). A manual
part-1 load confirmed the fix (model loaded in ~34 s from a warm page
cache, health 200) before the redeploy. The redundant 87 GiB assembled
file is staged at `~/.AGENTTRASH/20260921-frank-large-assembled/`
(dankclaw) awaiting purge approval.
## 2026-09-21 — node-dankclaw Prometheus target fixed (netavark host-bind quirk)