Hub 文档
GGUF
加入 Hugging Face 社区
并获得增强的文档体验
开始使用
GGUF
Hugging Face Hub 支持所有文件格式,但对 GGUF 格式内置了功能,GGUF 是一种二进制格式,针对模型的快速加载和保存进行了优化,使其在推理目的方面非常高效。GGUF 旨在与 GGML 和其他执行器一起使用。GGUF 由 @ggerganov 开发,他也是流行的 C/C++ LLM 推理框架 llama.cpp 的开发者。最初在 PyTorch 等框架中开发的模型可以转换为 GGUF 格式,以便与这些引擎一起使用。

正如我们在此图中看到的,与仅张量文件格式(如 safetensors,这也是 Hub 推荐的模型格式)不同,GGUF 同时编码张量和标准化的元数据集合。
查找 GGUF 文件
您可以浏览所有带有 GGUF 文件的模型,并通过 GGUF 标签进行筛选:hf.co/models?library=gguf。此外,您可以使用 ggml-org/gguf-my-repo 工具将您的模型权重转换/量化为 GGUF 权重。


例如,您可以查看 TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF,以查看 GGUF 文件的实际应用。


元数据和张量信息查看器
Hub 有一个 GGUF 文件查看器,允许用户查看元数据和张量信息(名称、形状、精度)。查看器在模型页面 (示例) 和文件页面 (示例) 上可用。


与开源工具的用法
使用 @huggingface/gguf 解析元数据
我们还创建了一个 javascript GGUF 解析器,它适用于远程托管的文件(例如 Hugging Face Hub)。
npm install @huggingface/gguf
import { gguf } from "@huggingface/gguf";
// remote GGUF file from https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF
const URL_LLAMA = "https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/191239b/llama-2-7b-chat.Q2_K.gguf";
const { metadata, tensorInfos } = await gguf(URL_LLAMA);
在此处查找更多信息 here。
量化类型
类型 | 来源 | 描述 |
---|---|---|
F64 | 维基百科 | 64 位标准 IEEE 754 双精度浮点数。 |
I64 | GH | 64 位固定宽度整数。 |
F32 | 维基百科 | 32 位标准 IEEE 754 单精度浮点数。 |
I32 | GH | 32 位固定宽度整数。 |
F16 | 维基百科 | 16 位标准 IEEE 754 半精度浮点数。 |
BF16 | 维基百科 | 16 位缩短版本的 32 位 IEEE 754 单精度浮点数。 |
I16 | GH | 16 位固定宽度整数。 |
Q8_0 | GH | 8 位四舍五入到最近的量化 (q )。每个块有 32 个权重。权重公式:w = q * block_scale 。传统的量化方法(截至今天,未被广泛使用)。 |
Q8_1 | GH | 8 位四舍五入到最近的量化 (q )。每个块有 32 个权重。权重公式:w = q * block_scale + block_minimum 。传统的量化方法(截至今天,未被广泛使用)。 |
Q8_K | GH | 8 位量化 (q )。每个块有 256 个权重。仅用于量化中间结果。所有 2-6 位点积都为此量化类型实现。权重公式:w = q * block_scale 。 |
I8 | GH | 8 位固定宽度整数。 |
Q6_K | GH | 6 位量化 (q )。超块有 16 个块,每个块有 16 个权重。权重公式:w = q * block_scale(8-bit) ,导致每权重 6.5625 位。 |
Q5_0 | GH | 5 位四舍五入到最近的量化 (q )。每个块有 32 个权重。权重公式:w = q * block_scale 。传统的量化方法(截至今天,未被广泛使用)。 |
Q5_1 | GH | 5 位四舍五入到最近的量化 (q )。每个块有 32 个权重。权重公式:w = q * block_scale + block_minimum 。传统的量化方法(截至今天,未被广泛使用)。 |
Q5_K | GH | 5 位量化 (q )。超块有 8 个块,每个块有 32 个权重。权重公式:w = q * block_scale(6-bit) + block_min(6-bit) ,导致每权重 5.5 位。 |
Q4_0 | GH | 4 位四舍五入到最近的量化 (q )。每个块有 32 个权重。权重公式:w = q * block_scale 。传统的量化方法(截至今天,未被广泛使用)。 |
Q4_1 | GH | 4 位四舍五入到最近的量化 (q )。每个块有 32 个权重。权重公式:w = q * block_scale + block_minimum 。传统的量化方法(截至今天,未被广泛使用)。 |
Q4_K | GH | 4 位量化 (q )。超块有 8 个块,每个块有 32 个权重。权重公式:w = q * block_scale(6-bit) + block_min(6-bit) ,导致每权重 4.5 位。 |
Q3_K | GH | 3 位量化 (q )。超块有 16 个块,每个块有 16 个权重。权重公式:w = q * block_scale(6-bit) ,导致每权重 3.4375 位。 |
Q2_K | GH | 2 位量化 (q )。超块有 16 个块,每个块有 16 个权重。权重公式:w = q * block_scale(4-bit) + block_min(4-bit) ,导致每权重 2.625 位。 |
IQ4_NL | GH | 4 位量化 (q )。超块有 256 个权重。权重 w 使用 super_block_scale & importance matrix 获得。 |
IQ4_XS | HF | 4 位量化 (q )。超块有 256 个权重。权重 w 使用 super_block_scale & importance matrix 获得,导致每权重 4.25 位。 |
IQ3_S | HF | 3 位量化 (q )。超块有 256 个权重。权重 w 使用 super_block_scale & importance matrix 获得,导致每权重 3.44 位。 |
IQ3_XXS | HF | 3 位量化 (q )。超块有 256 个权重。权重 w 使用 super_block_scale & importance matrix 获得,导致每权重 3.06 位。 |
IQ2_XXS | HF | 2 位量化 (q )。超块有 256 个权重。权重 w 使用 super_block_scale & importance matrix 获得,导致每权重 2.06 位。 |
IQ2_S | HF | 2 位量化 (q )。超块有 256 个权重。权重 w 使用 super_block_scale & importance matrix 获得,导致每权重 2.5 位。 |
IQ2_XS | HF | 2 位量化 (q )。超块有 256 个权重。权重 w 使用 super_block_scale & importance matrix 获得,导致每权重 2.31 位。 |
IQ1_S | HF | 1 位量化 (q )。超块有 256 个权重。权重 w 使用 super_block_scale & importance matrix 获得,导致每权重 1.56 位。 |
IQ1_M | GH | 1 位量化 (q )。超块有 256 个权重。权重 w 使用 super_block_scale & importance matrix 获得,导致每权重 1.75 位。 |
如果上表有任何不准确之处,请在 此文件 上打开 PR。
< > 在 GitHub 上更新