# NVFP4

NVFP4量子化は、モデルの読み込み時に、フルプレシションの線形重みをNVIDIAの4ビット浮動小数点形式にパッキングします。[NVFP4Config](/docs/transformers/main/ja/main_classes/quantization#transformers.NVFP4Config)は、バイアスを持たず、かつ`in_features`と`out_features`の両方が16で割り切れる`torch.nn.Linear`モジュールを、[NVFP4 Hubカーネル](https://huggingface.co/kernels-community/nvfp4-gemm)のNVFP4線形実装に置き換えます。モデルのattentionおよびMLPインターフェースは置き換えられません。

> [!TIP]
> NVFP4には、計算能力10.0以上のBlackwell GPU、互換性のあるCUDA対応のPyTorchビルド、および[kernels](https://github.com/huggingface/kernels)パッケージが必要です。

Accelerate と互換性のあるバージョンの `kernels` をインストールします。

```bash
pip install --upgrade accelerate kernels
```

単一の CUDA デバイスで [from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) に [NVFP4Config](/docs/transformers/main/ja/main_classes/quantization#transformers.NVFP4Config) を渡します。重みは読み込み時に量子化されるため、ソースのチェックポイントには浮動小数点の重みが含まれている必要があります。

```py
import torch

from transformers import AutoModelForCausalLM, AutoTokenizer, NVFP4Config

model_id = "meta-llama/Llama-3.2-1B"
quantization_config = NVFP4Config()
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    dtype=torch.bfloat16,
    device_map="cuda",
    quantization_config=quantization_config,
)

tokenizer = AutoTokenizer.from_pretrained(model_id)
inputs = tokenizer("NVFP4 is", return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(output[0], skip_special_tokens=True))
```

`modules_to_not_convert` を使用して、選択したモジュールを元の精度のままに保ちます。

```py
quantization_config = NVFP4Config(modules_to_not_convert=["vision", "lm_head"])
```

NVFP4 linearモジュールは`torch.compile`をサポートしています。最初のコンパイル済み呼び出しにはグラフのコンパイル時間が含まれるため、生成スループットを測定する前にモデルをウォームアップしてください。

## 現在の制限事項

- CUDA デバイスは 1 つのみサポートされています。NVFP4 スケールメタデータのシャーディング動作が定義されるまで、テンソル並列およびマルチデバイスの `device_map` 設定は拒否されます。
- CPUおよびディスクへのオフロードはサポートされていません。
- 事前量子化済みのNVFP4チェックポイントはサポートされていません。
- NVFP4モデルは、現在[save_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.save_pretrained)によるシリアライズや学習に対応していません。

