Extract all simple metadata fields like safetensors
(reader)
| 49 | raise TypeError(f"Unknown field type {field_type}") |
| 50 | |
| 51 | def get_gguf_metadata(reader): |
| 52 | """Extract all simple metadata fields like safetensors""" |
| 53 | metadata = {} |
| 54 | for field_name in reader.fields: |
| 55 | try: |
| 56 | field = reader.get_field(field_name) |
| 57 | if len(field.types) == 1: # Simple scalar fields only |
| 58 | if field.types[0] == gguf.GGUFValueType.STRING: |
| 59 | metadata[field_name] = str(field.parts[field.data[-1]], "utf-8") |
| 60 | elif field.types[0] == gguf.GGUFValueType.INT32: |
| 61 | metadata[field_name] = int(field.parts[field.data[-1]]) |
| 62 | elif field.types[0] == gguf.GGUFValueType.F32: |
| 63 | metadata[field_name] = float(field.parts[field.data[-1]]) |
| 64 | elif field.types[0] == gguf.GGUFValueType.BOOL: |
| 65 | metadata[field_name] = bool(field.parts[field.data[-1]]) |
| 66 | except: |
| 67 | continue |
| 68 | return metadata |
| 69 | |
| 70 | def gguf_sd_loader(path, handle_prefix="model.diffusion_model.", is_text_model=False): |
| 71 | """ |