#!/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//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//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"