diff --git a/scripts/download-frank-zealot-bonsai2.sh b/scripts/download-frank-zealot-bonsai2.sh new file mode 100755 index 0000000..3347333 --- /dev/null +++ b/scripts/download-frank-zealot-bonsai2.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash +# Fetch candidate payload for frank-zealot: prism-ml/Ternary-Bonsai-2-27B-gguf +# at **PQ2_0** (the ternary g128 pack stored 2 bits/trit + fp16 scale per 128) +# plus the publisher's Q8_0 vision projector. Public repo — no auth header, +# and never a token on the command line (world-readable in /proc//cmdline). +# +# Why PQ2_0 and not PTQ1_0: measured on the same silicon family (community +# 3090 Ti report, PrismML-Eng/Bonsai-demo) PTQ1_0 is ~17 % slower decode and +# ~48 % slower prefill than PQ2_0 on Ampere; the model card says the same +# (PTQ1_0 wins only on Ada/L4). The pack is consumed packed — 6.71 GiB +# resident, never expanded to f16. +# +# Header facts (HTTP range parse, not the card): arch qwen35, 64 blocks, +# full_attention_interval 4 => 16 full-attention + 48 Gated DeltaNet layers, +# 4 KV heads x 256 dim, native 262,144, vocab 248,320, and NO nextn/mtp +# tensors (block_count is 64 real layers) — so in-file MTP is impossible and +# SPEC_TYPE=none is forced by the payload. 402 tensors carry the custom type +# id 142 (GGML_TYPE_PQ2_0, group 128): STOCK llama.cpp refuses this file, and +# loads the repo's F16 file silently with garbage output — only the +# PrismML-Eng/llama.cpp fork applies the prism.hadamard.* activation +# transform declared in this file's metadata. +# +# These ARE LFS files (unlike the HauhauCS payload): the Hub publishes the +# oid, and both shas below are the Hub's LFS sha256. The mmproj sha has also +# been recomputed locally against the copy in /home/dank/models/Bonsai2-CRACK/. +# +# NOT pinned by this script: /home/dank/models/Bonsai2-CRACK/ +# Bonsai-2-27B-PQ2_0-CRACK.gguf (7,206,168,928 B, sha256 5b24ea3eebc3e0bc..., +# fetched 2026-10-06 by an undocumented ad-hoc path). Same size as the +# official file, different bytes — a dealign/CRACK (uncensored) variant of the +# same ternary pack. Provenance unverified; it is a candidate arm, not this +# script's payload. +# +# Usage: +# scripts/download-frank-zealot-bonsai2.sh [DEST_DIR] [--verify-only] +set -euo pipefail + +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/Bonsai2-PQ2_0}" + +# repo | hub-name | dest-name | bytes | sha256 (Hub LFS oid) +FILES=( + "prism-ml/Ternary-Bonsai-2-27B-gguf|Ternary-Bonsai-2-27B-PQ2_0.gguf|Ternary-Bonsai-2-27B-PQ2_0.gguf|7206168928|3907dc1658db1f78a9826bf8d5bcb8dc65db0d466388937af57f2294fae62ec1" + "prism-ml/Ternary-Bonsai-2-27B-gguf|Ternary-Bonsai-2-27B-mmproj-Q8_0.gguf|Ternary-Bonsai-2-27B-mmproj-Q8_0.gguf|629246976|6807ede61d570bb86ba34b756a0fa109edc33668604de867c6ea6d8f1d631903" +) + +mkdir -p "$DEST" +status=0 +for entry in "${FILES[@]}"; do + IFS='|' read -r repo hubname destname size sha <<<"$entry" + url="https://huggingface.co/${repo}/resolve/main/${hubname}" + f="$DEST/$destname" + if [[ -f "$f" ]] && [[ "$(stat -c%s "$f")" == "$size" ]] \ + && sha256sum -c --quiet <(printf '%s %s\n' "$sha" "$f"); then + echo "OK $destname" + continue + fi + if (( VERIFY_ONLY )); then + echo "MISSING $destname" + status=1 + continue + fi + echo "FETCHING $destname (from $repo)" + tmp="$f.part" + # No resume: `curl -C -` once produced an oversized file on a 31 GiB + # payload. -f/--fail-with-body so an HTTP 401/403 body is never a success. + curl -fsSL --fail-with-body --retry 3 --retry-delay 5 -o "$tmp" "$url" + mv "$tmp" "$f" + if [[ "$(stat -c%s "$f")" != "$size" ]]; then + echo "SIZE FAIL $destname ($(stat -c%s "$f") != $size)" + status=1 + continue + fi + if ! sha256sum -c --quiet <(printf '%s %s\n' "$sha" "$f"); then + echo "SHA FAIL $destname" + status=1 + continue + fi + echo "VERIFIED $destname" +done +if (( status == 0 )); then + echo "DOWNLOAD_DONE $DEST" +else + echo "DOWNLOAD_FAILED $DEST" >&2 +fi +exit "$status"