#!/usr/bin/env bash # Download the kingjones Qwen3.8-27B-ROCmFPX-Q8_0-AGENT payload for # frank-medium from HuggingFace into # /home/dank/models/kingjones-Qwen3.8-27B-ROCMFPX-Q8_0-AGENT. # # Run on Dankserver (the box that serves it). The repo is public, so the # download works anonymously; a token in ~/.cache/huggingface/token is used # when present, which keeps the ~28 GB main file clear of the anonymous # rate limit at full speed. # # bash scripts/download-q8agent.sh # bash scripts/download-q8agent.sh --verify-only # # The script is resumable (curl -C -) and verifies every artifact's size # afterwards, so a truncated file fails loudly instead of load-crashing. set -euo pipefail REPO="kingjones777/Qwen3.8-27B-ROCmFPX-Q8_0-AGENT-GGUF" DIR="/home/dank/models/kingjones-Qwen3.8-27B-ROCMFPX-Q8_0-AGENT" EXPECTED=( "Qwen3.8-27B-Q8_0_ROCMFPX_AGENT.gguf:28214425952" "mmproj-Qwen3.8-27B-BF16.gguf:931145888" "mtp-Qwen3.8-27B-Q4_0.gguf:1680271648" ) # The model card's MTP prompt-cache fix ships in the same repo as a patch; # fetched for reference only. This fork's main already carries the # speculative boundary in the context checkpoint, so nothing applies it. EXTRA=( "patches/mtp-prompt-cache-fix.patch" ) cd -- "$(dirname -- "$0")/.." main() { local mode="download" [[ "${1:-}" == "--verify-only" ]] && mode="verify" mkdir -p "$DIR" cd "$DIR" local token="" auth=() if [[ -r "$HOME/.cache/huggingface/token" ]]; then token="$(cat "$HOME/.cache/huggingface/token")" auth=(-H "Authorization: Bearer $token") else echo "no HF token at $HOME/.cache/huggingface/token; downloading anonymously" fi dl() { local f="$1" mkdir -p "$(dirname "$f")" curl -fsSL -C - -o "$f" --retry 10 --retry-delay 5 --retry-max-time 10800 \ "${auth[@]}" \ "https://huggingface.co/$REPO/resolve/main/$f" echo " done: $f ($(du -h "$f" | cut -f1))" } if [[ "$mode" == "download" ]]; then echo "downloading $REPO into $DIR" for entry in "${EXPECTED[@]}"; do dl "${entry%%:*}" done for f in "${EXTRA[@]}"; do dl "$f" done fi echo "verifying sizes" local ok=1 f want act for entry in "${EXPECTED[@]}"; do f="${entry%%:*}"; want="${entry##*:}" act="$(stat -c%s "$f" 2>/dev/null || echo 0)" if [[ "$act" -eq "$want" ]]; then echo " OK $f ($act bytes)" else echo " BAD $f ($act bytes, want $want)" >&2 ok=0 fi done if [[ -z "$token" ]]; then echo "note: no token was used; sizes above are the integrity check" fi [[ "$ok" -eq 1 ]] || exit 1 echo "all files present and sized correctly" } main "$@"