| #!/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" |
|
|