# NVFP4

تقوم عملية التكميم NVFP4 بضغط أوزان الطبقات الخطية ذات الدقة الكاملة إلى تنسيق NVIDIA النقدي العائم ذي 4 بت أثناء تحميل النموذج. يستبدل [NVFP4Config](/docs/transformers/main/ar/main_classes/quantization#transformers.NVFP4Config) وحدات `torch.nn.Linear` المؤهلة التي لا تحتوي على انحراف (bias)، والتي يكون كلا من `in_features` و`out_features` فيها قابلين للقسمة على 16، بتنفيذ خطي NVFP4 من [NVFP4 Hub kernel](https://huggingface.co/kernels-community/nvfp4-gemm). لا يتم استبدال واجهات الانتباه (attention) وشبكات MLP في النموذج.

> [!TIP]
> يتطلب NVFP4 معالجًا رسوميًا من Blackwell بقدرته الحاسوبية 10.0 أو أحدث، وبناءً متوافقًا من PyTorch يدعم CUDA، وحزمة [kernels](https://github.com/huggingface/kernels).

قم بتثبيت Accelerate وإصدار متوافق من `kernels`.

```bash
pip install --upgrade accelerate kernels
```

مرّر [NVFP4Config](/docs/transformers/main/ar/main_classes/quantization#transformers.NVFP4Config) إلى [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) مع جهاز CUDA واحد. يتم تكميم الأوزان أثناء تحميلها، لذا يجب أن يحتوي نقطة الفحص المصدرية على أوزان بنقاط عائمة.

```py
import torch

from transformers import AutoModelForCausalLM, AutoTokenizer, NVFP4Config

model_id = "meta-llama/Llama-3.2-1B"
quantization_config = NVFP4Config()
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    dtype=torch.bfloat16,
    device_map="cuda",
    quantization_config=quantization_config,
)

tokenizer = AutoTokenizer.from_pretrained(model_id)
inputs = tokenizer("NVFP4 is", return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(output[0], skip_special_tokens=True))
```

استخدم `modules_to_not_convert` للحفاظ على وحدات محددة في دقتها الأصلية.

```py
quantization_config = NVFP4Config(modules_to_not_convert=["vision", "lm_head"])
```

تدعم وحدات NVFP4 الخطية `torch.compile`. تتضمن الاستدعاء المُجمَّع الأول وقت تجميع الرسم البياني، لذا قم بإحماء النموذج قبل قياس معدل إنتاجية التوليد.

## القيود الحالية

- يُؤيَّد جهاز CUDA واحد فقط. تُرفض تهيئة موازاة الموترات (Tensor parallelism) وتكوينات `device_map` متعددة الأجهزة حتى يتم تحديد سلوك تقسيم بيانات NVFP4 scale metadata.
- لا يُدعم تفريغ المعالج المركزي والقرص.
- لا يتم دعم نقاط التفتيش NVFP4 المُكمّاة مسبقًا.
- لا يمكن حاليًا تسلسل نماذج NVFP4 باستخدام [save_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.save_pretrained) أو تدريبها.

