Transformers documentation
Quatro sobre seis
Quatro sobre seis
Four Over Six é uma biblioteca para realizar quantização FP4 rápida e precisa, especialmente com o formato NVFP4 em GPUs NVIDIA Blackwell. Nosso método escala adaptativamente os blocos NVFP4 para 4 ou 6, a fim de reduzir o erro de quantização em valores próximos do máximo em cada bloco, conforme descrito em nosso preprint.

Nossa implementação é mais eficiente em GPUs NVIDIA Blackwell. No entanto, você pode executar o Four Over Six em hardware mais antigo e até em CPUs, sem nenhuma alteração de código, pois, nesses casos, nosso framework faz automaticamente o fallback para uma implementação que realiza a simulação com multiplicação de matrizes em FP32.
Para quantizar um modelo para NVFP4 com 4/6, você pode carregar seu modelo da seguinte forma:
from transformers import AutoModelForCausalLM, FourOverSixConfig
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3-8B",
device_map="auto",
quantization_config=FourOverSixConfig(),
)Suportamos diversas opções de quantização comumente utilizadas durante a quantização NVFP4, incluindo a transformada aleatória de Hadamard, escalonamento em blocos 2D, entradas transpostas e arredondamento estocástico, conforme descrito em nosso pré-impresso.
Essas opções podem ser usadas definindo a opção apropriada no FourOverSixConfig passado acima.
Camadas individuais podem receber opções de quantização personalizadas definindo module_config_overrides, ou serem excluídas da quantização definindo modules_to_not_convert, conforme mostrado abaixo.
Treinamento
A nossa camada linear quantizada contém uma implementação do passo de retropropagação, de modo que muitos modelos podem ser treinados com poucas modificações.
Certifique-se de definir keep_master_weights como True e de excluir camadas da quantização conforme necessário (frequentemente é importante manter as últimas camadas de uma rede em alta precisão):
from transformers import AutoModelForCausalLM, FourOverSixConfig
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3-8B",
device_map="auto",
quantization_config=FourOverSixConfig(
keep_master_weights=True,
modules_to_not_convert=[
"lm_head",
"model.layers.34.self_attn.q_proj",
"model.layers.34.self_attn.k_proj",
"model.layers.34.self_attn.v_proj",
# Add more layers here, e.g. self_attn.o_proj, MLP layers
],
),
)