Transformers documentation

Optimum Quanto

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Optimum Quanto

Quanto — это бэкенд квантования для PyTorch в составе Optimum. Он поддерживает линейное квантование весов (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", 
    dtype="auto", 
    device_map="auto", 
    quantization_config=quant_config
)

torch.compile

Оберните модель Quanto в torch.compile для ускорения генерации.

import torch
from transformers import AutoModelForSpeechSeq2Seq, QuantoConfig

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

model = torch.compile(model)

Ресурсы

Ознакомьтесь с публикацией Quanto: a PyTorch quantization backend for Optimum, чтобы узнать больше о проектировании библиотеки и результатах бенчмарков.

Для более практических примеров обратитесь к ноутбуку Quanto.

Update on GitHub