GGUF ggml通用文件 格式详解
一、GGUF 是什么?
GGUF 是一种 通用二进制文件格式,用于存储大语言模型的参数(如权重和偏置)、元信息、配置以及 Tokenizer 等内容。
它的目标是让开发者只用一个文件就能完成模型的加载、推理和部署,无需额外配置。
换句话说,如果以前的 LLM 模型是一堆分散的文件(权重文件、配置文件、词表文件等),
那么 GGUF 就把它们都“打包进了一个文件里”,方便拷贝、分发、加载。
二、GGUF 的内部架构
一个 GGUF 文件本质上是一个二进制文件(binary file),内部按照固定顺序存储了模型的元信息(metadata)、张量信息(tensor info)以及实际的权重数据(tensor data)。

文件的量化类型 file_type = 10 表示 Q4、Q5 等
词表 tokenizer.ggml.tokens
张量信息区(Tensor Info Section)
紧接在元数据后面,用紫色方框标出。
这里存储了每个张量(权重矩阵)的基本信息,数量为 tensor_count。
每个张量包含以下字段:
字段 说明 类型 示例
name 张量名称 GGUF string blk.0.ffn_gate.weight
n_dimensions 张量维度数 UINT32 2
dimensions 各维度大小 UINT64[] [4096, 32000]
type 数据类型 / 量化方式 UINT32 10(GGML_TYPE_Q2_K)
offset 该张量在文件中实际数据的偏移位置 UINT64 43024384
也就是说,这里列出的是“索引表”,告诉加载程序去文件哪个位置取对应权重。
4)张量数据区(Tensor
Data Section)
在文件的最后部分(图中黑色长条 “rest of the file”)存储的是实际的模型权重数据。
每个张量在前面的 offset 字段中标明了自己在文件中的位置。
这些数据通常是量化后的数值矩阵,例如使用 Q4 或 Q5 量化后的权重块。
它们通过 mmap 技术可以直接映射到内存中进行计算,而不需要全部加载到内存中。

浙公网安备 33010602011771号