Transformers documentation

4 over 6

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

4 over 6

Four Over Sixは、NVIDIA Blackwell GPU上でNVFP4形式を用いた高速かつ高精度なFP4量子化を実行するためのライブラリです。 当社の手法では、各ブロック内のほぼ最大値における量子化誤差を低減するために、NVFP4ブロックを4または6に適応的にスケーリングします。詳細はプレプリントに記載しています。

Four Over Six visual explanation

当社の実装は、NVIDIA Blackwell GPU 上で最も効率的に動作します。 ただし、Four Over Six は古いハードウェアや CPU でも、コードの変更なしで実行できます。これらの場合、当社のフレームワークは自動的に FP32 行列積によるシミュレーションを行う実装にフォールバックします。

4/6でモデルをNVFP4に量子化するには、次のようにモデルを読み込むことができます。

from transformers import AutoModelForCausalLM, FourOverSixConfig

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

NVFP4量子化で一般的に使用される多くの量子化オプションをサポートしています。これには、プレプリントで説明されているランダムハダマード変換、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