Transformers 文档

Quanto

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Quanto

使用此 notebook 试用 Quanto + transformers!

🤗 Quanto 库是一个通用的 PyTorch 量化工具包。使用的量化方法是线性量化。Quanto 提供了一些独特的特性,例如:

  • 权重量化 (float8int8int4int2)
  • 激活量化 (float8int8)
  • 模态无关 (例如 CV、LLM)
  • 设备无关 (例如 CUDA、MPS、CPU)
  • torch.compile 兼容
  • 易于为特定设备添加自定义内核
  • 支持量化感知训练

在开始之前,请确保安装以下库:

pip install quanto accelerate transformers

现在,您可以通过在 from_pretrained() 方法中传递 QuantoConfig 对象来量化模型。只要模型包含 torch.nn.Linear 层,此方法适用于任何模态的任何模型。

与 transformers 的集成仅支持权重量化。对于更复杂的用例(例如激活量化、校准和量化感知训练),您应该使用 quanto 库。

from transformers import AutoModelForCausalLM, AutoTokenizer, QuantoConfig

model_id = "facebook/opt-125m"
tokenizer = AutoTokenizer.from_pretrained(model_id)
quantization_config = QuantoConfig(weights="int8")
quantized_model = AutoModelForCausalLM.from_pretrained(model_id, device_map="cuda:0", quantization_config=quantization_config)

请注意,transformers 暂不支持序列化,但很快就会支持!如果您想保存模型,可以使用 quanto 库。

Quanto 库使用线性量化算法进行量化。即使这是一种基本的量化技术,我们也获得了非常好的结果!请查看以下基准测试(llama-2-7b 在困惑度指标上的结果)。您可以在 此处 找到更多基准测试。

llama-2-7b-quanto-perplexity

该库足够通用,可以与大多数 PTQ 优化算法兼容。未来的计划是以尽可能无缝的方式集成最流行的算法 (AWQ、Smoothquant)。

< > GitHub 更新