Transformers documentation
NVFP4
NVFP4
A quantização NVFP4 empacota os pesos lineares de precisão completa no formato de ponto flutuante de 4 bits da NVIDIA enquanto o modelo é carregado. NVFP4Config substitui os módulos torch.nn.Linear elegíveis, sem viés, cujos in_features e out_features são ambos divisíveis por 16, por uma implementação linear NVFP4 do NVFP4 Hub kernel. As interfaces de atenção e MLP do modelo não são substituídas.
O NVFP4 requer uma GPU Blackwell com capacidade de computação 10.0 ou mais recente, uma build compatível do PyTorch habilitada para CUDA e o pacote kernels.
Instale o Accelerate e uma versão compatível do kernels.
pip install --upgrade accelerate kernels
Passe NVFP4Config para from_pretrained() com um único dispositivo CUDA. Os pesos são quantizados conforme são carregados, portanto, o checkpoint de origem deve conter pesos em ponto flutuante.
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))Use modules_to_not_convert para manter módulos selecionados em sua precisão original.
quantization_config = NVFP4Config(modules_to_not_convert=["vision", "lm_head"])Os módulos lineares NVFP4 têm suporte a torch.compile. A primeira invocação compilada inclui o tempo de compilação do grafo, portanto, aqueça o modelo antes de medir o throughput de geração.
Limitações atuais
- Apenas um dispositivo CUDA é suportado. Configurações de paralelismo de tensor e de múltiplos dispositivos com
device_mapsão rejeitadas até que o comportamento de sharding dos metadados de escala NVFP4 seja definido. - O offload para CPU e disco não é suportado.
- Checkpoints NVFP4 pré-quantizados não são suportados.
- Modelos NVFP4 não podem, no momento, ser serializados com save_pretrained() nem treinados.