# HIGGS

[HIGGS](https://huggingface.co/papers/2411.17525) é um algoritmo de quantização zero-shot que combina o pré-processamento Hadamard com grades de quantização MSE-Optimal para alcançar menor erro de quantização e desempenho de estado da arte.

O suporte em tempo de execução para HIGGS é implementado por meio da biblioteca [FLUTE](https://github.com/HanGuo97/flute). Atualmente, apenas as variantes de 70B e 405B do Llama 3 e Llama 3.0, e as variantes de 8B e 27B do Gemma 2 são suportadas. O HIGGS também não suporta, no momento, treinamento quantizado e passes de retropropagação em geral.

Execute o comando abaixo para instalar o FLUTE.

```bash
pip install flute-kernel
```

```bash
pip install flute-kernel -i https://flute-ai.github.io/whl/cu11.8
```

Crie um [HiggsConfig](/docs/transformers/main/pt/main_classes/quantization#transformers.HiggsConfig) com o número de bits para quantizar um modelo.

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, HiggsConfig

model = AutoModelForCausalLM.from_pretrained(
    "google/gemma-2-9b-it",
    quantization_config=HiggsConfig(bits=4),
    device_map="auto",
)
```

> [!TIP]
> Encontre modelos pré-quantizados com HIGGS na [coleção](https://huggingface.co/collections/ISTA-DASLab/higgs-675308e432fd56b7f6dab94e) oficial do ISTA-DASLab.

## torch.compile

HIGGS é totalmente compatível com [torch.compile](https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html).

```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, HiggsConfig

model = AutoModelForCausalLM.from_pretrained(
    "google/gemma-2-9b-it",
    quantization_config=HiggsConfig(bits=4),
    device_map="auto",
)

model = torch.compile(model)
```

Consulte a tabela abaixo para um benchmark de passes de forward/seg para o Llama-3.1-8B-Instruct em uma RTX4090.

| Tamanho do Lote | BF16 (com `torch.compile`) | HIGGS 4bit (sem `torch.compile`) | HIGGS 4bit (com `torch.compile`) |
|------------|-----------------------------|----------------------------------|-----------------------------------|
| 1          | 59                          | 41                               | 124                               |
| 4          | 57                          | 42                               | 123                               |
| 16         | 56                          | 41                               | 120                               |

