Transformers documentation

NVFP4

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

NVFP4

Квантование NVFP4 упаковывает веса линейных слоёв с полной точностью в 4-битный формат с плавающей запятой NVIDIA при загрузке модели. NVFP4Config заменяет подходящие модули torch.nn.Linear без смещения, у которых in_features и out_features делятся на 16, на реализацию линейного слоя NVFP4 из NVFP4 Hub kernel. Интерфейсы внимания и MLP модели не заменяются.

NVFP4 требует GPU Blackwell с вычислительной способностью 10.0 или выше, совместимую сборку PyTorch с поддержкой CUDA, а также пакет kernels.

Установите Accelerate и совместимую версию kernels.

pip install --upgrade accelerate kernels

Передайте NVFP4Config в from_pretrained() с одним устройством CUDA. Веса квантуются по мере загрузки, поэтому исходная контрольная точка должна содержать веса с плавающей точкой.

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, чтобы сохранить выбранные модули в исходной точности.

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

Линейные модули NVFP4 поддерживают torch.compile. Первое скомпилированное вызывание включает время компиляции графа, поэтому прогрейте модель перед измерением пропускной способности генерации.

Текущие ограничения

  • Поддерживается только одно CUDA-устройство. Конфигурации с тензорным параллелизмом и многоустройственной device_map отклоняются, пока не будет определено поведение шардирования метаданных масштаба NVFP4.
  • Оффлоад на CPU и диск не поддерживается.
  • Чекпоинты NVFP4 с предварительным квантованием не поддерживаются.
  • Модели NVFP4 в настоящее время не поддерживают сериализацию с помощью save_pretrained() и обучение.
Update on GitHub