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.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

أربعة من ستة

Four Over Six هي مكتبة لتنفيذ تكميم FP4 بسرعة ودقة، لا سيما باستخدام تنسيق NVFP4 على وحدات معالجة الرسوميات NVIDIA Blackwell. يعتمد أسلوبنا على تحجيم كتل NVFP4 بشكل تكيفي إلى 4 أو 6 لتقليل خطأ التكميم على القيم القريبة من الحد الأقصى في كل كتلة، كما هو موضح في ورقتنا المسبقة.

Four Over Six visual explanation

يعمل تنفيذنا بكفاءة قصوى على وحدات معالجة الرسوميات NVIDIA Blackwell. ومع ذلك، يمكنك تشغيل Four Over Six على أجهزة أقدم، وحتى على وحدات المعالجة المركزية (CPUs)، دون إجراء أي تغييرات على الكود، ففي هذه الحالات يتراجع إطار عملنا تلقائياً إلى تنفيذ يقوم بمحاكاة الضرب المصفوفي بدقة FP32.

للتكميم نموذج إلى NVFP4 بنسبة 4/6، يمكنك تحميل نموذجك على النحو التالي:

from transformers import AutoModelForCausalLM, FourOverSixConfig

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

ندعم العديد من خيارات التكميم المختلفة التي تُستخدم عادةً أثناء تكميم NVFP4، بما في ذلك تحويل هادامارد العشوائي، والتدرّج على مستوى الكتل ثنائية الأبعاد، والمدخلات المحوّرة، والتدوير العشوائي، كما هو موضح في ورقتنا المسبقة. يمكن استخدام هذه الخيارات من خلال ضبط الخيار المناسب في FourOverSixConfig المُمرَّر أعلاه. يمكن منح طبقات فردية خيارات تكميم مخصصة من خلال ضبط module_config_overrides، أو استبعادها من التكميم من خلال ضبط modules_to_not_convert، كما هو موضح أدناه.

التدريب

تحتوي طبقة الخطي المُكمّمة لدينا على تنفيذ لمرحلة الرجوع (backward pass)، مما يتيح تدريب العديد من النماذج بشكل إضافي مع تعديلات قليلة. تأكد من تعيين 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