Transformers documentation

NVFP4

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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_map sã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.
Update on GitHub