Skip to content

Commit a048c7f

Browse files
committed
gguf-dump.py: prettyfy dimention
1 parent 9e2d2d9 commit a048c7f

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

gguf-py/scripts/gguf-dump.py

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def dump_metadata_json(reader: GGUFReader, args: argparse.Namespace) -> None:
101101
json.dump(result, sys.stdout)
102102

103103

104-
def markdownTableWithAlignmentSupport(header_map: list[dict[str, str]], data: list[dict[str, Any]]):
104+
def markdown_table_with_alignment_support(header_map: list[dict[str, str]], data: list[dict[str, Any]]):
105105
# JSON to Markdown table formatting: https://stackoverflow.com/a/72983854/2850957
106106

107107
# Alignment Utility Function
@@ -272,7 +272,7 @@ def dump_markdown_metadata(reader: GGUFReader, args: argparse.Namespace) -> None
272272
{'key_name':'value', 'header_name':'Value', 'align':'left'},
273273
]
274274

275-
markdown_content += markdownTableWithAlignmentSupport(kv_dump_table_header_map, kv_dump_table)
275+
markdown_content += markdown_table_with_alignment_support(kv_dump_table_header_map, kv_dump_table)
276276

277277
markdown_content += "\n"
278278

@@ -319,24 +319,35 @@ def dump_markdown_metadata(reader: GGUFReader, args: argparse.Namespace) -> None
319319
group_percentage = group_elements / total_elements * 100
320320
markdown_content += f"### <a name=\"{group.replace('.', '_')}\">{translate_tensor_name(group)} Tensor Group : {element_count_rounded_notation(group_elements)} Elements</a>\n\n"
321321

322+
# Precalculate pretty shape column sizing for visual consistency
323+
prettify_dimension_max_widths = {}
324+
for tensor in tensors:
325+
for i, dimension_size in enumerate(list(tensor.shape) + [1] * (4 - len(tensor.shape))):
326+
if i in prettify_dimension_max_widths:
327+
prettify_dimension_max_widths[i] = max(prettify_dimension_max_widths[i], len(str(dimension_size)))
328+
else:
329+
prettify_dimension_max_widths[i] = len(str(dimension_size))
330+
331+
# Generate Tensor Layer Table Content
322332
tensor_dump_table = []
323333
for tensor in tensors:
324334
human_friendly_name = translate_tensor_name(tensor.name.replace(".weight", ".(W)").replace(".bias", ".(B)"))
325-
prettydims = ' x '.join('{0:^5}'.format(d) for d in list(tensor.shape) + [1] * (4 - len(tensor.shape)))
326-
element_count_string = f"({element_count_rounded_notation(tensor.n_elements):>4}) {tensor.n_elements:7}"
335+
pretty_dimension = ' x '.join(f'{str(d):^{prettify_dimension_max_widths[i]}}' for i, d in enumerate(list(tensor.shape) + [1] * (4 - len(tensor.shape))))
336+
element_count_est = f"({element_count_rounded_notation(tensor.n_elements):>4})"
337+
element_count_string = f"{element_count_est:>6} {tensor.n_elements:^8}"
327338
type_name_string = f"{tensor.tensor_type.name}"
328-
tensor_dump_table.append({"t_id":tensor_name_to_key[tensor.name], "layer_name":tensor.name, "human_layer_name":human_friendly_name, "element_count":element_count_string, "pretty_dims":prettydims, "tensor_type":type_name_string})
339+
tensor_dump_table.append({"t_id":tensor_name_to_key[tensor.name], "layer_name":tensor.name, "human_layer_name":human_friendly_name, "element_count":element_count_string, "pretty_dimension":pretty_dimension, "tensor_type":type_name_string})
329340

330341
tensor_dump_table_header_map = [
331342
{'key_name':'t_id', 'header_name':'T_ID', 'align':'right'},
332343
{'key_name':'layer_name', 'header_name':'Tensor Layer Name', 'align':'left'},
333344
{'key_name':'human_layer_name', 'header_name':'Human Friendly Tensor Layer Name', 'align':'left'},
334345
{'key_name':'element_count', 'header_name':'Elements', 'align':'left'},
335-
{'key_name':'pretty_dims', 'header_name':'Shape', 'align':'left'},
346+
{'key_name':'pretty_dimension', 'header_name':'Shape', 'align':'left'},
336347
{'key_name':'tensor_type', 'header_name':'Type', 'align':'left'},
337348
]
338349

339-
markdown_content += markdownTableWithAlignmentSupport(tensor_dump_table_header_map, tensor_dump_table)
350+
markdown_content += markdown_table_with_alignment_support(tensor_dump_table_header_map, tensor_dump_table)
340351

341352
markdown_content += "\n"
342353
markdown_content += f"- Total elements in {group}: ({element_count_rounded_notation(group_elements):>4}) {group_elements}\n"

0 commit comments

Comments
 (0)