# FP-Quant

[FP-Quant](https://github.com/IST-DASLab/FP-Quant)は、Nvidia GPUのBlackwell世代向けに設計された量子化アルゴリズムのファミリーです。その目的は、[MXFP4およびNVFP4データ型](https://www.opencompute.org/documents/ocp-microscaling-formats-mx-v1-0-spec-final-pdf)において、LLMの効率的な学習後量子化（PTQ）および量子化認識学習（QAT）を可能にすることです。

この統合は、[**Microscaling FP4 量子化における期待と性能のギャップを埋める**](https://arxiv.org/abs/2509.23202) プレプリントに付随するものです。

現在、`pseudoquantization=True`でのQATのみがサポートされています。モデルは、`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,
)
```

または、[FP Format Quantization Harness](https://github.com/IST-DASLab/FP-Quant)を参照して、より高い品質を得るためにGPTQで前処理を行ってください。

`FPQuantConfig(forward_dtype="mxfp4")` を使用して、MXFP4 と NVFP4 のいずれかを選択できます。NVFP4 はより高い品質を提供しますが、メモリ使用量がわずかに多くなります。

カーネルの実行には、**Blackwell世代のGPUが必要です**。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`でインストールすることをお勧めします。

**Blackwell世代のGPUを持っていない**ユーザーは、[QuTLASS](https://github.com/IST-DASLab/qutlass)をインストールせずに、`quantization_config=FPQuantConfig(pseudoquantization=True)`を指定してこのメソッドを使用できます。これにより速度向上は得られませんが、量子化の効果を完全にエミュレートできます。

> [!TIP]
> FP-Quantで事前量子化されたモデルは、ISTA-DASLabの公式[コレクション](https://huggingface.co/collections/ISTA-DASLab/fp-quant-6877c186103a21d3a02568ee)でご利用いただけます。

## 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 は、非常に大きなバッチサイズでの処理において、現時点で最高のパフォーマンスを発揮します。

高速化の詳細については、[QuTLASS README](https://github.com/IST-DASLab/qutlass/blob/main/README.md)を参照してください。

