مستوى المقال: مبتدئ
لو عايز تشغّل نموذج ذكاء اصطناعي قوي زي Llama 3 على لابتوبك العادي من غير ما تشتري كرت شاشة بآلاف الدولارات، الـ Quantization هو اللي هيخليها تحصل. هتاخد نموذج حجمه 16 جيجابايت وتشغّله في 4.5 جيجابايت بس، على معالج Intel أو Apple أو AMD عادي.
Quantization: تصغير النموذج علشان يشتغل على جهاز صغير
المشكلة باختصار
نموذج Llama 3 8B فيه 8 مليار رقم (parameter). كل رقم متخزّن بدقة 16-bit. الحساب البسيط: 8 مليار × 2 بايت = 16 جيجابايت تقريبًا. ده معناه إنك محتاج كرت شاشة بـ 16GB ذاكرة على الأقل، وده غالي ومش موجود في اللابتوبات العادية. النتيجة: أغلب الناس بتفتكر إن تشغيل النماذج دي محليًا مستحيل. وده مش صح.
المثال الأول: صورة الكاميرا
تخيّل إنك صوّرت صورة بكاميرا احترافية بصيغة RAW. الصورة دقيقة جدًا، كل لون فيها متخزّن بتفاصيل عالية، لكن حجمها 50 ميجابايت. لو حفظتها JPEG بجودة 85%، حجمها هيبقى 4 ميجابايت. عينك بالكاد هتفرّق بين الاتنين، بس الحجم اتقسّم على 12.
الـ Quantization بيعمل نفس الفكرة بالظبط، بس على أرقام النموذج بدل الألوان. بدل ما نخزّن كل رقم بدقة 16-bit، بنخزّنه بـ 4-bit. بنخسر شوية دقة صغيرة، بس بنكسب تخفيض هائل في الحجم والذاكرة.
يعني إيه Quantization بالظبط؟
الـ Quantization هو خفض دقة (precision) أوزان النموذج من أرقام عشرية 16-bit إلى أرقام صحيحة 4-bit أو 8-bit. الطريقة المستخدمة اسمها block-wise quantization: بنقسّم الأوزان لمجموعات صغيرة (blocks)، وكل مجموعة بتاخد معامل قياس (scale factor) خاص بيها. ده بيحافظ على القيم الشاذة (outliers) ويقلّل فقد الدقة.
أشهر صيغة دلوقتي اسمها GGUF، وهي ملف واحد بيحتوي الأوزان المكمّمة + إعدادات الـ tokenizer + معلومات المعمارية، من غير ما تحتاج ملفات إعداد إضافية. أشهر مستوى تكميم اسمه Q4_K_M، بيقلّل الحجم لحوالي ربع الأصلي مع جودة قريبة جدًا من الأصل.
إزاي تشغّلها عمليًا في دقيقتين
الافتراض هنا إن عندك لابتوب بـ 8 جيجابايت رام على الأقل ومعالج حديث (Intel i5 وأحدث، أو Apple M1 فأعلى، أو AMD Ryzen). أسهل طريقة هي أداة Ollama:
# بعد تثبيت Ollama من ollama.com
# شغّل نسخة مكمّمة 4-bit من Llama 3 8B مباشرة
ollama run llama3:8b-instruct-q4_K_M
# لو عايز تحكّم أكبر عبر llama.cpp بملف GGUF يدويًا:
./llama-cli -m Llama-3-8B-Instruct.Q4_K_M.gguf \
-p "اشرحلي الـ quantization في جملة" -n 256أول أمر بيحمّل النموذج المكمّم (حوالي 4.7GB) وبيشغّله على الـ CPU على طول. مفيش حاجة اسمها كرت شاشة هنا. الـ llama.cpp بيستفيد تلقائيًا من تعليمات المعالج زي AVX2 و AVX512 لو موجودة عشان يسرّع الحساب.
الأرقام والـ trade-offs
الأرقام التقريبية لاستهلاك الرام لنموذج 8B حسب مستوى التكميم: الدقة الكاملة FP16 حوالي 16GB، و Q8_0 حوالي 8.5GB، و Q4_K_M حوالي 4.5GB. كل خفض في عدد الـ bits بيوفّر رام، بس له ثمن:
- Q4_K_M: بتكسب تشغيل على 8GB رام، بتخسر حوالي 2 إلى 3% من الجودة. ده أفضل توازن للمبتدئ.
- Q8_0: جودة شبه مطابقة للأصل، بس بياكل رام ضعف الـ Q4 تقريبًا.
- السرعة على الـ CPU أبطأ من الـ GPU. توقّع من 5 إلى 15 توكن/ثانية على لابتوب عادي، مش مئات.
- المهام الحسّاسة (كود معقّد، رياضيات دقيقة) ممكن تتأثّر بالتكميم أكتر من المحادثة العادية.
متى متستخدمش الـ Quantization
لو شغّال في production بيخدم آلاف المستخدمين وبتحتاج سرعة عالية ودقة قصوى، الأفضل تستخدم النموذج الكامل على GPU بدل التكميم على CPU. كمان لو مهمتك حسّاسة جدًا للدقة (تشخيص طبي، حسابات مالية دقيقة)، اختبر جودة النسخة المكمّمة كويس قبل ما تعتمد عليها، لأن الفرق الصغير ممكن يفرق هنا.
الخطوة التالية
نزّل Ollama دلوقتي وشغّل الأمر ollama run llama3:8b-instruct-q4_K_M. لو اشتغل وردّ عليك، يبقى عندك نموذج ذكاء اصطناعي كامل شغّال على جهازك بدون إنترنت وبدون كرت شاشة. لو الرام عندك أقل من 8GB، جرّب نموذج أصغر زي phi3:mini بنفس الفكرة.
المصادر
- دليل تكميم GGUF عبر llama.cpp: ggml-org/llama.cpp quantize README
- شرح صيغة GGUF ومستويات التكميم: LLM Quantization Explained: GGUF Guide
- مقارنة Q4_K_M و Q8_0 واستهلاك الذاكرة: LLM Quantization 2026: Q4_K_M vs Q8_0 VRAM Guide
- أرقام الرام لتشغيل النماذج على CPU: Llama.cpp GGUF Quantization Guide 2026
- شرح INT4 و block-wise quantization و AWQ: LLM Quantization Explained: INT4, INT8, FP8, AWQ, GPTQ