# FBGEMM

[FBGEMM (Facebook GEneral Matrix Multiplication)](https://github.com/pytorch/FBGEMM) est une bibliothèque de multiplication de matrices à basse précision, conçue pour les petites tailles de lot et dotée du support de techniques visant à minimiser la perte de précision, telles que la quantification par ligne et la quantification tenant compte des valeurs aberrantes. Grâce à FBGEMM, vous pouvez quantiser les poids d'un modèle en 8 bits/canal et les activations en 8 bits/token (également connu sous le nom de fp8 ou w8a8).

> [!TIP]
> Vous avez besoin d'un GPU avec une [capacité de calcul 9+](https://developer.nvidia.com/cuda-gpus#collapseOne), comme un H100.

Installez le package FBGEMM_GPU avec la commande ci-dessous pour vous assurer de disposer de la dernière version.

```bash
pip install --upgrade accelerate fbgemm-gpu torch
```

Si vous rencontrez des problèmes d'installation, essayez d'installer la [version de nuit](https://pytorch.org/FBGEMM/fbgemm_gpu-development/InstallationInstructions.html#fbgemm-gpu-install-libraries:~:text=found%20here.-,Install%20the%20FBGEMM_GPU%20Package,-Install%20through%20PyTorch).

Créez un [FbgemmFp8Config](/docs/transformers/main/fr/main_classes/quantization#transformers.FbgemmFp8Config) et passez-le à [from_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.from_pretrained) pour quantiser un modèle en fp8.

```py
from transformers import FbgemmFp8Config, AutoModelForCausalLM

quantization_config = FbgemmFp8Config()
quantized_model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Meta-Llama-3-8B",
    dtype="auto",
    device_map="auto",
    quantization_config=quantization_config
)
```

[save_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.save_pretrained) et [from_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.from_pretrained) permettent d'enregistrer et de charger un modèle quantifié.

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

## Ressources

Lisez le billet de blog [Open-sourcing FBGEMM for state-of-the-art server-side inference](https://engineering.fb.com/2018/11/07/ml-applications/fbgemm/) pour plus de détails sur FBGEMM.

