ASHQ1 / utils.py
wepiqx's picture
ASHQ1 v6: IQ tier spectrum, --allow-q3-or-lower, has_imatrix safety
c99f13f
Raw
History Blame Contribute Delete
1.47 kB
import numpy as np
from constants import GGUF_TYPE_NAMES, GGUF_TYPE_NAMES_INV
def type_name(type_id: int) -> str:
return GGUF_TYPE_NAMES.get(type_id, f"UNKNOWN({type_id})")
def type_id(name: str) -> int:
return GGUF_TYPE_NAMES_INV.get(name, -1)
def parse_size_line(line: str) -> float | None:
import re
m = re.search(r"quant size\s*=\s*([0-9.]+)\s*MiB", line)
if m:
return float(m.group(1))
m = re.search(r"model size\s*=\s*([0-9.]+)\s*MiB", line)
if m:
return float(m.group(1))
return None
def parse_quant_size(output: str) -> float | None:
"""Extract quant size from full output (prefers quant over model size)."""
import re
# Try quant size first across all lines
m = re.search(r"quant size\s*=\s*([0-9.]+)\s*MiB", output)
if m:
return float(m.group(1))
# Fall back to model size
m = re.search(r"model size\s*=\s*([0-9.]+)\s*MiB", output)
if m:
return float(m.group(1))
return None
def parse_fallback_warnings(output: str) -> int:
import re
return len(re.findall(r"converting to\s+(q[0-9]_[0-9KMS]|iq[0-9])", output))
def format_size(mib: float) -> str:
if mib >= 1024:
return f"{mib/1024:.2f} GB"
return f"{mib:.0f} MiB"
def get_tensor_type(tensor_name: str) -> str:
parts = tensor_name.split(".")
if len(parts) >= 2 and parts[0] == "blk":
return parts[2] if len(parts) >= 3 else "unknown"
return "global"