Commit Graph
100 Commits
Author SHA1 Message Date
Frank 044dd49011 docs: note prefix caching enabled on frank-default-small (opt-in for hybrid; ~4x TTFT on repeated prefix) 2026-08-17 18:45:49 -07:00
Frank b854ec78ad frank-default-small: enable prefix caching (opt-in for hybrid models; big TTFT win for pi's repeated system prompt) 2026-08-17 18:25:28 -07:00
Frank 8c42771877 docs: mark retired FastFlowLM/NPU pages with the port/name handoff; tighten Dankclaw system specs runtime row 2026-08-17 18:10:57 -07:00
Frank 115b0af8dc docs: reflect the 2026-08-17 evening changes (Quark model swap, tool calling, batch 8192) 2026-08-17 18:01:02 -07:00
Frank 1cebbf47f6 frank-default-small: swap to nameistoken Quark W8A8 INT8, batch 8192
- Model: nameistoken/Qwen3.6-35B-A3B-Quark-W8A8-INT8 (AMD Quark W8A8,
  vLLM-native expert layout). The Avesed quant emitted malformed Qwen3
  XML tool calls; the Quark model follows the format cleanly.
- max-num-batched-tokens lowered 16384 -> 8192 (user request).
- Chat template: neutral path qwen36-chat_template-tools.jinja (same
  base template; adds a concrete worked tool-call example).
2026-08-17 17:49:27 -07:00
Frank a17e638a1f frank-default-small: stronger tool template with a concrete worked example
The Avesed template only shows a generic format; the Qwen3.5-MoE
model kept emitting <function=get_weather(city=...)> (args baked into
the name). Add a WORKED EXAMPLE block derived from the actual tool
schema (name + parameter keys) to the system prompt.
2026-08-17 17:38:00 -07:00
Frank 20108e5b7a frank-default-small: use the repo chat_template.jinja so tools render in Qwen3 XML
The Avesed tokenizer_config.json ships no chat_template, so vLLM used its
built-in template, which does not render the <tool_call> instructions;
the model then emitted malformed XML (arguments baked into the function
name) and the qwen3_xml parser could not extract clean calls.
2026-08-17 17:13:35 -07:00
Frank 5108af11aa frank-default-small: enable tool calling (--enable-auto-tool-choice --tool-call-parser qwen3_xml)
Clients send tool_choice=auto; without these flags vLLM rejects with
HTTP 400. The Avesed chat template renders the Qwen3 XML tool format,
so qwen3_xml is the matching parser.
2026-08-17 16:50:23 -07:00
Frank 57264f7faa record performance fixes: FA_ALL_QUANTS build flag (dankserver), RDNA triton FA env (dankclaw)
- frank-default-large: GGML_CUDA_FA_ALL_QUANTS=ON is mandatory in the
  FastMTP build; without it q8_0 KV + FA falls back to a slow path and
  prefill collapses ~12x (95 -> 1312 t/s at 8K, measured)
- frank-default-small: FLASH_ATTENTION_TRITON_AMD_ENABLE=TRUE + pure-python
  flash_attn (triton_amd) + stub; without it the vision encoder warmup
  OOMs via torch SDPA
2026-08-17 16:30:22 -07:00
Frank 27788f6f2c fix: make serve scripts + deploy.sh executable 2026-08-17 15:24:40 -07:00
Frank d9af7f1d19 fleet redo 2026-08-17: retire PP+NPU, new topology
- Move all previous scripts to old/scripts/ (retired PP/NPU-era)
- frank-default-large: llama.cpp FastMTP on dankserver (HauhauCS
  Qwen3.8-27B IQ4_XS + FastMTP 32K draft + ngram-mod, K q8_0/V f16,
  128K ctx, batch 2048/ubatch 1024, port 7770)
- frank-default-small: vLLM ROCm on dankclaw (Avesed Qwen3.6-35B-A3B
  INT8 W8A8, full 262144 ctx, no KV quant, 4 seqs, batch 16384,
  ngram spec, port 52625)
- retarget deploy.sh (dankserver/dankclaw, inline sudo, no helpers)
- docs: deployment + index + AGENTS.md + README for new topology,
  superseded banners on retired docs, add frank-redo-2026-08-17 runbook
2026-08-17 15:23:46 -07:00
Frank 136ee080c9 docs: measured PP link math (H=5120 verified, 20.5 MB/ubatch wire), NIC inventory
- Ethernet Bandwidth Math: new section 0 with live measurements
  (iperf 281-294 MB/s, ping RTT both paths, prefill 457.9 t/s at
  2.5GbE, per-ubatch wire 20.5 MB, 98k KV snapshot 3.45 GB blocking
  the slot 13.6 s, validated link-speed model: 386/458/505 t/s)
- System specs: NIC tables for both boxes; the 1 GbE USB-C adapter on
  the claw was silently routing the RPC path (unplugged 2026-08-17)
- PP Deployment: fix hidden-state size (10 KiB/direction, H=5120) and
  RTT-vs-bandwidth claim (decode RTT-bound; prefill+snapshot BW-bound)
2026-08-17 05:06:41 -07:00
Frank 968066ff23 docs: boot policy (only PP units enabled), deploy.sh dankserver hazard, stale-claim cleanup
- deployment.md: Boot Policy (2026-08-17) section (disabled units table,
  re-enable recipes, stale frank-restart-small.sh helper, broken
  deploy.sh dankserver target); Update Dankserver -> frank-pp-worker;
  condensed retired 35B history block and 2026-08-13 incident
- AGENTS.md: boot-policy note, target map fix (Q6_K, split 0.68),
  deploy.sh dankserver warning, obsolete quirk entries condensed
- README.md: rewrite active services/models tables (PP head + worker)
- index.md: topology fix (qwythos:9b, Q6_K split 0.68, NPU disabled)
- qwen3.8-spec-matrix.md: superseded configs merged into compact
  history; stale inline env block removed; bundled-head MTP note
- FastFlowLM, PP Deployment: boot-policy + enablement notes
- System Specs x2, DFlash doc, 35B FP8 doc, Ling docs: stale active
  claims fixed, retired banners, never-shipped plan stubbed
2026-08-17 03:30:00 -07:00
Frank 3f88b8e1ed docs + script defaults: Q6_K swap, q8_0/f16 KV, split 0.68, FA rebuild
- spec matrix + PP doc + deployment.md + AGENTS.md + index.md: current
  production = Uncensored Q6_K + standalone MTP draft, mismatched
  q8_0/f16 KV with FA retained (GGML_CUDA_FA_ALL_QUANTS rebuild at
  9b05354ec), split 0.68 (45 blocks), KV 8624/3920, 273 MiB free.
- PP doc: 'FA-all-quants rebuild' section (flag, cmake commands, both
  hosts) + new-model split-limits measurements; old Q8_K_XL limits
  marked superseded.
- serve-pp-head.sh defaults: MODEL_FILE -> Q6_K, CACHE_TYPE_V -> f16
  (env already correct; defaults now match production).
2026-08-17 02:08:08 -07:00
Frank 11f37dafd8 frank-default-large: split 0.68,0.32 = 45 blocks on 3090 (Q6_K phase 2)
Max for the Q6_K + q8_0/f16 KV config: 45 blocks (0-44), 11 FA layers
(3..43), KV 8624 MiB, ~0.7 GiB free. 46 layers -> ~0.4 GiB margin; 48
layers (f>=0.7197) adds FA block 47 -> KV 9408 -> OOM by ~0.85 GiB.
Draft model measured on ROCm0 only (no worker impact). Phase 1 (0.53)
verified: acceptance 0.833, KV 6272/6272, flash_attn auto, healthy.
2026-08-17 02:05:04 -07:00
Frank 1bc39c43ce frank-default-large: swap to Qwen3.8-27B-Uncensored Q6_K, q8_0/f16 KV
- MODEL_FILE -> Qwen3.8-27B-Uncensored-Q6_K.gguf (22.43 GB, no bundled
  MTP head; repo ships a standalone draft sidecar)
- SPEC_DRAFT_MODEL -> Qwen3.8-27B-Uncensored-draft-Q8_0.gguf (3.16 GB)
- CACHE_TYPE_K=q8_0, CACHE_TYPE_V=f16 (mismatched, FA retained via the
  GGML_CUDA_FA_ALL_QUANTS rebuild of head HIP + worker CUDA at 9b05354ec)
- Split kept at 0.53 for phase 1 (Q6_K frees ~4.7 GiB on the worker at
  this split); re-maximize after measuring draft placement
- KV math: K 1088 B/token + V 2048 B/token = 784 MiB per FA layer
2026-08-17 02:01:22 -07:00
Frank e9ec5cd13f docs: NPU endpoint now serves qwythos:9b (2026-08-17 swap, FLM 1.0.1)
- AGENTS.md + deployment.md target maps: qwen3.6-moe:35b-a3b -> qwythos:9b
- FLM doc: FLM 1.0.1 upgrade record, flm-add install state, model swap
  paragraph (commit c85ff6c), FLM_CONFIG_PATH/FLM_XCLBIN_PATH requirement
- pi client entry note: id qwythos:9b, text-only input, developer-role compat kept
2026-08-17 01:24:43 -07:00
Frank aa1941d592 docs + guard: single 262k slot state, split-limits analysis, cache incident
- spec matrix + PP doc: production state = 1 slot @ 262144, split 0.53
  (34 blocks), KV 8192/8192, 3090 at 23460/24576. New 'Split limits
  (measured 2026-08-17)' section: 0.50/0.54/0.55 boundary data, the
  KV-per-device rounding rule (round(f x 66)), and why 35 blocks is
  unreachable (9-FA flip at f~0.538).
- PP doc: cache incident writeup - full Dankserver disk -> 0-byte cache
  entries -> corrupt weights -> degenerate output; fix + signature.
- deployment.md + AGENTS.md + index.md: numbers brought current.
- scripts/prune-rpc-cache.sh: cron guard capping the worker cache at
  40 GiB (oldest first) to prevent the disk-full recurrence.
2026-08-17 01:24:06 -07:00
Frank c85ff6c6fd frank-default-small: NPU model swap qwen3.6-moe:35b-a3b -> qwythos:9b (Huihui-Qwythos-9B-Claude-Mythos-5-1M-abliterated)
- FLM_MODEL=qwythos:9b, CTX 262144, turbo+asr kept
- Add FLM_CONFIG_PATH/FLM_XCLBIN_PATH: the custom tag lives in the user
  registry (~/.config/flm/model_list.json) + user xclbins; without them
  flm hits the unknown-tag fallback and serves llama3.2:1b silently
- Note FLM 0.9.45 -> 1.0.1 runtime upgrade (pack declares flm_version 1.0.0)
2026-08-17 01:22:32 -07:00
Frank 2b96043740 frank-default-large: split 0.53,0.47 - provably-safe max (34 blocks)
0.54 measured: weight boundary moved to 35 blocks but the KV-per-device
count (round(f x 66), independent of weight boundary) flipped to 9 FA ->
KV 9216 MiB -> OOM by ~740 MiB. The flip sits at f ~0.538, just below
the weight threshold for block 35 -> the 35-block config is unreachable.
0.53 gives 34 blocks (0-33), 8 FA, KV 8192 MiB under every rounding rule
(round/floor/ceil of 0.53x66 = 34.98 -> 34 or 35, never 36), predicted
~1.1 GiB free.
2026-08-17 01:21:21 -07:00
Frank 193034fdb8 frank-default-large: split 0.54,0.46 - 35 blocks on 3090 (0.55 overran to 36 -> OOM)
0.55 measured: 36 blocks (0-35) -> 9th FA block, KV 9216 MiB, cudaMalloc
OOM by ~740 MiB, crash loop. Exact GGUF math: layer pool 27720 MB + MTP
head; split assigns blocks while cumulative <= fraction x pool; cum(34)=
53.83%, cum(35)=55.31%. 0.54 lands 35 blocks (0-34), 8 FA layers, KV
8192 MiB, ~0.66 GiB free.
2026-08-17 00:58:06 -07:00
Frank accf90b6fa frank-default-large: split 0.55,0.45 = 35 blocks on the 3090 (true max)
GGUF block scan (2026-08-17): FA at 3,7,...,63; linear blocks 383 MiB,
FA blocks 446 MiB. 35 blocks (0-34) keep 8 FA layers on RPC0 -> KV stays
8192 MiB, predicted ~0.8 GiB free. Block 35 is FA: +1 GiB KV -> OOM.
Measured at 0.50: 22650/24576 used, 1477 free (the earlier 714 MiB
projection was conservative).
2026-08-17 00:34:58 -07:00
Frank 53ada02a63 frank-default-large: PARALLEL=1, CTX 262144, split 0.50 (max 3090 weight)
Single full-context slot instead of two half-context slots. The 3090 takes
~33 of 66 layers (up from 26): the VRAM budget frees up because the f16 KV
pool shrinks 401400 -> 262144. 33 layers is the max with a safety margin
(34 -> 244 MiB headroom, 35 -> OOM). Verified math: /tmp/vram-math.py from
live journal buffers.
2026-08-16 23:53:09 -07:00
Frank 7fe271e65d 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.
2026-08-16 23:19:21 -07:00
Frank f5a78db017 docs: FLM rejects developer role — root cause of pi 'Stream ended without finish_reason'
Streaming requests with role=developer get HTTP 200 + error JSON as
first body; pi sees a chunkless stream. Fix: compat.supportsDeveloperRole
false on the model entry. Verified by field bisection + headless pi run.
2026-08-16 20:54:13 -07:00
Frank 9ec5678ef0 docs: qwen3.6-moe unreachable incident (2026-08-16) + topology reconciliation
- FastFlowLM doc: incident section (EXEC-203 exec-bit loop, client model
  ID 'frank-default-small' rejected, swap churn 14:48-15:03), FLM
  unknown-tag fallback behavior (silently loads llama3.2:1b default),
  working models.json entry recorded, promotion status -> qwen3.6-moe
- AGENTS.md: Overview + target map now reflect qwen3.6-moe:35b-a3b on
  the NPU endpoint (Dankserver llama.cpp 35B service stopped)
- deployment.md: topology table current; Dankserver frank-default-small
  section marked STOPPED 2026-08-16 (alias moved to the NPU endpoint)
2026-08-16 15:50:15 -07:00
Frank 50c55ee220 frank-default-small: swap to qwen3.6-moe:35b-a3b at 262144 ctx (native max), keep turbo+asr 2026-08-16 14:48:33 -07:00
Frank 2f1999b2e9 docs: frank-default-small live config — turbo, ASR, 131072 ctx verified 2026-08-16 14:38:37 -07:00
Frank fd4746422d frank-default-small: pmode turbo, ASR (Whisper-V3-Turbo) on, ctx-len 131072 (max verified) 2026-08-16 14:37:32 -07:00
Frank 02a1447602 head alias: frank-default -> frank-default-large (match renamed service) 2026-08-16 14:27:48 -07:00
Frank d0ade28f6d docs: fleet topology update — PP split renamed frank-default-large, NPU endpoint promoted to frank-default-small, 4-model NPU bakeoff matrix (2026-08-16) 2026-08-16 14:22:13 -07:00
Frank 3f42210922 fix: mark serve-flm-small.sh executable (unit failed EXEC 203) 2026-08-16 14:20:17 -07:00
Frank f6737f234d promote NPU endpoint to frank-default-small: FLM serve unit + wrapper + env (gemma4-it:e4b default), LimitMEMLOCK=infinity (2026-08-16) 2026-08-16 14:19:37 -07:00
Frank 48142f5d8e rename frank-pp-head to frank-default-large: PP split is the new production large endpoint (2026-08-16) 2026-08-16 13:44:31 -07:00
Frank 79c913aaa7 docs: NPU parallelism measured — single-lane FIFO serialization, aggregate t/s flat at N=1/2/4 2026-08-16 13:12:46 -07:00
Frank d48227c7f7 docs: gpt-oss-20b landed on the Dankclaw NPU — 19.3 t/s decode measured, memlock fix, serve state (2026-08-16) 2026-08-16 12:57:44 -07:00
Frank 0799fc5eb4 docs: FastFlowLM NPU research — AMD NPU runtime, 50 TOPS Strix Halo fit analysis, verified install state, test runbook (2026-08-16) 2026-08-16 12:29:11 -07:00
Frank 934c6d8be1 pp-head: 2x200700 f16 KV (ctx 401400, parallel 2), split 0.40,0.60 = max 3090 capacity 2026-08-16 12:23:08 -07:00
Frank 3ad4c6921c pp-head: alias frank-default, verbosity 4 (interactive use) 2026-08-16 10:42:29 -07:00
Frank 750730e4d9 pp-test: restore drops caches before production load; all-mode EXIT trap auto-restores; ssh ConnectTimeout 2026-08-16 10:17:01 -07:00
Frank 1716bf37c9 pp-test: preflight production check via health endpoint (no sudo needed) 2026-08-16 05:48:17 -07:00
Frank 9544c36afc PP kit + Strix research: Qwen3.8-27B RPC split (Dankclaw head / Dankserver worker)
- scripts: serve-pp-head/worker, envs, systemd units, pp-test.sh orchestrator, pp-bench.py
- head design verified in b10433 source + live 4B smoke test:
  * no --device with --rpc (RPC device silently dropped otherwise)
  * default device selection = [RPC0, ROCm0] (HIP registers before Vulkan)
  * default split proportional to reported free mem = ~20/80 here, pin 1,1
  * -dio required for large model over RPC
- docs: qwen3.8-strix-optimizations (ranked no-quant-downgrade levers,
  quant landscape, 2026-08-16 test matrix), PP deployment runbook,
  index updates, Dankclaw Improvements corrections (Vulkan0, no power_profile sysfs)
- worker built at 9b05354ec in /home/dank/llama-cpp-rpc worktree (CUDA+RPC)
- second head build build-vulkan-rpc (HIP off) for backend A/B
2026-08-16 05:40:27 -07:00
Frank c775077016 dankclaw: add MTP=1 toggle - prepend draft-mtp before --spec-default ngram-mod fallback 2026-08-15 22:31:29 -07:00
Frank b6f2ee2945 docs: record --spec-default + Vulkan0 + PARALLEL=2 final state; 262k-ctx ROCm-vs-Vulkan bench 2026-08-15 17:13:18 -07:00
Frank 5296cf11d7 dankclaw: switch backend to Vulkan0 (48% faster decode at 262k ctx); add bench-high-ctx.sh 2026-08-15 17:03:01 -07:00
Frank 1dbc70cb32 dankclaw: retire DSpark, use llama.cpp --spec-default (ngram-mod) preset; PARALLEL=2 trial 2026-08-15 15:15:06 -07:00
Frank 020e874a5c docs: record DSpark single-slot switch + ROCm parallel crash (2026-08-15) across KB; refs AGENTS/deployment/benchmark/matrix/index 2026-08-15 14:36:34 -07:00
Frank d04cc69e09 dankclaw: add accurate DSpark stream/queue test (PARALLEL=1) - reports true prompt_tokens; single+concurrent 16k pass 2026-08-15 14:32:21 -07:00
Frank 6266e43f10 dankclaw: DSpark parallel crash - ROCm illegal memory access under 2x16k prose, pin PARALLEL=1 per user 2026-08-15 14:24:27 -07:00
Frank b94bad066b dankclaw: switch frank-default-large spec to DSpark sidecar draft (magnitudedev Qwen3.8-27B-DSpark Q8_0, n_max 7) 2026-08-15 14:00:30 -07:00
Frank 40b079fe1e unit: refresh frank-default-large description (Qwen3.8-27B UD-Q8_K_XL, MTP+ngram-mod+ngram-map-k4v) 2026-08-14 21:01:22 -07:00
Frank 8d64adbcbe dankclaw: production spec -> 3-layer chain draft-mtp,ngram-mod,ngram-map-k4v (user request; ~equal real-prose speed) 2026-08-14 21:00:05 -07:00
Frank 2d7290a2a8 AGENTS: MANDATORY benchmarking policy - stop production service before any bench (serves ~3 real users); restart + health-check after 2026-08-14 20:54:34 -07:00
Frank 0eda208705 docs: Qwen3.8 spec-matrix benchmark page; add matrix tools; final env n_max=5
Recording the 54-config matrix, the realistic-prompt correction (n_max=5 not
10), the ubatch findings (256 is the safe/fast point), and the premature-stop
sampling-variance investigation.
2026-08-14 14:28:51 -07:00
Frank a818be70dc dankclaw Qwen3.8: winner n_max=5 (13.3 t/s real), not matrix n_max=10
Realistic-prompt tuning: n_max=5 peaks ~13.3 t/s (baseline 7.2). matrix used a
repetitive prompt that inflated MTP. n_max=10 is only ~8.6 t/s on real writing.
2026-08-14 14:26:14 -07:00
Frank 75bb9bb53e dankclaw Qwen3.8: batch 8192/ubatch 256 - fixes MTP collapse + premature-EOS
Found: large ubatch (512) collapses MTP acceptance to ~25% (gen ~9 t/s);
ubatch 128 with batch>=2048 triggers premature instant-EOS under 2 concurrent
slots.  ubatch 256 = ~30 t/s gen, concurrent-safe, ~330 t/s prefill.
2026-08-14 13:59:20 -07:00
Frank 57b0be037c dankclaw: switch frank-default-large to unsloth Qwen3.8-27B UD-Q8_K_XL
- rebuild llama.cpp stock to b10433 (9b05354ec) for bundled-MTP support
- MODEL_FILE -> Qwen3.8-27B-UD-Q8_K_XL.gguf; DRAFT_FILE empty (MTP bundled)
- SPEC: draft-mtp, n_max=10, p_min off (~30 t/s stable) - matrix winner
- CTX 524288 / parallel 2 = 262144/slot (matches pi contextWindow)
- serve script: bundled-MTP (no --spec-draft-model), optional --spec-draft-p-min
2026-08-14 13:26:17 -07:00
Frank d72092b2c7 docs: record dual-f16 KV refit on frank-default-small (2026-08-14) 2026-08-14 12:59:10 -07:00
Frank f96aa2b692 frank-default-small: refit ctx 800000->700000 for dual-f16 KV pool
The f16/f16 KV pool costs 15640 MiB at 800768 cells. At full 800K the
3090 idled at 23966/24576 MiB and the 1472x1472 image warmup graph
failed cudaMalloc (needed +248 MiB). 700416 cells (175104/slot, 4 slots)
leaves ~2.3 GiB free after warmup. Parallel stays 4.
2026-08-14 12:55:44 -07:00
Frank f70460b002 frank-default-small: KV K+V to f16, add verbosity tunable (F16 KV diag)
F16 K removes the flash-attn F16-conversion workspace (MMA_F16 prefill
kernel needs no copy when K is already f16). Trades static KV pool size
for the context-proportional workspace growth implicated in the
cublasSgemm_v2 crash class. VERBOSITY=4 run logs real allocation sizes;
refit CTX_SIZE if the pool does not fit on the 24 GiB 3090.
2026-08-14 12:50:59 -07:00
Frank bea52138d2 docs: record Dankserver VRAM/RAM growth investigation (2026-08-14) 2026-08-14 12:44:24 -07:00
Frank 9d7643ec5d frank-default-small: ncmoe 35->36 for prefill stability
Fix a live crash: cuBLAS cudaErrorInvalidValue in ggml_cuda_mul_mat_cublas
killed the service during a 145k-token prefill burst at ncmoe35/ub3072.

ncmoe 36 moves one more expert layer to CPU: frees ~0.75 GiB peak VRAM
(grid: peak 8606 vs 9360 MiB at ub3072) for -2% prefill / -2% decode.
Keeps prefill priority (top ubatch tier). Docs synced; noted fallback
GGML_CUDA_FORCE_MMQ=1 if pressure persists.
2026-08-14 10:56:40 -07:00
Frank 7daf9896e5 docs: record Ling freeze diagnosis - spec path deadlock, resolution spec-off parallel=2 2026-08-14 03:49:42 -07:00
Frank 139686043b ling B-test: spec off (--spec-type none), keep parallel=2 - isolate spec path as freeze trigger 2026-08-14 03:39:15 -07:00
Frank 7ba86812f7 ling A/B: verbosity 4->0, drop log file to isolate hang trigger (match known-good run) 2026-08-14 02:32:08 -07:00
Frank 6a6d673dca ling A/B: revert batch 8192->3072 to isolate mid-stream freeze (suspect batch) 2026-08-14 02:20:52 -07:00
Frank a5444e2c4d ling: batch 8192 (ubatch 3072); add -lv verbosity + log file for stop-investigation 2026-08-14 02:12:35 -07:00
Frank 321f946660 ling: ubatch 512 -> 3072 (batch 3072) - using heap headroom, watch for OOM 2026-08-14 01:46:36 -07:00
Frank a5b12e1062 ling: keep draft-mtp,ngram-mod active (A/B wash vs MTP alone, parallel-safe) 2026-08-14 01:45:22 -07:00
Frank 6647690ebd ling A/B: bench draft-mtp alone vs draft-mtp,ngram-mod 2026-08-14 01:43:53 -07:00
Frank 3204b4b29e ling trial: layer ngram-mod under draft-mtp; add ngram args to serve script 2026-08-14 01:40:46 -07:00
Frank c275cbaf57 docs: Ling-3.0-flash Q6_K trial page (Vulkan+GTT memory research, switch-back steps) 2026-08-14 01:22:02 -07:00
Frank 923e775354 dankclaw: Ling-3.0-flash Q6_K trial config (Vulkan+GTT+draft-mtp)
Trial replaces frank-default-large temporarily via frank-large-ling.service
(port 7770, same alias). Requires the aetherbird bailingmoe3-support llama.cpp
fork at /home/dank/llama.cpp-ling (stock llama.cpp cannot load bailingmoe3).
Memory: 8x16GB LPDDR5 = 128GB physical; Vulkan exposes ~111.2GiB heap (UMA
96GiB + GTT) vs ROCm's 96GiB. Q6_K = 98.26GiB; MLA/KDA KV is tiny so 256k
ctx x 2 slots fits with ~10GiB headroom. Verified: loads ~45s, concurrent
streams both complete (no DFlash-style kill), ~7.7 t/s gen.
Restore Qwen: systemctl stop frank-large-ling; systemctl start
frank-default-large.
2026-08-14 01:20:30 -07:00
Frank db69fc8192 docs: pipeline parallelism research + educational sample script set
Compiles the 5-subagent research fan-out (llama.cpp RPC, vLLM PP,
bandwidth math, mixed-vendor experiments, Qwen3.6-27B spec methods) into
the KB under docs/Pipeline Parallelism/ with an index, expected
performance estimates (1/2.5/10 GbE), and an EDUCATIONAL-ONLY two-node
Qwen3.6-27B Q8 split script set (MTP/DFlash/ngram-mod variants, DSpark
noted as vLLM-only). Nothing here is deployed or intended to run.
2026-08-14 00:22:23 -07:00
Frank 8d1d9baa82 docs: MTP wins the DFlash replacement; record parallel premature-EOS incident
- benchmark doc: spec A/B table (MTP 15.3-19.5, MTP+ngram 12-13.6,
  MTP n_max2 12.4-14.3, ngram 6.7-8.7, DFlash retired), the DFlash
  shared-draft-context premature-EOS incident, updated batch/ubatch.
- deployment.md: Dankclaw now draft-mtp n_max 3 + MTP-ONLY-Q8_0 sidecar,
  batch 8192/ubatch 8192; note Dankserver bench drift.
- index.md/AGENTS.md: corrected stale topology (Ling-3.0-flash, DFlash).
- DFlash doc: Dankclaw section rewritten for MTP; DFlash retired.
2026-08-13 23:27:06 -07:00
Frank a27839519e dankclaw: FINAL spec - draft-mtp n_max 3, ubatch 8192
n_max 2 benched 12.4-14.3 t/s (slower than n_max 3 at 15.3-19.5);
n_max 3 is the MTP sweet spot. ubatch 8192 (==batch) uses the VRAM
headroom (65.5 GiB of 96 GiB) safely. MTP beats ngram-mod (~7 t/s) and
matches DFlash (~20 t/s) without the parallel premature-EOS bug.
2026-08-13 23:07:38 -07:00
Frank 01eb957f90 frank-default-small: prefill-max ncmoe 35 / ubatch 3072
Prefill is the priority for this workload. Switch from decode-max
(ncmoe 32 / ubatch 1024) to prefill-max:
- n-cpu-moe 35, ubatch 3072: prefill ~1458 t/s (top tier), gen ~45.4 t/s,
  ~1.2 GiB headroom at the 800k pool.
- Gen is independent of ubatch; ub 3072 reaches best prefill with no
  decode cost. Docs synced (benchmark Chosen State, deployment, specs).
2026-08-13 23:07:30 -07:00
Frank 2b4e58a926 dankclaw: MTP tuning - spec-draft-n-max 2
Retest MTP at n_max 2 (vs 3) for the acceptance/speed tradeoff, keeping
MTP-alone + ubatch 8192. Re-benches gen t/s and re-runs the strict
parallel-safety test.
2026-08-13 23:02:07 -07:00
Frank 3c2db64a78 frank-default-small: ncmoe 32 + ubatch 1024 from llama-bench sweep
Swept ncmoe(30..40) x ubatch(256..4096) on the RTX 3090 (Qwen3.6-35B-A3B
Q6_K_P, pp16384/tg512, fit-target 0). Key findings:
- Generation depends only on ncmoe: 40.9 (ncmoe40) .. 51.1 (ncmoe30);
  ubatch/batch do not affect decode at all.
- Prefill + graph VRAM scale with ubatch; logical batch is irrelevant.
- VRAM model (peak + 11.44GiB KV pool + 2.2GiB overhead) reproduces the
  historical OOMs: ncmoe32-ub2048 sums ~24.4GiB > 24.

Chosen state: ncmoe 32 (8 expert layers on GPU), batch 8192, ubatch 1024.
  gen ~48.7 t/s (+7% vs prior ncmoe 35), prefill ~766 t/s, ~1.0GiB headroom.
Alternates: ncmoe34-ub2048 (gen 46.4, pp 1221, 1.5GiB) for prefill-heavy;
  ncmoe32-ub768 (1.3GiB) if headroom matters most.
Docs: new frank-default-small-benchmark.md; synced deployment.md + specs.
2026-08-13 22:56:24 -07:00
Frank 0d09756430 dankclaw: revert MTP+ngram layering (slower); ubatch 8192
MTP+ngram benched 12.0-13.6 t/s (vs MTP alone 15.3-19.5) and is
parallel-safe, but slower - layering does not pay off. Back to MTP
alone. Test ubatch 8192 (== batch) using the VRAM headroom; watch for
OOM during load.
2026-08-13 22:46:55 -07:00
Frank 5dd6949909 dankclaw: bench cycle 3 - layer ngram-mod under draft-mtp
Test the MTP+ngram layering (ngram re-drafts on top of the MTP draft) at
ubatch 4096. Must clear the strict parallel-safety test and beat MTP
alone (15.3-19.5 t/s) to stay.
2026-08-13 22:22:29 -07:00
Frank f203f1bc40 dankclaw: MTP wins the spec bench; raise ubatch to 4096
MTP (draft-mtp, n_max 3, a4lg MTP-ONLY-Q8_0) benches 15.3-19.5 t/s vs
ngram-mod 6.7-8.7 t/s and passes the strict LCP-reuse parallel test
(sim 0.996 / f_keep 0.994 launch while another slot generates - the
pattern that killed DFlash). ubatch 4096 to use the ~33 GiB VRAM
headroom; watch peak during load.
2026-08-13 22:02:40 -07:00
Frank 5665e1ad6f dankclaw: bench cycle 2 - MTP sidecar drafter
ngram-mod benchmark + parallel-safety test passed (A and B both survive
the LCP-reuse launch that killed DFlash). Now benching MTP sidecar
(a4lg/Qwen3.6-27B-MTP-ONLY-Q8_0.gguf, draft-mtp, n_max 3).
2026-08-13 21:51:32 -07:00
Frank 6451017d3c dankclaw: bench cycle 1 - switch spec to ngram-mod; draft flags conditional
DFlash causes premature EOS on a generating slot when another task lands
with high LCP prompt reuse (shared draft ctx corruption, reproduced
2026-08-14 3x). Benching ngram-mod vs MTP sidecar to pick the
replacement. serve script now passes --spec-draft-model only for
draft-* spec types.
2026-08-13 21:16:32 -07:00
Frank 42558f1707 deploy.sh: per-target health wait; 20 min for Dankclaw cold loads
Cold loads after the cache drop measured 17 minutes on 2026-08-13, longer
than the previous 600s wait. HEALTH_WAIT[dankclaw]=600 iterations (20 min),
dankserver stays at 300 (10 min). AGENTS.md: update cold-load figure.
2026-08-13 21:01:01 -07:00
Frank e29071caa1 docs: passwordless restart helpers, parallel-streams incident, MTP drafter findings
- deployment.md: document the sudoers NOPASSWD restart helpers on both
  targets, the exact-argument matching quirk, and the 2026-08-13
  'premature job release' investigation (server never preempts; aborts
  were client-side; Dankserver crashed twice under researcher load).
- DFlash/DSpark doc: MTP requires MTP tensors in the target GGUF; the
  HauhauCS Qwen3.6-27B GGUF has none (verified tensor listing); MTP-only
  draft GGUFs (a4lg/lym00) pair via --spec-draft-model; flag rename
  --spec-type mtp -> draft-mtp in b9180.
- AGENTS.md: operational quirks for the helpers, journal abort-vs-release
  signature, and the Dankserver cublasSgemm crash signature.
2026-08-13 20:42:57 -07:00
Frank 6fae3a9f1a deploy.sh: prefer passwordless restart helper on targets
The helper scripts (/usr/local/sbin/frank-restart-<large|small>.sh)
cover unit symlink, cache drop (dankclaw), daemon-reload, and restart
in one root-owned script, run via sudoers NOPASSWD. deploy.sh now uses
the helper when present and falls back to inline sudo commands.
2026-08-13 20:41:34 -07:00
Frank 209223cb4f Offload one more MoE expert to CPU on frank-default-small (34→35 of 40)
- N_CPU_MOE 34→35: 5 expert layers on GPU instead of 6. Frees ~0.4-0.8 GiB
  VRAM for OOM safety after high-load sessions OOM'd at 32 and 33.
- Sync stale doc references (deployment.md, Dankserver System Specs.md)
  that still claimed 32/8; specs now estimate ~1.8 GiB headroom at 35.
2026-08-13 20:18:20 -07:00
Frank c96cb6a529 deploy.sh: drop page caches before restart; headless sudo; ssh-based health check
Deterministic deployment instead of agent ritual:

- DROP_CACHES per target (dankclaw=1): runs 'sync; echo 3 >
  /proc/sys/vm/drop_caches' before systemctl restart. Without it the
  model load stalls at 28 GiB VRAM when the model pages are cached.
- FRANK_SUDO_PW env var: remote sudo pipes it via 'sudo -S' so the
  script runs headless. Falls back to plain sudo otherwise.
- Health check runs curl on the target over ssh (127.0.0.1:7770 was
  previously checked from the workstation, which can never see it).
2026-08-13 19:05:26 -07:00
Frank 317610a540 perf: raise frank-default-large to batch 8192 / ubatch 2048
Empirically verified on 2026-08-13 (caches dropped): batch 8192 / ubatch
2048 loads and serves at ctx 602100 with 61 GiB VRAM peak. The benchmark
doc's 'ubatch 2048 OOMs' results were confounded by page-cache pressure -
with the model's pages fully cached the KV/graph allocation stalls at
28 GiB VRAM. Drop caches (sync; echo 3 > /proc/sys/vm/drop_caches) before
starting a load to make restarts reliable.
2026-08-13 18:56:12 -07:00
Frank 447286c2a1 docs(AGENTS.md): add runtime & troubleshooting knowledge from the TEMP/HIP incident
Four sections: env var naming rule (HIP collision, TEMP/HOST/GPU_MAX_HEAP_SIZE),
crash-loop diagnostic procedure, operational quirks (sudo -S, pkill -x, slow
load, page-cache confound), and the Dankclaw memory model (96 GiB SVM budget).
2026-08-13 18:08:56 -07:00
Frank 0afdd9d7b5 docs: document TEMP env var / HIP runtime crash incident in troubleshooting 2026-08-13 18:04:24 -07:00
Frank 227ce01417 fix: rename sampling TEMP var to TEMPERATURE to avoid HIP runtime env collision
The ROCm HIP runtime (libamdhip64) reads the TEMP environment variable as
its JIT kernel-cache temp directory. Commit db3eb01 added TEMP=1.0 to the
env files as a sampling default; the serve scripts export it via set -a.
HIP then used the path "1.0" for its cache, failed, and segfaulted with a
NULL-refcount unref (offset 0x446153 in libamdhip64) during model tensor
upload (ggml_backend_cuda_buffer_set_tensor). This crashed frank-default-
large on every restart from Aug 13 16:22 onward; the earlier c984a3e
"fix" (KV/batch changes) was unrelated.

Rename the sampling variable TEMP -> TEMPERATURE in both env files and
serve scripts. llama-server still receives --temp from the renamed var, so
sampling defaults are unchanged. The HIP runtime no longer sees a bogus
TEMP value. Affects frank-default-large (dankclaw) and frank-default-small
(dankserver).
2026-08-13 17:54:29 -07:00
Frank 6663af1041 Revert "Remove KV cache quantization, increase batch/ubatch on frank-default-large"
The Aug 13 change crashed frank-default-large in a restart loop. The service
segfaulted ~15s into model load (SIGSEGV in hipMalloc during load). The
benchmark (frank-default-large-benchmark.md) already proved ubatch 2048 OOMs
(40.9GB prefill buffer) and batch 2048 / ubatch 512 is the fits-and-loads
config on the 96GiB UMA budget. Restore q8_0/q8_0 KV cache (FA pairing) and
batch 2048 / ubatch 512.

Also fix deployment.md: KV is q8_0 K / q8_0 V (not f16 V) since 334b6af.
2026-08-13 17:04:02 -07:00
Frank c984a3e4e6 Remove KV cache quantization, increase batch/ubatch on frank-default-large
- Remove CACHE_TYPE_K/CACHE_TYPE_V (fp16 default on GPU)
- Increase BATCH_SIZE from 2048 to 8192
- Increase UBATCH_SIZE from 512 to 2048
- Remove --cache-type-k and --cache-type-v from llama-server flags
2026-08-13 16:50:09 -07:00
Frank db3eb01495 Add recommended sampling defaults and reduce MoE GPU offload on dankserver
- frank-default-large: add TEMP=1.0, TOP_K=20, TOP_P=0.95, MIN_P=0.0
  (per HauhauCS Qwen3.6-27B model card, thinking-general mode)
- frank-default-small: add same sampling defaults
  (per HauhauCS Qwen3.6-35B-A3B model card)
- frank-default-small: reduce N_CPU_MOE from 33 to 34 (6 expert
  layers on GPU instead of 7) to prevent OOM during high-load sessions
- Both serve scripts pass --temp, --top-k, --top-p, --min-p to
  llama-server; clients can still override per-request via API
2026-08-13 16:18:47 -07:00
Frank 334b6af2ae fix(frank-default-large): enable flash attention by pairing V cache to q8_0
Root cause of ~1 t/s long-context decode: llama.cpp build has
GGML_CUDA_FA_ALL_QUANTS=OFF, and FA requires K type == V type.
Mixed cache q8_0/f16 silently disabled FA, collapsing decode at
200k ctx. Set V to q8_0 (halves V memory too) and retune
threads 12/1 for 16 Zen5 cores.
2026-08-12 02:09:05 -07:00
Frank f20d6ce288 docs: add Dankclaw improvements research (agentic tools, runtime tuning, server/OS) 2026-08-11 18:14:44 -07:00
Frank e92c72fd11 docs: frank-default-large llama.cpp draft-dflash deployment + benchmark results; retire Ling vLLM references 2026-08-11 17:24:59 -07:00
Frank 668083fe76 perf: frank-default-large ubatch 512 (compute graph scales with ubatch; 602100 ctx KV leaves ~16GB, ubatch 2048 OOM) 2026-08-11 17:19:57 -07:00