# NVFP4

Kuantisasi NVFP4 mengemas bobot linear presisi penuh ke dalam format floating-point 4-bit NVIDIA saat model dimuat. [NVFP4Config](/docs/transformers/main/id/main_classes/quantization#transformers.NVFP4Config) mengganti modul `torch.nn.Linear` yang memenuhi syarat dan bebas bias, di mana `in_features` dan `out_features` keduanya habis dibagi 16, dengan implementasi linear NVFP4 dari [NVFP4 Hub kernel](https://huggingface.co/kernels-community/nvfp4-gemm). Antarmuka perhatian dan MLP model tidak diganti.

> [!TIP]
> NVFP4 memerlukan GPU Blackwell dengan compute capability 10.0 atau lebih baru, build PyTorch yang kompatibel dengan CUDA, dan paket [kernels](https://github.com/huggingface/kernels).

Instal Accelerate dan versi `kernels` yang kompatibel.

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

Lewatkan [NVFP4Config](/docs/transformers/main/id/main_classes/quantization#transformers.NVFP4Config) ke [from_pretrained()](/docs/transformers/main/id/main_classes/model#transformers.PreTrainedModel.from_pretrained) dengan satu perangkat CUDA. Bobot dikuantisasi saat dimuat, sehingga checkpoint sumber harus berisi bobot floating-point.

```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))
```

Gunakan `modules_to_not_convert` untuk mempertahankan modul tertentu pada presisi aslinya.

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

Modul linear NVFP4 mendukung `torch.compile`. Panggilan terkompilasi pertama mencakup waktu kompilasi graf, sehingga hangatkan model sebelum mengukur throughput generasi.

## Batasan saat ini

- Hanya satu perangkat CUDA yang didukung. Konfigurasi paralel tensor dan multi-perangkat `device_map` ditolak hingga perilaku sharding metadata skala NVFP4 didefinisikan.
- CPU dan disk offload tidak didukung.
- Checkpoint NVFP4 yang sudah di-kuantisasi sebelumnya tidak didukung.
- Model NVFP4 saat ini tidak dapat diserialisasi dengan [save_pretrained()](/docs/transformers/main/id/main_classes/model#transformers.PreTrainedModel.save_pretrained) atau dilatih.

