File size: 2,229 Bytes
fdff15f
 
 
 
 
 
 
 
 
3b031dd
fdff15f
 
 
3b031dd
fdff15f
 
3b031dd
fdff15f
 
3b031dd
fdff15f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/usr/bin/env bash
set -Eeuo pipefail
ROOT=/opt/h3
SUITE="$ROOT/lowbit-suite"
MODELS="$ROOT/models"
SD="$ROOT/src/stable-diffusion.cpp/build/bin/sd-cli"
Q8="$MODELS/minimax_h3_fl2va_pruned-Q8_0.gguf"
IMATRIX="$ROOT/quality/calibration/minimax_h3_fl2va_pruned-qf.imatrix"
QF_RULES='condition_proj\.weight$=bf16,token_refiner\.=q8_0,blocks\.(46|47|48|49)\.=q8_0,blocks\.(3[0-9]|4[0-5])\.mlp\.fc1\.weight$=q4_K,blocks\.[0-9]+\.attn\.(qkv_proj|out_proj)\.weight$=q4_K,blocks\.[0-9]+\.mlp\.fc2\.weight$=q4_K'
QF3_RULES='condition_proj\.weight$=bf16,token_refiner\.=q8_0,(?:audio|video)_patch_proj\.weight$=q8_0,blocks\.(44|45|46|47|48|49)\.=q8_0,blocks\.(2[0-9]|3[0-9]|4[0-3])\.mlp\.fc1\.weight$=q5_K,blocks\.[0-9]+\.attn\.(qkv_proj|out_proj)\.weight$=q5_K,blocks\.[0-9]+\.mlp\.fc2\.weight$=q5_K'
variant="${1:?variant required}"
case "$variant" in
  UD-Q1_0-QF) qtype=q1_0; rules="$QF_RULES" ;;
  UD-IQ1_M-QF3) qtype=iq1_m; rules="$QF3_RULES" ;;
  IQ2_XXS) qtype=iq2_xxs; rules='' ;;
  IQ2_S) qtype=iq2_s; rules='' ;;
  UD-IQ2_S-QF) qtype=iq2_s; rules="$QF_RULES" ;;
  IQ3_XXS) qtype=iq3_xxs; rules='' ;;
  IQ3_S) qtype=iq3_s; rules='' ;;
  UD-IQ3_S-QF) qtype=iq3_s; rules="$QF_RULES" ;;
  AQUA-v1)
    qtype=iq2_s
    "$SUITE/scripts/aqua_policy.py" --gguf "$Q8" --imatrix "$IMATRIX" \
      --target-bpw 3.15 --manifest "$SUITE/manifests/AQUA-v1-policy.json" \
      --rules-file "$SUITE/tmp/AQUA-v1.rules"
    rules="$(cat "$SUITE/tmp/AQUA-v1.rules")"
    ;;
  *) echo "unknown variant: $variant" >&2; exit 2 ;;
esac
out="$SUITE/artifacts/minimax_h3_fl2va_pruned-${variant}.gguf"
part="$out.part"
log="$SUITE/logs/build-${variant}.log"
rm -f "$part"
cmd=("$SD" --mode convert --diffusion-model "$Q8" --type "$qtype" --imat-in "$IMATRIX" --threads "$(nproc)" --output "$part" --verbose)
if [[ -n "$rules" ]]; then cmd+=(--tensor-type-rules "$rules"); fi
printf '%q ' "${cmd[@]}" > "$SUITE/logs/build-${variant}.command"
printf '\n' >> "$SUITE/logs/build-${variant}.command"
nice -n 12 ionice -c2 -n7 "${cmd[@]}" >"$log" 2>&1
[[ -s "$part" ]]
mv "$part" "$out"
sha256sum "$out" | tee "$out.sha256"
python3 "$ROOT/scripts/audit-gguf.py" --sha256 --output "$SUITE/manifests/${variant}-audit.json" "$out"
stat -c '%n %s bytes' "$out"