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 技术可以直接映射到内存中进行计算,而不需要全部加载到内存中。

posted @ 2026-08-24 13:05  jiftle  阅读(5)  评论(0)    收藏  举报