Transformers 文档

GGUF 与 Transformers 的交互

Hugging Face's logo
加入Hugging Face社区

并获取增强的文档体验

开始使用

GGUF 和 Transformers 的交互

GGUF 文件格式用于存储模型,以便使用 GGML 及其依赖的其他库(例如非常流行的 llama.cppwhisper.cpp)进行推理。

这是一种 Hugging Face Hub 支持 的文件格式,其功能允许快速检查文件中的张量和元数据。

此文件格式设计为“单文件格式”,其中单个文件通常包含配置属性、标记器词汇表和其他属性,以及模型中要加载的所有张量。这些文件根据文件的量化类型采用不同的格式。我们在这里 简要介绍其中一些格式。

Transformers 中的支持

我们在 transformers 中添加了加载 gguf 文件的功能,以便在将模型转换回 gguf 以在 ggml 生态系统中使用之前,为 gguf 模型提供进一步的训练/微调功能。加载模型时,我们首先将其从量化转换为 fp32,然后加载要在 PyTorch 中使用的权重。

[!注意] 该支持仍处于探索阶段,我们欢迎贡献以巩固跨量化类型和模型架构的支持。

目前,以下是支持的模型架构和量化类型

支持的量化类型

初始支持的量化类型是根据 Hub 上共享的流行量化文件决定的。

  • F32
  • F16
  • BF16
  • Q4_0
  • Q4_1
  • Q5_0
  • Q5_1
  • Q8_0
  • Q2_K
  • Q3_K
  • Q4_K
  • Q5_K
  • Q6_K
  • IQ1_S
  • IQ1_M
  • IQ2_XXS
  • IQ2_XS
  • IQ2_S
  • IQ3_XXS
  • IQ3_S
  • IQ4_XS
  • IQ4_NL

[!注意] 要支持 gguf 反量化,需要安装 gguf>=0.10.0

支持的模型架构

目前,支持的模型架构是 Hub 上非常流行的架构,即

  • LLaMa
  • Mistral
  • Qwen2
  • Qwen2Moe
  • Phi3

使用示例

为了在 transformers 中加载 gguf 文件,您应该将 gguf_file 参数指定给标记器和模型的 from_pretrained 方法。以下是如何加载标记器和模型的方法,它们可以从同一个文件加载

from transformers import AutoTokenizer, AutoModelForCausalLM

model_id = "TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF"
filename = "tinyllama-1.1b-chat-v1.0.Q6_K.gguf"

tokenizer = AutoTokenizer.from_pretrained(model_id, gguf_file=filename)
model = AutoModelForCausalLM.from_pretrained(model_id, gguf_file=filename)

现在,您可以访问 PyTorch 生态系统中模型的完整非量化版本,您可以在其中将其与大量其他工具结合使用。

为了转换回 gguf 文件,我们建议使用 llama.cpp 中的 convert-hf-to-gguf.py 文件

以下是如何完成上述脚本以保存模型并将其导出回 gguf 的方法

tokenizer.save_pretrained('directory')
model.save_pretrained('directory')

!python ${path_to_llama_cpp}/convert-hf-to-gguf.py ${directory}
< > GitHub 上的更新