#!/usr/bin/env python3 """List GGUF tensor types without loading the weights: reads only the header/metadata.""" import sys, struct, collections TYPES = {0:"F32",1:"F16",2:"Q4_0",3:"Q4_1",6:"Q5_0",7:"Q5_1",8:"Q8_0",9:"Q8_1",10:"Q2_K",11:"Q3_K", 12:"Q4_K",13:"Q5_K",14:"Q6_K",15:"Q8_K",16:"IQ2_XXS",17:"IQ2_XS",18:"IQ3_XXS",19:"IQ1_S", 20:"IQ4_NL",21:"IQ3_S",22:"IQ2_S",23:"IQ4_XS",24:"I8",25:"I16",26:"I32",27:"I64",28:"F64", 29:"IQ1_M",30:"BF16",34:"TQ1_0",35:"TQ2_0",36:"MXFP4"} # bytes per element for size estimation (approx, block-based) BPW = {0:32,1:16,2:4.5,3:5,6:5.5,7:6,8:8.5,9:9,10:2.625,11:3.4375,12:4.5,13:5.5,14:6.5625,15:8.5, 16:2.0625,17:2.3125,18:3.0625,19:1.5625,20:4.5,21:3.4375,22:2.5625,23:4.25,24:8,25:16,26:32, 27:64,28:64,29:1.75,30:16,34:2.0625,35:2.3125,36:4.25} class R: def __init__(s, f): s.f=f def u32(s): return struct.unpack(" %.1f M" % (name, tn, dims, n/1e6)) if __name__=="__main__": main(sys.argv[1])