GGUF 大模型文件格式及 LLM 模型量化类型介绍

发布时间: 更新时间: 总字数:1298 阅读时间:3m 作者: IP上海 分享 网址

GGUF(GPT-Generated Unified Format) 是一种二进制格式文件的规范,原始的大模型预训练结果经过转换后变成 GGUF 格式可以更快地被载入使用,并消耗更低的资源

GGUF 格式介绍

  • GGUF(GPT-Generated Unified Format) 是由 Georgi Gerganov 定义发布的一种大模型文件格式
    • Georgi Gerganov 是著名开源项目 llama.cpp 的创始人,他提出 GGUF 格式是为了解决大模型文件在不同平台和工具之间转换的问题
  • GGUF 是 GGML 的替代者
gguf spec

图片转自

GGUF 文件组成如下

  • 文件头 (Header)
  • GGUF 版本
  • 张量数 (Tensor Count)
  • 元数据数 (Metadata Key-Value Count)
  • 元数据键值对 (Metadata Key-Value Pairs)
  • 张量信息 (Tensor Info)
  • 张量数据 (Tensor Data)
  • 对齐填充 (Alignment Padding)
  • 端序标识 (Endianness)
  • 扩展信息 (Extension Information)

GGUF 模型示例:https://huggingface.co/unsloth/DeepSeek-R1-Distill-Qwen-32B-GGUF

DeepSeek-R1-Distill-Qwen-32B-Q4_K_M 的 GGUF 信息

  • 可以看出,该模型基于 qwen2 蒸馏,context_length 为 131072,block_count 有 64 个

GGUF 文件查看工具

  • llama.cpp
  • GPT4All
  • Ollama
  • javascript 工具 @huggingface/gguf

将模型转换成 GGUF 格式

GGUF 命名约定

GGUF 命名格式:

<BaseName>-<SizeLabel>-<Active>-<FineTune>-<Version>-<Encoding>-<Type>-<Shard>.gguf

# 示例 https://huggingface.co/Qwen/Qwen3-235B-A22B-GGUF
Qwen3-235B-A22B-Q4_K_M.gguf
Qwen3-235B-A22B-Q4_K_M-00001-of-00005.gguf
  • BaseName 模型基础类型或架构的描述性名称,从 GGUF 元数据 general.basename 获取
    • 示例为 Qwen3
  • SizeLabel 参数权重,表示为 <专家数量>x<参数数量><量级前缀>,从 GGUF 元数据 general.size_label 获取,示例为 0x235B
    • T:万亿参数
    • Q:千万亿参数
    • B:十亿参数
    • M:百万参数
    • K:千参数
    • 扩展:Mixtral-8x7B,专家数量 8,参数 7B
  • Active 运行时激活数量
    • 示例 22B
  • FineTune 模型微调目标的描述性名称(例如 Chat、Instruct 等),从 GGUF 元数据 general.finetune 获取
  • Version 表示模型版本号,格式为 v<主版本>.<次版本>,从 GGUF 元数据 general.version 获取
  • Encoding 模型的权重编码方案,从 GGUF 元数据 general.file_type获取
    • 示例 Q4_K_M
  • Type GGUF 文件的类型及其预期用途,默认为典型的 GGUF 张量模型文件
    • LoRA GGUF 文件是 LoRA 适配器
    • vocab 仅包含词汇数据和元数据的 GGUF 文件
  • Shard(可选)指示模型已被拆分为多个分片,格式为 <分片编号>-of-<总分片数>,示例 00001-of-00005

其他模型格式

  • .pt PyTorch 原生训练格式,未量化,依赖 GPU 和 PyTorch 环境,应用与模型训练/微调
  • .safetensors HuggingFace 安全序列化格式,未量化,需加载完整模型到内存,云端推理(GPU 加速)

GGML 格式

GGML 是 GGUF 之前的文件格式,由开发人员 Georgi Gerganov 创建

  • GGML 是 Gerganov 的名字首字母缩写 (GG) 和机器学习的首字母缩写 ML 的组合
  • GGML 是一个张量库,专为在各种硬件平台上实现高性能而设计
  • 该格式也是为 OpenAI 的 GPT 人工智能模型制作文件格式的早期尝试,以方便模型的轻松共享和运行
  • GGML 的设计目标是明确无误,并包含加载模型所需的所有信息(不建议使用)

ONNX 格式

ONNX(Open Neural Network Exchange) 是微软和 Facebook 提出用来表示 深度学习模型 的开放格式

  • 开放ONNX 定义了一组和环境,平台均无关的标准格式,来增强各种 AI模型 的可交互性
  • 无论使用何种训练框架训练模型(如 TensorFlow/Pytorch/OneFlow/Paddle),在训练完毕后都可以将这些框架的模型统一转换为 ONNX 格式进行存储
    • ONNX 使用 Protobuf 序列化数据结构,来存储神经网络的权重信息
    • onnx.proto 定义了 ONNX 数据协议的规则和一些其它信息,核心概念
      • ModelProto
      • GraphProto
      • NodeProto
      • ValueInfoProto
      • TensorProto
      • AttributeProto
  • ONNX Runtime 是一种跨平台机器学习模型加速器,具有集成特定硬件库的灵活接口。ONNX Runtime 可与 PyTorch、Tensorflow/Keras、TFLite、scikit-learn 和其他框架的模型一起使用。
  • 示例参考

参考

  1. https://huggingface.co/docs/hub/gguf
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数