Transformers 文档

Optimum Quanto

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始

Optimum Quanto

Quanto 是一个用于 Optimum 的 PyTorch 量化后端。它具有用于权重的线性量化(float8、int8、int4、int2),其精度与全精度模型非常相似。 Quanto 与任何模型模态和设备兼容,使得无论硬件如何,使用起来都很简单。

Quanto 也与 torch.compile 兼容,以实现更快的生成。

使用以下命令安装 Quanto。

pip install optimum-quanto accelerate transformers

通过创建 QuantoConfig 并指定 weights 参数进行量化,以量化模型。这适用于任何模态的任何模型,只要它包含 torch.nn.Linear 层。

Transformers 集成仅支持权重​​量化。如果您需要激活量化、校准或 QAT,请直接使用 Quanto 库。

from transformers import AutoModelForCausalLM, AutoTokenizer, QuantoConfig

quant_config = QuantoConfig(weights="int8")
model = transformers.AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B", 
    torch_dtype="auto", 
    device_map="auto", 
    quantization_config=quant_config
)

torch.compile

使用 torch.compile 封装 Quanto 模型以获得更快的生成速度。

import torch
from transformers import AutoModelForSpeechSeq2Seq, QuantoConfig

quant_config = QuantoConfig(weights="int8")
model = AutoModelForSpeechSeq2Seq.from_pretrained(
  "openai/whisper-large-v2",
  torch_dtype="auto",
  device_map="auto",
  quantization_config=quant_config
)

model = torch.compile(model)

资源

阅读 Quanto: Optimum 的 PyTorch 量化后端 博客文章,以了解有关库设计和基准的更多信息。

有关更多实践示例,请查看 Quanto notebook

< > 在 GitHub 上更新