MiniMax-H3-LowBit-GGUF / scripts /build_variant.sh
MarxistLeninist's picture
Publish experimental IQ2_S model and evaluation
3b031dd verified
Raw
History Blame Contribute Delete
2.23 kB
#!/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"