frank-small: Swift-1.5-27B Uncensored RCO-IQ3_XXS with MTP back on (two 131072 slots, ubatch 512, q8_0 KV, publisher's BF16 mmproj)

This commit is contained in:
Frank committed 2026-10-06 01:10:43 -07:00
1 parent 713b126639
commit da36fa32cf
6 files changed
+151 -168

No files matched your search

+22 -21
View File
@@ -1,24 +1,24 @@
#!/usr/bin/env bash
# Serve ukisai/Swift-1.5-Qwen3.8-27B-GSQ-RCO-GGUF (IQ3_S **-mtp**) as
# frank-small on Dankclaw's RTX 3090 via llama.cpp (master build, CUDA
# sm_86).
# Serve ajgazin/Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-GGUF
# (RCO-IQ3_XXS, **MTP head in the file**) as frank-small on Dankclaw's
# RTX 3090 via llama.cpp (master build, CUDA sm_86).
#
# 2026-10-06 (Frank): the 128k cap keeps the per-conversation window but
# the pool doubles to TWO 131,072 conversations (262144 / 2), speculative
# decoding is OFF (no draft-mtp; ngram skipped — on a qwen35 hybrid it
# disables recurrent-state rollback), and ubatch drops to 512. Frank
# accepted the tight fit explicitly (the 2-3 GiB floor is knowingly
# violated; frank-small.env carries the arithmetic). The q8_0 KV contract
# (FP8 class) is unchanged; the per-tensor flags stay explicit either way.
# 2026-10-06 (Frank): TWO 131,072 conversations (262144 / 2) at the 128k
# cap, ubatch 512, and MTP BACK ON (draft-mtp, depth 3 — the payload is
# 1.56 GiB lighter than the IQ3_S-mtp it replaced, which is what funds
# the draft ctx plus the second slot; ngram stays skipped — on a qwen35
# hybrid it disables recurrent-state rollback). The q8_0 KV contract
# (FP8 class) is unchanged; the per-tensor flags stay explicit either
# way.
#
# Architecture: qwen35 hybrid — 64 real layers, 16 full-attention + 48
# Gated DeltaNet (full_attention_interval 4), native 262144 window, plus
# the blk.64 MTP head (nextn_predict_layers=1). KV lives only in the 16
# attention layers (34 KiB/token at q8_0); the DeltaNet state is per-slot
# fixed size. Vision comes from the projector file (the GGUF carries no
# vision tensors; unsloth's mmproj built from the shared Qwen3.8-27B base —
# proven byte-identical to Swift's own tower, see download-frank-small.sh),
# so --mmproj is what gives this endpoint eyes; MMPROJ_FILE="" is the
# fixed size.
# Vision comes from the projector file (the GGUF carries no vision
# tensors; the publisher SHIPS mmproj-BF16.gguf in the same repo), so
# --mmproj is what gives this endpoint eyes; MMPROJ_FILE="" is the
# documented text-only opt-out.
#
# Sampling: llama.cpp takes it per request (the fleet harness sends its
@@ -38,7 +38,7 @@ fi
# --- defaults (used when the env file does not set them) -------------------
: "${LLAMA_BIN:=/home/dank/GitPackages/llama-master/build-cuda/bin/llama-server}"
: "${MODEL_FILE:=/home/dank/models/Swift15-IQ3S/Swift-1.5-Qwen3.8-27B-GSQ-RCO-IQ3_S-mtp.gguf}"
: "${MODEL_FILE:=/home/dank/models/Swift15-UncIQ3XXS/Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-RCO-IQ3_XXS.gguf}"
: "${ALIAS:=frank-small}"
: "${BIND_ADDR:=0.0.0.0}"
: "${LISTEN_PORT:=7771}"
@@ -61,15 +61,16 @@ fi
# visible in the argv.
: "${CACHE_TYPE_K:=q8_0}"
: "${CACHE_TYPE_V:=q8_0}"
# Speculative decoding is OFF by default (Frank, 2026-10-06): SPEC_TYPE
# none strips BOTH speculative flags (flags move as a set). Setting a
# drafter here re-enables the pair — draft-mtp needs the head that is IN
# the -mtp GGUF.
: "${SPEC_TYPE:=none}"
# Speculative decoding is ON by default (Frank, 2026-10-06 evening):
# draft-mtp against the head that is IN the file. SPEC_TYPE none strips
# BOTH speculative flags (flags move as a set) — a no-spec baseline must
# not carry half a spec pair.
: "${SPEC_TYPE:=draft-mtp}"
: "${SPEC_DRAFT_N_MAX:=3}"
: "${NGL:=99}"
# Vision projector. No colon on purpose: an explicitly empty value means
# "text-only, on purpose" and must NOT be replaced by the default path.
: "${MMPROJ_FILE=/home/dank/models/Swift15-IQ3S/mmproj-Qwen3.8-27B-F16.gguf}"
: "${MMPROJ_FILE=/home/dank/models/Swift15-UncIQ3XXS/mmproj-BF16.gguf}"
# Fail loudly rather than half-loading: a missing file is a download that
# has not finished, and Restart=always would turn it into a crash loop that