GGUF 模型格式 (GGUF Model Format)
GGUF(GGML Unified Format,GGML 统一格式)是 llama.cpp 生态的标准"本地大模型单文件格式":把模型所有超参数、分词器(Tokenizer)配置、量化权重打包进一个二进制文件,运行时用 mmap 直接映射加载、跑推理。
2023 年 8 月推出,替代早期 GGML / GGMF / GGJT——旧格式把超参数和分词器规则硬编码进加载器,模型架构一升级就兼容性崩溃。GGUF 把一切装进文件本身,彻底解决扩展性问题。
为什么适合本地推理
- 单文件部署:无需额外配置 / 外部分词模型
- mmap 零拷贝加载:文件直接映射进虚拟内存,秒级加载,跳过反序列化和内存拷贝
- 异构混合卸载:按可用显存把层卸到 GPU(CUDA/Metal/ROCm/Vulkan),剩余跑 CPU
文件结构(四段二进制)
| 段 | 内容 |
|---|---|
| Header 文件头 | 魔数 "GGUF"(0x47 0x47 0x55 0x46)、格式版本(v3)、张量总数、元数据 KV 计数 |
| Metadata 元数据 | 强类型 Key-Value:架构(general.architecture=llama)、context_length、层数、RoPE 参数、分词器词表与特殊 token 规则 |
| Tensor Info 张量描述表 | 每个权重张量的名字、维度、量化类型(ggml_type)、数据偏移量 |
| Tensor Data 权重数据区 | 实际权重,默认 32 字节对齐(SIMD/AVX 指令友好) |
量化机制(为什么 GGUF 省显存)
原始权重通常是 FP16(7B 模型约需 14 GB 显存)。GGUF 通过分块量化压缩:
- 分块量化:连续权重按块(32 或 256 个)分组,存低精度整数 + 缩放系数(scale)+ 零点(zero-point),推理时动态反量化参与计算。
- Q4_0 / Q8_0:均匀位宽。Q4_0 快但损耗稍大,Q8_0 接近无损。
- K-Quants(Q4_K_M / Q5_K_S):混合精度。关键层(注意力、输出层)给 5/6-bit,次要层 4-bit,平衡体积与困惑度(Perplexity)。
- I-Quants(IQ3_M / IQ2_XXS):按重要性矩阵(Importance Matrix)给超低位宽,2-3 bit 仍可用。
生态
Ollama、LM Studio、KoboldCpp、Jan 等本地模型运行时的事实标准分发格式;Hugging Face 原生支持在线解析 GGUF。
与 Chrome 内置 Gemini Nano 的关系
GGUF 是"通用格式 + 自选运行时 + 自选模型"的开放路线;Chrome 内置 AI 是"私有格式 + 浏览器专有运行时 + 固定模型(Gemini Nano)"的托管路线。两者都做端侧量化模型推理,但开放度、可移植性、地区限制完全不同。对比见 Chrome 内置 Gemini Nano (Chrome Built-in AI)。
双 link
本文归档于个人知识库 · 领域:CS & AI · 模块:04 Project_CS_AI/LLM