# AQLM

A Quantização Aditiva de Modelos de Linguagem ([AQLM](https://huggingface.co/papers/2401.06118)) quantiza vários pesos em conjunto e aproveita as interdependências entre eles. O AQLM representa grupos de 8 a 16 pesos como uma soma de vários códigos vetoriais.

O AQLM também oferece suporte ao fine-tuning com [LoRA](https://huggingface.co/docs/peft/package_reference/lora) usando a biblioteca [PEFT](https://huggingface.co/docs/peft) e é totalmente compatível com [torch.compile](https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html) para inferência e treinamento ainda mais rápidos.

Execute o comando abaixo para instalar a biblioteca AQLM com suporte a kernels para inferência e treinamento em GPU e CPU.

```bash
pip install aqlm[gpu,cpu]
```

Carregue um modelo quantizado com AQLM usando [from_pretrained()](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel.from_pretrained).

```python
from transformers import AutoTokenizer, AutoModelForCausalLM

quantized_model = AutoModelForCausalLM.from_pretrained(
    "ISTA-DASLab/Mixtral-8x7b-AQLM-2Bit-1x16-hf",
    dtype="auto", 
    device_map="auto"
)
```

## Configurações

As configurações de quantização AQLM variam principalmente no número de codebooks utilizados, bem como no tamanho dos codebooks em bits. As configurações mais populares e os kernels de inferência suportados estão mostrados abaixo.

| Kernel | Número de codebooks | Tamanho do codebook, bits | Notação | Precisão | Aceleração     | Inferência rápida em GPU | Inferência rápida em CPU |
|---|---------------------|---------------------|----------|-------------|-------------|--------------------|--------------------|
| Triton | K                   | N                  | KxN     | -        | Até ~0,7x | ✅                  | ❌                  |
| CUDA | 1                   | 16                  | 1x16     | Melhor        | Até ~1,3x | ✅                  | ❌                  |
| CUDA | 2                   | 8                   | 2x8      | OK          | Até ~3.0x | ✅                  | ❌                  |
| Numba | K                   | 8                   | Kx8      | Bom        | Até ~4.0x | ❌                  | ✅                  |

## Recursos

Execute o [notebook](https://colab.research.google.com/drive/1-xZmBRXT5Fm3Ghn4Mwa2KRypORXb855X?usp=sharing) de demonstração do AQLM para mais exemplos de como quantizar um modelo, enviar um modelo quantizado para o Hub e muito mais.

Para mais notebooks de demonstração, visite o [repositório](https://github.com/Vahe1994/AQLM) do AQLM.

