# FP-Quant

[FP-Quant](https://github.com/IST-DASLab/FP-Quant) est une famille d’algorithmes de quantification conçus pour la génération Blackwell de GPU Nvidia. L’objectif est de permettre une quantification après entraînement (PTQ) et une quantification consciente de l’entraînement (QAT) efficaces des LLM dans les [types de données MXFP4 et NVFP4](https://www.opencompute.org/documents/ocp-microscaling-formats-mx-v1-0-spec-final-pdf).

Cette intégration accompagne la prépublication de l’article [**Bridging the Gap Between Promise and Performance for Microscaling FP4 Quantization**](https://arxiv.org/abs/2509.23202).

Actuellement, seul le QAT est pris en charge avec `pseudoquantization=True`. Les modèles peuvent être quantifiés à la volée avec `quantization_config=FPQuantConfig()` :

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

model = AutoModelForCausalLM.from_pretrained(
    "qwen/Qwen3-8B",
    quantization_config=FPQuantConfig(),
    device_map="auto",
    dtype=torch.bfloat16,
)
```

ou prétraité avec GPTQ pour une meilleure qualité (voir [FP Format Quantization Harness](https://github.com/IST-DASLab/FP-Quant)).

Vous pouvez choisir entre MXFP4 et NVFP4 avec `FPQuantConfig(forward_dtype="mxfp4")`. NVFP4 offre une meilleure qualité, mais utilise un peu plus de mémoire.

Un GPU de génération **Blackwell est requis** pour exécuter les noyaux. La prise en charge à l’exécution de FP-Quant est implémentée via la bibliothèque [QuTLASS](https://github.com/IST-DASLab/qutlass) et une interface PyTorch légère, la bibliothèque [`fp_quant`](https://github.com/IST-DASLab/FP-Quant/tree/master/inference_lib). Nous recommandons d’installer la première **à partir du code source** et la seconde avec `pip install fp_quant`.

Les utilisateurs **ne disposant pas d'un GPU de génération Blackwell** peuvent utiliser la méthode avec `quantization_config=FPQuantConfig(pseudoquantization=True)` sans avoir à installer [QuTLASS](https://github.com/IST-DASLab/qutlass). Cela n'apporterait aucune accélération, mais émulerait pleinement l'effet de la quantification.

> [!TIP]
> Retrouvez les modèles pré-quantifiés avec FP-Quant dans la [collection](https://huggingface.co/collections/ISTA-DASLab/fp-quant-6877c186103a21d3a02568ee) officielle d’ISTA-DASLab.

## torch.compile

FP-Quant est entièrement compatible avec [torch.compile](https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html).

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

model = AutoModelForCausalLM.from_pretrained(
    "qwen/Qwen3-8B",
    quantization_config=FPQuantConfig(),
    device_map="auto",
    dtype=torch.bfloat16,
)

model.forward = torch.compile(model.forward, mode="max-autotune", fullgraph=True)
```

## Accélérations

FP-Quant offre actuellement les meilleures performances pour le traitement de très grandes tailles de lot.

Consultez le [README de QuTLASS](https://github.com/IST-DASLab/qutlass/blob/main/README.md) pour les accélérations.

