Transformers documentation

GGUF 和 Transformers 的交互

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.46.3).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

GGUF 和 Transformers 的交互

GGUF文件格式用于存储模型,以便通过GGML和其他依赖它的库进行推理,例如非常流行的llama.cppwhisper.cpp

该文件格式由抱抱脸支持,可用于快速检查文件中张量和元数据。

该文件格式是一种“单文件格式”,通常单个文件就包含了配置属性、分词器词汇表和其他属性,同时还有模型中要加载的所有张量。这些文件根据文件的量化类型有不同的格式。我们在这里进行了简要介绍。

在 Transformers 中的支持

我们在 transformers 中添加了加载 gguf 文件的功能,这样可以对 GGUF 模型进行进一步的训练或微调,然后再将模型转换回 GGUF 格式,以便在 ggml 生态系统中使用。加载模型时,我们首先将其反量化为 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
  • Bloom
  • Falcon
  • StableLM
  • GPT2
  • Starcoder2

使用示例

为了在transformers中加载gguf文件,你需要在 from_pretrained方法中为分词器和模型指定 gguf_file参数。下面是从同一个文件中加载分词器和模型的示例:

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}
< > Update on GitHub