# EETQ

La bibliothèque [Easy & Efficient Quantization for Transformers (EETQ)](https://github.com/NetEase-FuXi/EETQ) prend en charge la quantification int8 des poids uniquement, par canal, pour les GPU NVIDIA. Elle utilise des noyaux GEMM et GEMV haute performance issus de [FasterTransformer](https://github.com/NVIDIA/FasterTransformer) et [TensorRT-LLM](https://github.com/NVIDIA/TensorRT-LLM). La couche d'attention est optimisée avec [FlashAttention2](https://github.com/Dao-AILab/flash-attention). Aucun jeu de données de calibration n'est requis, et le modèle n'a pas besoin d'être pré-quantifié. La dégradation de la précision est négligeable grâce à la quantification par canal.

EETQ prend en outre en charge le fine-tuning avec [PEFT](https://huggingface.co/docs/peft).

Installez EETQ depuis la [page des versions](https://github.com/NetEase-FuXi/EETQ/releases) ou le [code source](https://github.com/NetEase-FuXi/EETQ). CUDA 11.4 ou supérieur est requis pour EETQ.

```bash
pip install --no-cache-dir https://github.com/NetEase-FuXi/EETQ/releases/download/v1.0.0/EETQ-1.0.0+cu121+torch2.1.2-cp310-cp310-linux_x86_64.whl
```

```bash
git clone https://github.com/NetEase-FuXi/EETQ.git
cd EETQ/
git submodule update --init --recursive
pip install .
```

Quantifiez un modèle à la volée en définissant le type de données de quantification dans [EetqConfig](/docs/transformers/main/fr/main_classes/quantization#transformers.EetqConfig).

```py
from transformers import AutoModelForCausalLM, EetqConfig

quantization_config = EetqConfig("int8")
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    dtype="auto",
    device_map="auto",
    quantization_config=quantization_config
)
```

Enregistrez le modèle quantifié avec [save_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.save_pretrained) afin de pouvoir le réutiliser avec [from_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.from_pretrained).

```py
quant_path = "/path/to/save/quantized/model"
model.save_pretrained(quant_path)
model = AutoModelForCausalLM.from_pretrained(quant_path, device_map="auto")
```

