Transformers documentation

四比六

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

四比六

Four Over Six 是一个用于执行快速且精确的 FP4 量化的库,尤其适用于在 NVIDIA Blackwell GPU 上使用 NVFP4 格式。 正如我们在 预印本 中所述,我们的方法会自适应地将 NVFP4 块缩放为 4 或 6,以降低每个块中接近最大值处的量化误差。

Four Over Six visual explanation

我们的实现在 NVIDIA Blackwell GPU 上运行效率最高。 不过,您也可以在较旧的硬件甚至 CPU 上运行 Four Over Six,且无需修改任何代码,因为在这些情况下,我们的框架会自动回退到使用 FP32 矩阵乘法进行仿真的实现。

要将模型量化为 NVFP4 4/6,您可以按以下方式加载模型:

from transformers import AutoModelForCausalLM, FourOverSixConfig

model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-8B",
    device_map="auto",
    quantization_config=FourOverSixConfig(),
)

我们支持在 NVFP4 量化过程中常用的多种量化选项,包括随机 Hadamard 变换、2D 块缩放、转置输入和随机舍入,具体描述见我们的预印本。 您可以通过在上方传入的 FourOverSixConfig 中设置相应选项来使用这些功能。 如下所示,您可以通过设置 module_config_overrides 为单独的层指定自定义量化选项,或通过设置 modules_to_not_convert 将某些层排除在量化之外。

训练

我们的量化线性层包含反向传播实现,因此许多模型只需少量修改即可继续训练。 请确保将 keep_master_weights 设置为 True,并根据需要排除某些层不进行量化(通常保留网络最后几层的高精度非常重要):

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
        ],
    ),
)
Update on GitHub