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.
91 lines
2.9 KiB
Bash
Executable File
91 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Download the BF16 MiMo-V2.6-Distill-Qwen-9B payload for frank-dragoon
|
|
# (vLLM/kyuz0 gfx1151, Strix Halo iGPU). Public repo — no auth header on the
|
|
# command line (a Bearer token in argv is world-readable via /proc).
|
|
#
|
|
# Per-file FRESH downloads, no resume: the house rule (see
|
|
# download-frank-zealot.sh); -f/--fail-with-body plus size+sha256 against the
|
|
# Hub LFS oid is what makes an access error fail instead of "succeeding".
|
|
#
|
|
# Usage:
|
|
# scripts/download-frank-dragoon-mimo.sh [DEST_DIR] [--verify-only]
|
|
#
|
|
# The verified set below is exactly what the 2026-10-01 bench window served:
|
|
# 17.53 GiB of BF16 weights (4 shards, 18,819,720,848 B total with the rest).
|
|
set -euo pipefail
|
|
|
|
REPO="XiaomiMiMo/MiMo-V2.6-Distill-Qwen-9B"
|
|
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/MiMo-V2.6-Distill-Qwen-9B-BF16}"
|
|
|
|
# name bytes sha256(- = non-LFS, size-only check)
|
|
FILES=(
|
|
"model-00001-of-00004.safetensors 5276436216 aab052180118aee34abc3029b54eaa49096aac606b97d703866b420dceb703c3"
|
|
"model-00002-of-00004.safetensors 5033171280 7a0486565f06d25ac4628e9dba470dc3f604353471d240d5a0bf7128f64df396"
|
|
"model-00003-of-00004.safetensors 5234499504 6c73207563d1879bfd6c143a028cc70be68edff56280458c71a43df4240300f4"
|
|
"model-00004-of-00004.safetensors 3275613848 1379a7cf8c0b8555a39ab65a47e830e0eb45e776b46045734da3afd73c09eea2"
|
|
"model.safetensors.index.json 69217 -"
|
|
"config.json 2784 -"
|
|
"generation_config.json 126 -"
|
|
"chat_template.jinja 3916 -"
|
|
"tokenizer.json 19989325 06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523"
|
|
"tokenizer_config.json 1165 -"
|
|
"vocab.json 6722759 -"
|
|
"merges.txt 3353259 -"
|
|
"preprocessor_config.json 443 -"
|
|
"processor_config.json 1191 -"
|
|
"video_preprocessor_config.json 385 -"
|
|
)
|
|
|
|
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 [[ "$sha" == "-" ]] || 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 [[ "$sha" != "-" ]] && ! 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"
|