Transformers 文档

GGUF 与 Transformers 的交互

GGUF 与 Transformers 的交互

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

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

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

Transformers 中的支持

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

[!注意] 支持仍然非常探索性,我们欢迎贡献以巩固其在量化类型和模型架构中的应用。

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

支持的量化类型

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

  • F32
  • F16
  • BF16
  • Q4_0
  • 第四季度_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
  • 猎鹰
  • StableLM
  • GPT2
  • Starcoder2
  • T5
  • 曼巴
  • Nemotron

示例用法

为了在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