# FP-Quant

[FP-Quant](https://github.com/IST-DASLab/FP-Quant) هو عائلة من خوارزميات التكميم مصممة خصيصاً لجيل Blackwell من وحدات معالجة الرسوميات من Nvidia. يهدف إلى تمكين التكميم بعد التدريب (PTQ) والتدريب الواعي بالتكميم (QAT) بكفاءة لنماذج اللغة الكبيرة (LLMs) باستخدام [أنواع البيانات MXFP4 وNVFP4](https://www.opencompute.org/documents/ocp-microscaling-formats-mx-v1-0-spec-final-pdf).

ترافق هذه التكاملات مع النسخة المسبقة من ورقة [**جسر الفجوة بين الوعد والأداء في تكميم Microscaling FP4**](https://arxiv.org/abs/2509.23202).

حالياً، يُدعم `pseudoquantization=True` فقط مع QAT. يمكن تكميم النماذج أثناء التشغيل باستخدام `quantization_config=FPQuantConfig()`:

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, FPQuantConfig
import torch

model = AutoModelForCausalLM.from_pretrained(
    "qwen/Qwen3-8B",
    quantization_config=FPQuantConfig(),
    device_map="auto",
    dtype=torch.bfloat16,
)
```

أو مُعالَجة مسبقًا باستخدام GPTQ للحصول على جودة أفضل (انظر [FP Format Quantization Harness](https://github.com/IST-DASLab/FP-Quant)).

يمكنك الاختيار بين MXFP4 وNVFP4 باستخدام `FPQuantConfig(forward_dtype="mxfp4")`. يوفر NVFP4 جودة أفضل لكنه يستهلك ذاكرة أكبر قليلاً.

يتطلب تشغيل النوى **وحدة معالجة رسومية من جيل Blackwell**. يتم تنفيذ دعم وقت التشغيل لـ FP-Quant من خلال مكتبة [QuTLASS](https://github.com/IST-DASLab/qutlass) وواجهة PyTorch خفيفة الوزن باسم [`fp_quant`](https://github.com/IST-DASLab/FP-Quant/tree/master/inference_lib). ننصح بتثبيت الأولى **من المصدر** والثانية باستخدام `pip install fp_quant`.

يمكن للمستخدمين **الذين لا يملكون معالجًا رسوميًا من جيل Blackwell** استخدام الطريقة مع `quantization_config=FPQuantConfig(pseudoquantization=True)` دون الحاجة إلى تثبيت [QuTLASS](https://github.com/IST-DASLab/qutlass). لن يوفر هذا أي تسريع، لكنه سيحاكي تأثير التكميم بالكامل.

> [!TIP]
> ابحث عن نماذج مُكمّاة مسبقًا باستخدام FP-Quant في [المجموعة](https://huggingface.co/collections/ISTA-DASLab/fp-quant-6877c186103a21d3a02568ee) الرسمية لـ ISTA-DASLab.

## torch.compile

FP-Quant متوافق تمامًا مع [torch.compile](https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html).

```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, FPQuantConfig

model = AutoModelForCausalLM.from_pretrained(
    "qwen/Qwen3-8B",
    quantization_config=FPQuantConfig(),
    device_map="auto",
    dtype=torch.bfloat16,
)

model.forward = torch.compile(model.forward, mode="max-autotune", fullgraph=True)
```

## التسريع

يحقق FP-Quant أفضل أداء حاليًا عند معالجة أحجام دفعات كبيرة جدًا.

راجع [README الخاص بـ QuTLASS](https://github.com/IST-DASLab/qutlass/blob/main/README.md) لمعرفة تفاصيل التسريع.

