📘 GGUF 结构拆解
30 章 · 深度剖析
🎒 友好 · 从入门到精通
01
GGUF前世今生
从GGML到GGUF的演进之路,为什么需要GGUF?
02
文件结构总览
宏观架构:头部、元数据、张量数据布局
03
魔法数字与版本号
文件开头魔数 0x46554747 和版本号字段
04
张量元数据区
张量名称、维度、类型在文件中的存储
05
键值对元数据
模型作者、描述、分词器配置等自定义存储
06
数据类型枚举
F32, F16, Q4_0, Q8_0 等编码
07
头部结构拆解
tensor_count 和 metadata_kv_count 字段
08
元数据键值对结构
key-value 存储格式,key为字符串
09
值类型系统
uint32, int32, float32, bool, string, array, tensor_info
10
字符串存储机制
长度前缀 + UTF-8 编码
11
数组类型详解
int数组、float数组的存储方式
12
张量信息结构
tensor_info:名称、维度、类型、偏移量
13
张量数据对齐
为什么需要对齐?对齐规则
14
张量数据偏移量
通过偏移量定位具体张量数据
15
量化格式详解(上)
Q4_0 和 Q4_1 存储细节
16
量化格式详解(中)
Q5_0 和 Q5_1 存储细节
17
量化格式详解(下)
Q8_0, Q2_K, Q3_K 等 K-quant 细节
18
元数据中的分词器
词汇表和合并规则的存储与读取
19
模型架构标识
标识 llama, mistral, gpt2 等架构
20
文件大小计算
根据头部信息计算文件及张量总大小
21
读取流程实战
从头读取一个GGUF文件的完整流程
22
Python解析库
使用 gguf Python 库读取和解析
23
C++解析示例
C++ 中手动解析 GGUF 文件结构
24
校验和验证
GGUF 校验机制?如何验证完整性
25
多文件分片
分片支持?命名规则和结构
26
兼容性考量
不同版本 GGUF 之间的兼容性
27
性能优化
读取性能优化 & 内存映射使用
28
常见错误排查
解析GGUF文件常见错误及解决方法
29
工具链介绍
convert, quantize, llama.cpp 等
30
未来展望
GGUF 格式未来发展方向与改进