forked from ServeurpersoCom/acestep.cpp
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmodels.sh
More file actions
executable file
·130 lines (114 loc) · 3.62 KB
/
models.sh
File metadata and controls
executable file
·130 lines (114 loc) · 3.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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/"