#!/usr/bin/env bash # Download MiMo-V2.6-Distill-Qwen-9B-INT8-W8A16-AutoRound for frank-zealot # (SGLang, RTX 3090). Public repo — no auth header on the command line. # # Per-file FRESH downloads, no resume: `curl -C -` once produced a 213 MB # oversized file on a 31 GiB payload; a fresh -f fetch plus size+sha256 is # the house rule. # # Usage: # scripts/download-frank-zealot.sh [DEST_DIR] [--verify-only] # # LFS shards are verified against the Hub LFS sha256; non-LFS text files # against their declared byte size. Idempotent: complete files are skipped. set -euo pipefail REPO="letechlead/MiMo-V2.6-Distill-Qwen-9B-INT8-W8A16-AutoRound" 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-INT8-W8A16-AutoRound}" # name bytes sha256(- = non-LFS, size-only check) FILES=( "model-00001-of-00008.safetensors 2946296312 ddb6117c04cb6feaf7c265e5d75efadf21949037d73253a8e4521d40e164366d" "model-00002-of-00008.safetensors 1402134792 2dc78d55d1d33d7b3b21dd6f8b4b817b62c2fb1376e6448b322428798c10e257" "model-00003-of-00008.safetensors 1427365904 5c797d14e345309d67c78306b9de4aa01a21dbd92dd98e40b0ad69b2900e9203" "model-00004-of-00008.safetensors 1420041856 7402f852e2c7a24ebf4694b98a220e71dfb2c93ba3776272cf2acfc65acd8126" "model-00005-of-00008.safetensors 1410655648 991cbf2eda2ff91fc3ffbb15591d7fcac340fb10d9c33bd3da20010e2f3f4090" "model-00006-of-00008.safetensors 1427627856 efc42448054cfb5e3061e154ba4539204088ce95176d689a95b58de885ef7eeb" "model-00007-of-00008.safetensors 2035442408 75a101fc71ae6f2e1f5c4816f711d62cf1d7a0e02ef6e5182361b8c11e72b626" "model-00008-of-00008.safetensors 822153664 0fb90cb50e2d336fbad58bd4c01880eeddbf537c1dca1cf0ae291195d5efbb4b" "tokenizer.json 19989325 06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523" "model.safetensors.index.json 106278 -" "config.json 4608 -" "generation_config.json 161 -" "quantization_config.json 1654 -" "chat_template.jinja 3916 -" "tokenizer_config.json 1168 -" "preprocessor_config.json 443 -" "processor_config.json 1191 -" "README.md 8448 -" ) 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" # no -C resume; -f + --fail-with-body so an HTTP error is not a success 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"