Transformers documentation

Empat dari Enam

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

Empat dari Enam

Four Over Six adalah pustaka untuk melakukan kuantisasi FP4 yang cepat dan akurat, khususnya dengan format NVFP4 pada GPU NVIDIA Blackwell. Metode kami secara adaptif menskalakan blok NVFP4 menjadi 4 atau 6 untuk mengurangi error kuantisasi pada nilai-nilai yang mendekati maksimum di setiap blok, seperti yang dijelaskan dalam preprint kami.

Four Over Six visual explanation

Implementasi kami berjalan paling efisien pada GPU NVIDIA Blackwell. Namun, Anda tetap dapat menjalankan Four Over Six pada perangkat keras yang lebih lama, bahkan pada CPU, tanpa perlu mengubah kode, karena dalam kasus-kasus tersebut framework kami secara otomatis beralih ke implementasi yang melakukan simulasi dengan perkalian matriks FP32.

Untuk mengkuantisasi model ke NVFP4 dengan 4/6, Anda dapat memuat model Anda sebagai berikut:

from transformers import AutoModelForCausalLM, FourOverSixConfig

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

Kami mendukung berbagai opsi kuantisasi yang umum digunakan selama kuantisasi NVFP4, termasuk transformasi Hadamard acak, penskalaan blok 2D, input yang ditranspos, dan pembulatan stokastik, sebagaimana dijelaskan dalam preprint kami. Opsi-opsi ini dapat digunakan dengan mengatur opsi yang sesuai pada FourOverSixConfig yang diteruskan di atas. Lapisan individual dapat diberikan opsi kuantisasi khusus dengan mengatur module_config_overrides, atau dikecualikan dari kuantisasi dengan mengatur modules_to_not_convert, seperti yang ditunjukkan di bawah ini.

Pelatihan

Lapisan linear terkuantisasi kami berisi implementasi jalur mundur, sehingga banyak model dapat dilatih lebih lanjut dengan sedikit modifikasi. Pastikan untuk mengatur keep_master_weights ke True, dan mengecualikan lapisan dari kuantisasi sesuai kebutuhan (sering kali penting untuk mempertahankan beberapa lapisan terakhir jaringan dalam presisi tinggi):

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