diff options
Diffstat (limited to 'llama.cpp/gguf-py/examples/reader.py')
| -rw-r--r-- | llama.cpp/gguf-py/examples/reader.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/llama.cpp/gguf-py/examples/reader.py b/llama.cpp/gguf-py/examples/reader.py new file mode 100644 index 0000000..703b782 --- /dev/null +++ b/llama.cpp/gguf-py/examples/reader.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +import logging +import sys +from pathlib import Path + +logger = logging.getLogger("reader") + +# Necessary to load the local gguf package +sys.path.insert(0, str(Path(__file__).parent.parent)) + +from gguf.gguf_reader import GGUFReader + + +def read_gguf_file(gguf_file_path): + """ + Reads and prints key-value pairs and tensor information from a GGUF file in an improved format. + + Parameters: + - gguf_file_path: Path to the GGUF file. + """ + + reader = GGUFReader(gguf_file_path) + + # List all key-value pairs in a columnized format + print("Key-Value Pairs:") # noqa: NP100 + max_key_length = max(len(key) for key in reader.fields.keys()) + for key, field in reader.fields.items(): + value = field.parts[field.data[0]] + print(f"{key:{max_key_length}} : {value}") # noqa: NP100 + print("----") # noqa: NP100 + + # List all tensors + print("Tensors:") # noqa: NP100 + tensor_info_format = "{:<30} | Shape: {:<15} | Size: {:<12} | Quantization: {}" + print(tensor_info_format.format("Tensor Name", "Shape", "Size", "Quantization")) # noqa: NP100 + print("-" * 80) # noqa: NP100 + for tensor in reader.tensors: + shape_str = "x".join(map(str, tensor.shape)) + size_str = str(tensor.n_elements) + quantization_str = tensor.tensor_type.name + print(tensor_info_format.format(tensor.name, shape_str, size_str, quantization_str)) # noqa: NP100 + + +if __name__ == '__main__': + if len(sys.argv) < 2: + logger.info("Usage: reader.py <path_to_gguf_file>") + sys.exit(1) + gguf_file_path = sys.argv[1] + read_gguf_file(gguf_file_path) |
