Files
2026-08-16 18:33:03 +07:00

65 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# One-time (idempotent) publish of the prebuilt f16 GGUFs to the LocalAI-io org on
# Hugging Face. Splits by upstream provenance so each repo carries a single clean
# license:
# TRELLIS.2-4B-GGUF (MIT) 8 files
# TRELLIS-image-large-GGUF (MIT) ss_dec
# dinov3-vitl16-pretrain-lvd1689m-GGUF (DINOv3 License) dino
#
# Cards + LICENSE files live under scripts/hf/<repo>/ and are uploaded alongside the
# weights. Requires an authenticated `hf` (huggingface_hub >= 1.x) with write access
# to the org. `hf` is often not on PATH; set HF=/path/to/venv/bin/hf to override.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
GGUFS="${GGUFS:-$ROOT/ggufs}"
CARDS="$ROOT/scripts/hf"
ORG="${GGUF_ORG:-LocalAI-io}"
# Locate the hf CLI: explicit $HF, then PATH, then known project venvs.
HF="${HF:-}"
if [ -z "$HF" ]; then
if command -v hf >/dev/null 2>&1; then HF="$(command -v hf)"
else
for c in "$HOME"/.venvs/*/bin/hf "$HOME"/c/*/.venv*/bin/hf; do
[ -x "$c" ] && { HF="$c"; break; }
done
fi
fi
[ -n "$HF" ] && [ -x "$HF" ] || { echo "error: hf CLI not found; set HF=/path/to/hf" >&2; exit 1; }
echo "using hf: $HF ($("$HF" --version 2>/dev/null))"
"$HF" auth whoami >/dev/null || { echo "error: not logged in (hf auth login)" >&2; exit 1; }
T2=TRELLIS.2-4B-GGUF
T1=TRELLIS-image-large-GGUF
DINO=dinov3-vitl16-pretrain-lvd1689m-GGUF
T2_FILES=(ss_flow_f16.gguf slat_flow_f16.gguf slat_flow_1024_f16.gguf shape_dec_f16.gguf \
shape_enc_f16.gguf tex_dec_f16.gguf tex_slat_flow_512_f16.gguf tex_slat_flow_1024_f16.gguf)
T1_FILES=(ss_dec_f16.gguf)
DINO_FILES=(dino_f16.gguf)
publish() { # publish <repo> <file>...
local repo="$1"; shift
local id="$ORG/$repo"
echo "== $id =="
"$HF" repo create "$id" --repo-type model --exist-ok
local f
for f in "$@"; do
[ -s "$GGUFS/$f" ] || { echo "error: missing $GGUFS/$f" >&2; exit 1; }
echo "-- upload $f"
"$HF" upload "$id" "$GGUFS/$f" "$f" --commit-message "Add $f"
done
"$HF" upload "$id" "$CARDS/$repo/README.md" README.md --commit-message "Add model card"
"$HF" upload "$id" "$CARDS/$repo/LICENSE" LICENSE --commit-message "Add license"
}
publish "$T2" "${T2_FILES[@]}"
publish "$T1" "${T1_FILES[@]}"
publish "$DINO" "${DINO_FILES[@]}"
echo "done. repos:"
echo " https://huggingface.co/$ORG/$T2"
echo " https://huggingface.co/$ORG/$T1"
echo " https://huggingface.co/$ORG/$DINO"