Transformers documentation
NVFP4
NVFP4
Kuantisasi NVFP4 mengemas bobot linear presisi penuh ke dalam format floating-point 4-bit NVIDIA saat model dimuat. NVFP4Config mengganti modul torch.nn.Linear yang memenuhi syarat dan tanpa bias, di mana in_features dan out_features keduanya habis dibagi 16, dengan implementasi linear NVFP4 dari NVFP4 Hub kernel. Antarmuka attention dan MLP model tidak diganti.
NVFP4 memerlukan GPU Blackwell dengan compute capability 10.0 atau lebih baru, build PyTorch yang kompatibel dengan CUDA, dan paket kernels.
Instal Accelerate dan versi kernels yang kompatibel.
pip install --upgrade accelerate kernels
Lewatkan NVFP4Config ke from_pretrained() dengan satu perangkat CUDA. Bobot akan dikuantisasi saat dimuat, sehingga checkpoint sumber harus berisi bobot floating-point.
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.
quantization_config = NVFP4Config(modules_to_not_convert=["vision", "lm_head"])Modul linear NVFP4 mendukung torch.compile. Panggilan terkompilasi pertama kali mencakup waktu kompilasi graf, sehingga panaskan model terlebih dahulu sebelum mengukur throughput generasi.
Batasan saat ini
- Hanya satu perangkat CUDA yang didukung. Konfigurasi paralel tensor dan multi-perangkat
device_mapakan ditolak sampai 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() atau dilatih.