Initial release
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
#!/bin/bash
|
||||
# Download pre-quantized ACE-Step GGUF models from HuggingFace
|
||||
#
|
||||
# Usage: ./models.sh [options]
|
||||
# default: Q8_0 turbo essentials (text-encoder + LM-4B + DiT-turbo + VAE)
|
||||
# --all: all models, all quants
|
||||
# --quant X: use quant X (Q4_K_M, Q5_K_M, Q6_K, Q8_0, BF16)
|
||||
# --lm SIZE: LM size (0.6B, 1.7B, 4B, default: 4B)
|
||||
# --sft: include SFT DiT variant
|
||||
# --base: include base DiT variant
|
||||
# --shifts: include shift1/shift3/continuous DiT variants
|
||||
|
||||
set -eu
|
||||
|
||||
REPO="Serveurperso/ACE-Step-1.5-GGUF"
|
||||
DIR="models"
|
||||
QUANT="Q8_0"
|
||||
LM_SIZE="4B"
|
||||
ALL=0
|
||||
SFT=0
|
||||
BASE=0
|
||||
SHIFTS=0
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--all) ALL=1 ;;
|
||||
--quant) QUANT="$2"; shift ;;
|
||||
--lm) LM_SIZE="$2"; shift ;;
|
||||
--sft) SFT=1 ;;
|
||||
--base) BASE=1 ;;
|
||||
--shifts) SHIFTS=1 ;;
|
||||
*) echo "Unknown option: $1"; exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
mkdir -p "$DIR"
|
||||
|
||||
dl() {
|
||||
local file="$1"
|
||||
if [ -f "$DIR/$file" ]; then
|
||||
echo "[OK] $file"
|
||||
return
|
||||
fi
|
||||
echo "[Download] $file"
|
||||
hf download --quiet "$REPO" "$file" --local-dir "$DIR"
|
||||
}
|
||||
|
||||
# Resolve quant to best available for each model type.
|
||||
# Matches quantize.sh matrix exactly:
|
||||
# Embedding/LM-small: BF16, Q8_0
|
||||
# LM-4B: BF16, Q5_K_M, Q6_K, Q8_0 (Q4_K_M breaks audio codes)
|
||||
# DiT: BF16, Q4_K_M, Q5_K_M, Q6_K, Q8_0
|
||||
# Order: Q4_K_M < Q5_K_M < Q6_K < Q8_0 < BF16
|
||||
# If requested quant unavailable, picks next larger available.
|
||||
resolve_quant() {
|
||||
local requested="$1" model_type="$2"
|
||||
case "$model_type" in
|
||||
emb|lm_small)
|
||||
case "$requested" in
|
||||
BF16) echo "BF16" ;;
|
||||
*) echo "Q8_0" ;;
|
||||
esac ;;
|
||||
lm_4B)
|
||||
case "$requested" in
|
||||
BF16) echo "BF16" ;;
|
||||
Q8_0) echo "Q8_0" ;;
|
||||
Q6_K) echo "Q6_K" ;;
|
||||
Q5_K_M|Q4_K_M) echo "Q5_K_M" ;;
|
||||
*) echo "Q8_0" ;;
|
||||
esac ;;
|
||||
dit)
|
||||
echo "$requested" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# VAE is always BF16 (small, quality-critical)
|
||||
dl "vae-BF16.gguf"
|
||||
|
||||
# Text encoder
|
||||
dl "Qwen3-Embedding-0.6B-$(resolve_quant "$QUANT" emb).gguf"
|
||||
|
||||
# LM
|
||||
if [ "$LM_SIZE" = "4B" ]; then
|
||||
dl "acestep-5Hz-lm-4B-$(resolve_quant "$QUANT" lm_4B).gguf"
|
||||
else
|
||||
dl "acestep-5Hz-lm-${LM_SIZE}-$(resolve_quant "$QUANT" lm_small).gguf"
|
||||
fi
|
||||
|
||||
# DiT turbo (always included)
|
||||
dl "acestep-v15-turbo-${QUANT}.gguf"
|
||||
|
||||
# Optional DiT variants
|
||||
if [ "$SFT" = 1 ] || [ "$ALL" = 1 ]; then
|
||||
dl "acestep-v15-sft-${QUANT}.gguf"
|
||||
fi
|
||||
if [ "$BASE" = 1 ] || [ "$ALL" = 1 ]; then
|
||||
dl "acestep-v15-base-${QUANT}.gguf"
|
||||
fi
|
||||
if [ "$SHIFTS" = 1 ] || [ "$ALL" = 1 ]; then
|
||||
dl "acestep-v15-turbo-shift1-${QUANT}.gguf"
|
||||
dl "acestep-v15-turbo-shift3-${QUANT}.gguf"
|
||||
dl "acestep-v15-turbo-continuous-${QUANT}.gguf"
|
||||
fi
|
||||
|
||||
# --all: every model with its valid quants (matches quantize.sh)
|
||||
if [ "$ALL" = 1 ]; then
|
||||
# Embedding: BF16 + Q8_0 only
|
||||
dl "Qwen3-Embedding-0.6B-BF16.gguf"
|
||||
|
||||
# Small/medium LM: BF16 + Q8_0 only (too small for aggressive quant)
|
||||
for lm in 0.6B 1.7B; do
|
||||
dl "acestep-5Hz-lm-${lm}-BF16.gguf"
|
||||
dl "acestep-5Hz-lm-${lm}-Q8_0.gguf"
|
||||
done
|
||||
|
||||
# Large LM: BF16 + Q5_K_M/Q6_K/Q8_0 (Q4_K_M breaks audio codes)
|
||||
for q in BF16 Q5_K_M Q6_K Q8_0; do
|
||||
dl "acestep-5Hz-lm-4B-${q}.gguf"
|
||||
done
|
||||
|
||||
# DiT variants: BF16 + Q4_K_M/Q5_K_M/Q6_K/Q8_0
|
||||
for dit in turbo sft base turbo-shift1 turbo-shift3 turbo-continuous; do
|
||||
for q in BF16 Q4_K_M Q5_K_M Q6_K Q8_0; do
|
||||
dl "acestep-v15-${dit}-${q}.gguf"
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
echo "[Done] Models ready in $DIR/"
|
||||
Reference in New Issue
Block a user