mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 08:23:15 +01:00
--------- Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com>
38 lines
2.1 KiB
Go
38 lines
2.1 KiB
Go
package pkg
|
|
|
|
// GGUFFileHeader represents metadata extracted from a GGUF (GPT-Generated Unified Format) model file.
|
|
// GGUF is a binary file format used for storing model weights for the GGML library, designed for fast
|
|
// loading and saving of models, particularly quantized large language models.
|
|
// The Model Name, License, and Version fields have all been lifted up to be on the syft Package.
|
|
type GGUFFileHeader struct {
|
|
// GGUFVersion is the GGUF format version (e.g., 3)
|
|
GGUFVersion uint32 `json:"ggufVersion" cyclonedx:"ggufVersion"`
|
|
|
|
// FileSize is the size of the GGUF file in bytes (best-effort if available from resolver)
|
|
FileSize int64 `json:"fileSize,omitempty" cyclonedx:"fileSize"`
|
|
|
|
// Architecture is the model architecture (from general.architecture, e.g., "qwen3moe", "llama")
|
|
Architecture string `json:"architecture,omitempty" cyclonedx:"architecture"`
|
|
|
|
// Quantization is the quantization type (e.g., "IQ4_NL", "Q4_K_M")
|
|
Quantization string `json:"quantization,omitempty" cyclonedx:"quantization"`
|
|
|
|
// Parameters is the number of model parameters (if present in header)
|
|
Parameters uint64 `json:"parameters,omitempty" cyclonedx:"parameters"`
|
|
|
|
// TensorCount is the number of tensors in the model
|
|
TensorCount uint64 `json:"tensorCount" cyclonedx:"tensorCount"`
|
|
|
|
// RemainingKeyValues contains the remaining key-value pairs from the GGUF header that are not already
|
|
// represented as typed fields above. This preserves additional metadata fields for reference
|
|
// (namespaced with general.*, llama.*, etc.) while avoiding duplication.
|
|
RemainingKeyValues map[string]interface{} `json:"header,omitempty" cyclonedx:"header"`
|
|
|
|
// MetadataKeyValuesHash is a xx64 hash of all key-value pairs from the GGUF header metadata.
|
|
// This hash is computed over the complete header metadata (including the fields extracted
|
|
// into typed fields above) and provides a stable identifier for the model configuration
|
|
// across different file locations or remotes. It allows matching identical models even
|
|
// when stored in different repositories or with different filenames.
|
|
MetadataKeyValuesHash string `json:"metadataHash,omitempty" cyclonedx:"metadataHash"`
|
|
}
|