# FP-Quant

[FP-Quant](https://github.com/IST-DASLab/FP-Quant) — это семейство алгоритмов квантования, адаптированных для поколения GPU Nvidia Blackwell. Цель — обеспечить эффективное постобучающее квантование (PTQ) и обучение с учётом квантования (QAT) LLM в форматах [MXFP4 и NVFP4](https://www.opencompute.org/documents/ocp-microscaling-formats-mx-v1-0-spec-final-pdf).

This integration accompanies the pre-print of the [**Bridging the Gap Between Promise and Performance for Microscaling FP4 Quantization**](https://arxiv.org/abs/2509.23202) pre-print.

В настоящее время QAT поддерживается только при `pseudoquantization=True`. Модели можно квантовать на лету с помощью `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,
)
```

или предварительно обработанных с помощью GPTQ для более высокого качества (см. [FP Format Quantization Harness](https://github.com/IST-DASLab/FP-Quant)).

Вы можете выбрать между MXFP4 и NVFP4 с помощью `FPQuantConfig(forward_dtype="mxfp4")`. NVFP4 обеспечивает лучшее качество, но потребляет немного больше памяти.

Для запуска ядер требуется **GPU поколения Blackwell**. Поддержка FP-Quant во время выполнения реализована с помощью библиотеки [QuTLASS](https://github.com/IST-DASLab/qutlass) и легковесной библиотеки-интерфейса для PyTorch [`fp_quant`](https://github.com/IST-DASLab/FP-Quant/tree/master/inference_lib). Мы рекомендуем установить первую **из исходного кода**, а вторую — с помощью `pip install fp_quant`.

Пользователи **без GPU поколения Blackwell** могут использовать метод с `quantization_config=FPQuantConfig(pseudoquantization=True)` без установки [QuTLASS](https://github.com/IST-DASLab/qutlass). Это не даст ускорения, но полностью эмулирует эффект квантования.

> [!TIP]
> Найдите модели, предварительно квантованные с помощью FP-Quant, в официальной [коллекции](https://huggingface.co/collections/ISTA-DASLab/fp-quant-6877c186103a21d3a02568ee) ISTA-DASLab.

## torch.compile

FP-Quant полностью совместим с [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)
```

## Ускорения

FP-Quant в настоящее время показывает наилучшие результаты при обработке очень больших размеров батча.

См. [README QuTLASS](https://github.com/IST-DASLab/qutlass/blob/main/README.md) для информации об ускорении.

