| 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 |
| |
| m = re.search(r"quant size\s*=\s*([0-9.]+)\s*MiB", output) |
| if m: |
| return float(m.group(1)) |
| |
| 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" |
|
|