The 2026-10-09 wire aliases become the service names everywhere: systemd units, serve scripts, env files and FRANK_* variables, deploy-plan/deploy-remote service keys, container names, Prometheus job names + alert rules, Grafana dashboard queries, bats seams, runbook filenames, homepage/AGENTS lore, and historical prose. Rollback tags renamed in lockstep. Residue in the tree: zero. Retired frank-medium/small/npu names are history and stay. Known casualty: scripts/patches/*.patch context lines were rewritten; those retired-era vLLM-fork patches no longer apply byte-exact.
92 lines
3.0 KiB
Bash
Executable File
92 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Download kingjones777/Qwen3.8-27B-ROCmFP4-STRIX-MTP-GGUF for frank-dragoon
|
|
# (Dankclaw iGPU). Public repo — no auth header, and never a token on the
|
|
# command line (it is world-readable in /proc/<pid>/cmdline).
|
|
#
|
|
# The payload is the repo's highest-quality target plus its MTP draft head and
|
|
# vision projector:
|
|
# * Qwen3.8-27B-Q8_0_ROCMFPX_AGENT.gguf — ftype 115, 187 tensors at plain
|
|
# Q8_0 and 311 at GGML_TYPE_Q8_0_ROCMFPX (103). The AGENT routing keeps the
|
|
# output-head tensors at full Q8_0 (187 vs 2 in the non-AGENT build), which
|
|
# is the variant to take when serving with the MTP head.
|
|
# * mtp-Qwen3.8-27B-Q4_0.gguf — the draft head. Q4_0, NOT Q8_0: the head's
|
|
# per-step cost is its projection over a 248K vocabulary, so the cheaper
|
|
# head is faster end to end at equal acceptance (author: +6.0% at n-max 1,
|
|
# +10.2% at n-max 2).
|
|
# * mmproj-Qwen3.8-27B-BF16.gguf — the vision tower (verified 4/4 on spatial
|
|
# ground truth with -fa on).
|
|
#
|
|
# Fresh downloads, no resume (`curl -C -` once produced an oversized file on a
|
|
# 31 GiB payload); -f/--fail-with-body so an HTTP 401 is not a success, then
|
|
# byte count and the Hub LFS sha256. Idempotent: complete files are skipped.
|
|
#
|
|
# The repo's own SHA256SUMS covers only the ROCmFP4 files, so the hashes below
|
|
# come from the Hub LFS oids (api/models/<repo>/tree/main).
|
|
#
|
|
# Usage:
|
|
# scripts/download-frank-dragoon-kingjones.sh [DEST_DIR] [--verify-only]
|
|
set -euo pipefail
|
|
|
|
REPO="kingjones777/Qwen3.8-27B-ROCmFP4-STRIX-MTP-GGUF"
|
|
BASE="https://huggingface.co/${REPO}/resolve/main"
|
|
|
|
DEST=""
|
|
VERIFY_ONLY=0
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--verify-only) VERIFY_ONLY=1 ;;
|
|
*) DEST="$arg" ;;
|
|
esac
|
|
done
|
|
DEST="${DEST:-/home/dank/models/kingjones-Qwen3.8-27B-ROCmFP4-STRIX-MTP}"
|
|
|
|
# name bytes sha256
|
|
FILES=(
|
|
"Qwen3.8-27B-Q8_0_ROCMFPX_AGENT.gguf 28214425952 f3ef2bdbf56e244fff14b72114dc2aa300b84a4cb4eaf54f2e5e4da1cfcae10b"
|
|
"mtp-Qwen3.8-27B-Q4_0.gguf 1680271648 051a1764cff8c4f3ee6ae8b00593a0364c7539c67fa50ffc58f3f96509fca38e"
|
|
"mmproj-Qwen3.8-27B-BF16.gguf 931145888 de2a49866988ea272c43dc2a43ee2662c25725a717ca5b9059ea420a97f53fe8"
|
|
)
|
|
|
|
mkdir -p "$DEST"
|
|
status=0
|
|
for entry in "${FILES[@]}"; do
|
|
read -r name size sha <<<"$entry"
|
|
f="$DEST/$name"
|
|
have=0
|
|
if [[ -f "$f" ]] && [[ "$(stat -c%s "$f")" == "$size" ]]; then
|
|
if sha256sum -c --quiet <(printf '%s %s\n' "$sha" "$f"); then
|
|
have=1
|
|
fi
|
|
fi
|
|
if (( have )); then
|
|
echo "OK $name"
|
|
continue
|
|
fi
|
|
if (( VERIFY_ONLY )); then
|
|
echo "MISSING $name"
|
|
status=1
|
|
continue
|
|
fi
|
|
echo "FETCHING $name"
|
|
tmp="$f.part"
|
|
curl -fsSL --fail-with-body -o "$tmp" "$BASE/$name"
|
|
mv "$tmp" "$f"
|
|
if [[ "$(stat -c%s "$f")" != "$size" ]]; then
|
|
echo "SIZE FAIL $name ($(stat -c%s "$f") != $size)"
|
|
status=1
|
|
continue
|
|
fi
|
|
if ! sha256sum -c --quiet <(printf '%s %s\n' "$sha" "$f"); then
|
|
echo "SHA FAIL $name"
|
|
status=1
|
|
continue
|
|
fi
|
|
echo "VERIFIED $name"
|
|
done
|
|
if (( status == 0 )); then
|
|
echo "DOWNLOAD_DONE $DEST"
|
|
else
|
|
echo "DOWNLOAD_FAILED $DEST" >&2
|
|
fi
|
|
exit "$status"
|