本页面介绍了 Transformers 库中的 GGUF(GGML Universal Format)集成,该集成允许加载和使用以 GGUF 格式存储的量化模型。GGUF 是一种为 GGML 推理框架开发的文件格式,它能够将模型权重(包括量化权重)高效地存储在单个文件中。
有关量化技术的更多信息,请参阅 量化。
Transformers 中的 GGUF 集成实现了
来源
GGUF 集成支持广泛的模型架构,包括
| 架构 | 模型类型 |
|---|---|
| LLM | Llama、Mistral、Qwen2、Qwen2MoE、Phi3 |
| 仅编码器 | Bloom、Falcon |
| 编码器-解码器 | T5 |
| 其他 | StableLM、GPT2、Starcoder2、Mamba、Nemotron、Gemma2、Gemma3 |
来源
GGUF 支持多种量化类型,从全精度(FP16/BF16)到高度压缩格式
| 类别 | 量化类型 |
|---|---|
| 全精度 | F32 (float32)、F16 (float16)、BF16 (bfloat16) |
| 标准量化 | Q8_0、Q5_0、Q4_0 |
| K-量化 | Q2_K、Q3_K、Q4_K、Q5_K、Q6_K |
| I-矩阵 | IQ1_S、IQ1_M、IQ2_XXS、IQ2_XS、IQ2_S、IQ3_XXS、IQ3_S、IQ4_XS、IQ4_NL |
来源
从 GGUF 文件加载模型
来源
在加载 GGUF 模型时,可以指定 PyTorch 的 dtype
来源
GGUF 集成包含几个关键组件
来源
GGUF 加载过程包括几个步骤
GGUFReader 从 gguf 库中读取文件来源
GGUF 文件包含可转换为 Transformers 分词器的分词器信息
来源
分词器转换过程包括
例如,对于 Llama 模型
来源
不同的模型架构需要特定的张量处理
对于 Llama 和 Mistral 模型,注意力权重需要特殊处理
来源
对于 Bloom 模型,注意力 QKV 权重需要重塑
来源
对于 Qwen2MoE 模型,专家张量需要拆分
来源
在使用 Transformers 中的 GGUF 模型时,请考虑以下事项
来源
以下是使用 GGUF 集成的完整工作流程示例
加载量化模型:
微调或修改模型:
保存模型:
转换回 GGUF 格式(使用外部工具)
来源
Transformers 中的 GGUF 集成为高效量化模型和 Transformers 生态系统之间搭建了一座桥梁。这允许用户
该集成处理了权重去量化、配置映射和分词器转换的复杂性,使得在 PyTorch 中使用 GGUF 模型变得更加容易。