feat(erp-tune): run 6 on pfi-gx10 — jenerallee78 ARA-abliterated base (index 33c59654) pulled + byte-verified, run-5 recipe byte-held, launched under operator-2026-09-08-rnd-run6
- scripts/erp-tune-gx10/pull-verify-jenerallee78.sh + base-pin-jenerallee78-shards.txt: revision-pinned root-shard pull, 32/32 sha256+size vs brokkr-smithy pins, index set-equal to stock, STOCK tokenizer set installed over the repo's (which bakes in a 256-token truncation); repo originals kept as *.repo - scripts/erp-tune-gx10/run-06-gx10.json + launch-run-06.sh: run-05 config with the base swapped, recipe-r6, survivors-r5 verbatim, stock template path - docs/runbooks/gx10-run-06.md: pull/verify record, free-check result (encode reproduces run 5 exactly), hf download --include gotcha, gate naming (erp-seat-base-ara / erp-tune-v6)
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
# Pull + verify jenerallee78/gemma-4-26B-A4B-it-ara-abliterated @ 0631379a onto pfi-gx10.
|
||||
# Root shards + small files only; no GGUFs, no mlx-4bit. Verifies bytes against the
|
||||
# brokkr-smithy pins (base-pin-jenerallee78.json) and installs the STOCK tokenizer set.
|
||||
# Expects ~/erp-tune/base-pin-jenerallee78-shards.txt (file sha256 bytes per line).
|
||||
set -uo pipefail
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
REPO=jenerallee78/gemma-4-26B-A4B-it-ara-abliterated
|
||||
REV=0631379a3d859e0059bc8d9b21ab5b654dfc272c
|
||||
DEST=$HOME/models/gemma4-26b-a4b-it-ara-abliterated-jenerallee78-0631379a
|
||||
STOCK=$HOME/models/gemma4-26b-a4b-it-bf16
|
||||
PINS=$HOME/erp-tune/base-pin-jenerallee78-shards.txt
|
||||
echo "== start $(date -u +%FT%TZ) on $(hostname)"
|
||||
mkdir -p "$DEST"
|
||||
echo "== download"
|
||||
uv run --quiet --with 'huggingface_hub[hf_transfer]' hf download "$REPO" --revision "$REV" \
|
||||
--local-dir "$DEST" \
|
||||
--include 'model-*-of-00032.safetensors' --include 'config.json' --include 'generation_config.json' \
|
||||
--include 'model.safetensors.index.json' --include 'chat_template.jinja' --include 'ara_config.json' --include 'README.md' \
|
||||
--include 'tokenizer.json' --include 'tokenizer_config.json'
|
||||
rc=$?
|
||||
echo "== download rc=$rc $(date -u +%FT%TZ)"
|
||||
[ $rc -eq 0 ] || { echo "DOWNLOAD FAILED rc=$rc"; exit 2; }
|
||||
cd "$DEST"
|
||||
echo "== shard sha256 vs pins"
|
||||
fail=0
|
||||
while read -r f oid bytes; do
|
||||
[ -n "$f" ] || continue
|
||||
sz=$(stat -c %s "$f" 2>/dev/null || echo MISSING)
|
||||
got=$(sha256sum "$f" 2>/dev/null | cut -d' ' -f1)
|
||||
if [ "$sz" = "$bytes" ] && [ "$got" = "$oid" ]; then echo "OK $f"; else echo "FAIL $f size=$sz want=$bytes sha=$got want=$oid"; fail=$((fail+1)); fi
|
||||
done < "$PINS"
|
||||
echo "== shard result: fail=$fail"
|
||||
echo "== index + config checks"
|
||||
python3 - "$STOCK" <<'PY'
|
||||
import json,sys,hashlib
|
||||
stock=sys.argv[1]
|
||||
d=json.load(open('model.safetensors.index.json'));s=json.load(open(f'{stock}/model.safetensors.index.json'))
|
||||
names=set(d['weight_map']);snames=set(s['weight_map'])
|
||||
print('index weight_map:',len(names),'stock:',len(snames),'set_equal:',names==snames)
|
||||
print('index total_size:',d['metadata'].get('total_size'),'stock:',s['metadata'].get('total_size'),'equal:',d['metadata'].get('total_size')==s['metadata'].get('total_size'))
|
||||
c=json.load(open('config.json'))
|
||||
print('config architectures:',c.get('architectures'),'dtype:',c.get('dtype') or c.get('torch_dtype'))
|
||||
print('INDEX_SHA256', hashlib.sha256(open('model.safetensors.index.json','rb').read()).hexdigest())
|
||||
PY
|
||||
echo "== repo tokenizer set as shipped (kept aside as *.repo)"
|
||||
sha256sum tokenizer.json tokenizer_config.json chat_template.jinja
|
||||
python3 -c "import json;print('repo tokenizer.json truncation:',json.load(open('tokenizer.json')).get('truncation'))"
|
||||
for f in tokenizer.json tokenizer_config.json chat_template.jinja; do mv -n "$f" "$f.repo"; cp "$STOCK/$f" "$f"; done
|
||||
echo "== STOCK tokenizer set installed (sha256):"
|
||||
sha256sum tokenizer.json tokenizer_config.json chat_template.jinja
|
||||
python3 -c "import json;print('installed tokenizer.json truncation:',json.load(open('tokenizer.json')).get('truncation'))"
|
||||
echo "== listing"; ls -la "$DEST"; du -sh "$DEST"
|
||||
echo "== done $(date -u +%FT%TZ) shard_fail=$fail"
|
||||
Reference in New Issue
Block a user