# Optimum Quanto

[Quanto](https://github.com/huggingface/optimum-quanto) é um backend de quantização do PyTorch para o [Optimum](https://huggingface.co/docs/optimum/index). Ele oferece quantização linear para pesos (float8, int8, int4, int2) com precisão muito semelhante à de modelos em precisão completa. O Quanto é compatível com qualquer modalidade de modelo e dispositivo, o que o torna simples de usar independentemente do hardware.

Quanto também é compatível com [torch.compile](https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html) para uma geração mais rápida.

Instale o Quanto com o seguinte comando.

```bash
pip install optimum-quanto accelerate transformers
```

Quantize um modelo criando um [QuantoConfig](/docs/transformers/main/pt/main_classes/quantization#transformers.QuantoConfig) e especificando o parâmetro `weights` para quantizar. Isso funciona para qualquer modelo em qualquer modalidade, desde que contenha camadas [torch.nn.Linear](https://pytorch.org/docs/stable/generated/torch.nn.Linear.html).

> [!TIP]
> A integração com o Transformers suporta apenas a quantização de pesos. Use a biblioteca Quanto diretamente se precisar de quantização de ativação, calibração ou QAT.

```py
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

Envolva um modelo Quanto com [torch.compile](https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html) para uma geração mais rápida.

```py
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)
```

## Recursos

Leia o post no blog [Quanto: um backend de quantização do PyTorch para o Optimum](https://huggingface.co/blog/quanto-introduction) para saber mais sobre o design da biblioteca e os benchmarks.

Para mais exemplos práticos, confira o [notebook](https://colab.research.google.com/drive/16CXfVmtdQvciSh9BopZUDYcmXCDpvgrT?usp=sharing) do Quanto.

