# FP-Quant

[FP-Quant](https://github.com/IST-DASLab/FP-Quant) là một nhóm các thuật toán lượng tử hóa được thiết kế riêng cho thế hệ GPU Blackwell của Nvidia. Mục tiêu là cho phép lượng tử hóa sau huấn luyện (PTQ) và huấn luyện nhận thức lượng tử hóa (QAT) hiệu quả cho các LLM với [kiểu dữ liệu MXFP4 và NVFP4](https://www.opencompute.org/documents/ocp-microscaling-formats-mx-v1-0-spec-final-pdf).

Tích hợp này đi kèm với bản pre-print của [**Bridging the Gap Between Promise and Performance for Microscaling FP4 Quantization**](https://arxiv.org/abs/2509.23202).

Hiện tại, chỉ có QAT được hỗ trợ với `pseudoquantization=True`. Mô hình có thể được lượng tử hóa trực tiếp với `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,
)
```

hoặc đã được tiền xử lý bằng GPTQ để đạt chất lượng tốt hơn (xem [FP Format Quantization Harness](https://github.com/IST-DASLab/FP-Quant)).

Bạn có thể chọn giữa MXFP4 và NVFP4 bằng `FPQuantConfig(forward_dtype="mxfp4")`. NVFP4 cung cấp chất lượng tốt hơn nhưng sử dụng nhiều bộ nhớ hơn một chút.

Một **GPU thế hệ Blackwell là bắt buộc** để chạy các kernel. Hỗ trợ runtime cho FP-Quant được triển khai thông qua thư viện [QuTLASS](https://github.com/IST-DASLab/qutlass) và một thư viện giao diện PyTorch nhẹ [`fp_quant`](https://github.com/IST-DASLab/FP-Quant/tree/master/inference_lib). Chúng tôi khuyến nghị cài đặt cái trước **từ mã nguồn** và cái sau bằng  `pip install fp_quant`.

Người dùng **không có GPU thế hệ Blackwell** có thể sử dụng phương pháp với `quantization_config=FPQuantConfig(pseudoquantization=True)` mà không cần cài đặt [QuTLASS](https://github.com/IST-DASLab/qutlass). Cách này sẽ không mang lại tốc độ nhanh hơn nhưng sẽ mô phỏng hoàn toàn hiệu ứng của lượng tử hóa.

> [!TIP]
> Tìm các model đã được lượng tử hóa trước bằng FP-Quant trong [bộ sưu tập](https://huggingface.co/collections/ISTA-DASLab/fp-quant-6877c186103a21d3a02568ee) chính thức của ISTA-DASLab.

## torch.compile

FP-Quant tương thích hoàn toàn với [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)
```

## Tăng tốc

FP-Quant hiện đạt hiệu suất tốt nhất khi xử lý với kích thước lô (batch size) rất lớn.

Xem [README của QuTLASS](https://github.com/IST-DASLab/qutlass/blob/main/README.md) để biết về các cải thiện tốc độ.

