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.
This commit is contained in:
Frank committed 2026-08-13 21:16:32 -07:00
1 parent 42558f1707
commit 6451017d3c
2 files changed
+29 -14

No files matched your search

+15 -9
View File
@@ -7,11 +7,19 @@ PORT=7770
# 3 parallel slots x 200700 ctx each = 602100 total context pool. # 3 parallel slots x 200700 ctx each = 602100 total context pool.
CTX_SIZE=602100 CTX_SIZE=602100
PARALLEL=3 PARALLEL=3
# Spec: DFlash draft model. Bench (4k, ROCm) showed draft-dflash fastest # Spec: speculative decoding mode.
# generation (20.2 t/s): DFlash+ngram 16.9, ngram-only 8.7. ngram layering # draft-dflash - DFlash block-diffusion draft (benchmark winner pre-2026-08-14)
# reduced throughput, so it is not layered in production. # BUT: premature EOS under parallel load when a new task
SPEC_TYPE=draft-dflash # reuses a cached prompt (shared draft ctx corruption). Retired.
SPEC_DRAFT_N_MAX=8 # draft-mtp - MTP sidecar draft (a4lg/Qwen3.6-27B-MTP-ONLY-Q8_0.gguf)
# ngram-mod - draftless ngram matching (no draft model, no shared ctx)
# Benched 2026-08-14: see docs/frank-default-large-benchmark.md for the winner.
SPEC_TYPE=ngram-mod
# Draft model file (only used when SPEC_TYPE contains 'draft-').
# DFlash: Qwen3.6-27B-DFlash-Q8_0.gguf ; MTP: Qwen3.6-27B-MTP-ONLY-Q8_0.gguf
DRAFT_FILE=Qwen3.6-27B-MTP-ONLY-Q8_0.gguf
# Draft length per spec type: dflash 8, mtp 2-3.
SPEC_DRAFT_N_MAX=3
SPEC_NGRAM_MOD_N_MIN=48 SPEC_NGRAM_MOD_N_MIN=48
SPEC_NGRAM_MOD_N_MAX=64 SPEC_NGRAM_MOD_N_MAX=64
SPEC_NGRAM_MOD_N_MATCH=24 SPEC_NGRAM_MOD_N_MATCH=24
@@ -28,10 +36,8 @@ CACHE_TYPE_K=q8_0
CACHE_TYPE_V=q8_0 CACHE_TYPE_V=q8_0
# Batch sizing: empirically verified 2026-08-13 with caches dropped. # Batch sizing: empirically verified 2026-08-13 with caches dropped.
# batch 8192 / ubatch 2048 loads and serves (61 GiB VRAM peak, ctx 602100). # batch 8192 / ubatch 2048 loads and serves (61 GiB VRAM peak, ctx 602100).
# The earlier "ubatch 2048 OOMs" notes in frank-default-large-benchmark.md # ubatch is the compute-graph driver; larger ubatch = more VRAM, faster prefill.
# were confounded by page-cache pressure: with the model's pages fully # Re-verified 2026-08-14 during the spec swap (see benchmark doc).
# cached, the KV/graph allocation stalls (VRAM stuck at 28 GiB).
# Drop caches before starting a load: sync && echo 3 > /proc/sys/vm/drop_caches.
BATCH_SIZE=8192 BATCH_SIZE=8192
UBATCH_SIZE=2048 UBATCH_SIZE=2048
# Sampling settings — per HauhauCS Qwen3.6-27B model card. # Sampling settings — per HauhauCS Qwen3.6-27B model card.
+14 -5
View File
@@ -48,16 +48,25 @@ LLAMA_SERVER="${LLAMA_SERVER:-/home/dank/llama.cpp/build/bin/llama-server}"
MODEL="$MODEL_DIR/$MODEL_FILE" MODEL="$MODEL_DIR/$MODEL_FILE"
DRAFT="$MODEL_DIR/$DRAFT_FILE" DRAFT="$MODEL_DIR/$DRAFT_FILE"
for f in "$MODEL" "$DRAFT"; do if [[ ! -f "$MODEL" ]]; then
if [[ ! -f "$f" ]]; then echo "missing required file: $MODEL" >&2
echo "missing required file: $f" >&2 exit 1
fi
# Draft-model flags apply only to spec types that use a draft file
# (draft-dflash, draft-mtp, draft-eagle3). ngram-mod is draftless.
SPEC_ARGS=()
if [[ "$SPEC_TYPE" == *draft-* ]]; then
if [[ ! -f "$DRAFT" ]]; then
echo "missing required file: $DRAFT" >&2
exit 1 exit 1
fi fi
done SPEC_ARGS+=(--spec-draft-model "$DRAFT")
fi
exec "$LLAMA_SERVER" \ exec "$LLAMA_SERVER" \
--model "$MODEL" \ --model "$MODEL" \
--spec-draft-model "$DRAFT" \ "${SPEC_ARGS[@]}" \
--spec-type "$SPEC_TYPE" \ --spec-type "$SPEC_TYPE" \
--spec-draft-n-max "$SPEC_DRAFT_N_MAX" \ --spec-draft-n-max "$SPEC_DRAFT_N_MAX" \
--spec-ngram-mod-n-min "$SPEC_NGRAM_MOD_N_MIN" \ --spec-ngram-mod-n-min "$SPEC_NGRAM_MOD_N_MIN" \