# نظرة عامة

تُخزّن عملية التكميم أوزان النموذج، وأحياناً تنشيطاته، بعدد أقل من البتات بحيث يحتاج النموذج إلى ذاكرة أقل. عادةً ما يتم تحميل النماذج بصيغة bf16، والتي تستهلك بايتين لكل معامل. يحتاج نموذج بحجم 8B إلى حوالي 16GB لأوزانه بصيغة bf16، وحوالي 8GB عند 8 بت، وحوالي 4–5GB عند 4 بت. يؤدي استخدام عدد أقل من البتات إلى خسارة بعض الدقة، ويجري كل أسلوب تكميم موازنة مختلفة بين الذاكرة والسرعة والدقة.

تدمج Transformers أكثر من 20 طريقة لتكميم الأوزان عبر [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained)، مما يتيح لك استخدام نفس كود التحميل بغض النظر عن الطريقة التي تختارها.

## طريقتان لاستخدام نموذج مُكمَّم

يعتمد استخدامك للتكميم على ما إذا كان نقطة الحفظ الخاصة بك مُكمَّمة بالفعل.

| لديك | ما تفعله | الطرق |
|---|---|---|
| نقطة تفتيش بدقة كاملة | مرّر إعدادات التكميم إلى `from_pretrained`، وسيتم تكميم الأوزان أثناء تحميلها. | [تكميم النموذج أثناء تحميله](#quantize-a-model-while-loading) |
| نقطة تفتيش تم كميّتها مسبقًا | استدعِ `from_pretrained` دون إعداد كميّة. يقرأ Transformers الطريقة من ملف `config.json` الخاص بالنقطة المحفوظة، أو من ملف GGUF الذي تحدده. | [تحميل نقطة تفتيش مُكمّاة مسبقًا](#load-a-pre-quantized-checkpoint) |

بعض الطرق، مثل AWQ وAutoRound وAQLM وcompressed-tensors وGGUF، لا يمكن تحميلها إلا من نقطة تفتيش (checkpoint). تقوم أولاً بكمّ النموذج باستخدام مكتبة الطريقة الخاصة بها، ثم تُحمّل النتيجة في Transformers.

## تكميم النموذج أثناء تحميله

أنشئ فئة الإعدادات الخاصة بالطريقة وقم بتمريرها إلى `quantization_config`. يوضح المثال أدناه كيفية تحميل نموذج بحجم 8B بدقة 4 بت باستخدام [bitsandbytes](./bitsandbytes).

```py
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.bfloat16,
)
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B-Instruct",
    quantization_config=quantization_config,
    device_map="auto",
)
```

لكل طريقة في هذه المجموعة فئة إعداد خاصة بها، مثل [TorchAoConfig](/docs/transformers/main/ar/main_classes/quantization#transformers.TorchAoConfig) أو [BitsAndBytesConfig](/docs/transformers/main/ar/main_classes/quantization#transformers.BitsAndBytesConfig). ولا تحتاج معظمها إلى مجموعة بيانات للمعايرة. [GPTQ](./gptq) هي الاستثناء، لأنها تُجري المعايرة على مجموعة بيانات أثناء تحميل النموذج.

## تحميل نقطة تحقق مُكمّاة مسبقًا

تُخزّن نقطة تفتيش مُكمّاة مسبقًا `quantization_config` في ملف `config.json`. عند العثور عليها بواسطة `from_pretrained`، يتم اختيار مُكمّم المطابق تلقائيًا.

```py
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "TheBloke/zephyr-7B-alpha-AWQ",
    device_map="auto",
)
print(model.config.quantization_config.quant_method)
```

قم بتثبيت المكتبة التي يعتمد عليها الأسلوب قبل تحميل نقطة التفتيش. تُدرج صفحة كل أسلوب ما يجب تثبيته. لتغيير خيارات التحميل، مثل أي نواة خلفية (kernel backend) ستُشغَّل، مرّر إعدادًا (config) من النوع نفسه. تُدمج خياراته مع تلك المخزنة في نقطة التفتيش.

### نقاط التفتيش GGUF

نقطة التفتيش بصيغة GGUF هي ملف واحد يحتوي على الأوزان والإعدادات ومقسّم الرموز، ولا يحتوي على `config.json` ليقرأه `from_pretrained`. حدّد اسم الملف باستخدام `gguf_file`.

```py
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "unsloth/Qwen3.5-4B-GGUF",
    gguf_file="Qwen3.5-4B-Q4_K_M.gguf",
)
```

تُفكّك معظم نماذج GGUF إلى الدقة الكاملة عند تحميلها، لذا تستهلك قدرًا من الذاكرة يعادل ذلك الخاص بنموذج غير مُكمَّم. تبقى الأوزان مضغوطة فقط على MPS عند تثبيت حزمة [kernels](https://huggingface.co/docs/kernels/index)، وذلك لنموذجي Qwen3.5 وQwen3.5 MoE. راجع [GGUF](./gguf) للاطلاع على التفاصيل.

## حفظ نموذج مُكمَّم

استدعِ [save_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.save_pretrained) أو [push_to_hub()](/docs/transformers/main/ar/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub) لحفظ الأوزان المُكمّاة وإعدادات `quantization_config` الخاصة بها. لا يمكن لكل طريقة حفظ أوزانها المُكمّاة.

## اختر طريقة

يوصي [اختيار طريقة](./selecting) بنقطة انطلاق للأهداف الشائعة ويقارن كل طريقة من حيث العتاد، وعرض البت، والتوفير، وضبط الدقة، ودعم `torch.compile`. استخدم [محدد التكميم](https://huggingface.co/spaces/stevhliu/quantization-picker) للتحقق مما إذا كان النموذج يتسع في ذاكرة عتادك عند كل دقة.

## أدوات أخرى

تقوم هذه الأدوات بتكميم النماذج خارج مكتبة Transformers.

- يقوم [Optimum](https://huggingface.co/docs/optimum/index) بتكميم النماذج لأجهزة وبرامج تشغيل محددة، مثل معالجات Intel وONNX Runtime.
- تقوم مساحات Hub Spaces بتكميم نموذج ودفع النتيجة إلى حسابك: [bitsandbytes](https://huggingface.co/spaces/bnb-community/bnb-my-repo)، [GGUF](https://huggingface.co/spaces/ggml-org/gguf-my-repo)، و[MLX](https://huggingface.co/spaces/mlx-community/mlx-my-repo).

## الموارد

- دورة [أساسيات التكميم مع Hugging Face](https://www.deeplearning.ai/short-courses/quantization-fundamentals-with-hugging-face/)
- دورة [التكميم بالتفصيل](https://www.deeplearning.ai/short-courses/quantization-in-depth)

## الخطوات التالية

- اقرأ [مفاهيم التكميم](./concept_guide) لمعرفة كيفية عمل مخططات التكميم، والحُبيبية، والتقنيات.
- قم بتكميم ذاكرة KV cache لتوفير الذاكرة أثناء التوليدات الطويلة باستخدام [quantized cache](../kv_cache#quantized-cache).
- قم بتكميم النموذج أثناء تصديره باستخدام [تصدير التكميم](../exporters_quantization).
- ساهم في إضافة طريقة جديدة باستخدام [مساهمة طريقة كمّية](./contribute).

