# FP-Quant

[FP-Quant](https://github.com/IST-DASLab/FP-Quant) adalah keluarga algoritma kuantisasi yang dirancang khusus untuk generasi Blackwell dari GPU Nvidia. Tujuannya adalah untuk memungkinkan kuantisasi pasca-pelatihan (post-training quantization/PTQ) dan pelatihan yang sadar kuantisasi (quantization-aware training/QAT) pada LLM secara efisien dalam [MXFP4 dan NVFP4 data-types](https://www.opencompute.org/documents/ocp-microscaling-formats-mx-v1-0-spec-final-pdf).

Integrasi ini menyertai naskah pra-cetak dari naskah pra-cetak [**Bridging the Gap Between Promise and Performance for Microscaling FP4 Quantization**](https://arxiv.org/abs/2509.23202).

Saat ini, QAT hanya didukung dengan `pseudoquantization=True`. Model dapat dikuantisasi secara langsung dengan `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,
)
```

atau diproses sebelumnya dengan GPTQ untuk kualitas yang lebih baik (lihat [FP Format Quantization Harness](https://github.com/IST-DASLab/FP-Quant)).

Anda dapat memilih antara MXFP4 dan NVFP4 dengan `FPQuantConfig(forward_dtype="mxfp4")`. NVFP4 memberikan kualitas yang lebih baik tetapi menggunakan sedikit lebih banyak memori.

GPU generasi Blackwell **diperlukan** untuk menjalankan kernel. Dukungan runtime untuk FP-Quant diimplementasikan melalui pustaka [QuTLASS](https://github.com/IST-DASLab/qutlass) dan antarmuka PyTorch ringan [`fp_quant`](https://github.com/IST-DASLab/FP-Quant/tree/master/inference_lib). Kami merekomendasikan menginstal yang pertama **dari sumber** dan yang kedua dengan `pip install fp_quant`.

Pengguna **tanpa GPU generasi Blackwell** dapat menggunakan metode ini dengan `quantization_config=FPQuantConfig(pseudoquantization=True)` tanpa perlu menginstal [QuTLASS](https://github.com/IST-DASLab/qutlass). Hal ini tidak akan memberikan peningkatan kecepatan, tetapi akan sepenuhnya mensimulasikan efek kuantisasi.

> [!TIP]
> Temukan model yang sudah di-kuantisasi sebelumnya dengan FP-Quant di [koleksi](https://huggingface.co/collections/ISTA-DASLab/fp-quant-6877c186103a21d3a02568ee) resmi ISTA-DASLab.

## torch.compile

FP-Quant sepenuhnya kompatibel dengan [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)
```

## Percepatan

FP-Quant saat ini memberikan hasil terbaik untuk pemrosesan dengan ukuran batch yang sangat besar.

Lihat [README QuTLASS](https://github.com/IST-DASLab/qutlass/blob/main/README.md) untuk percepatan.

