أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالعروض
أحمد حايس

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

المنصة مبنية على الوضوح، التطبيق، والنتيجة النافعة: شرح مرتب يساعدك تفهم الأدوات، تكتب كودًا أفضل، وتستخدم الذكاء الاصطناعي بوعي داخل العمل الحقيقي.

تعلم أسرعوصول مباشر للدورات والمسارات من الموبايل.
تنقل أوضحالروابط الأساسية والدعم في مكان واحد بدون تشتيت.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • العروض
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع
محتاج مسار سريع؟
ابدأ من الدوراتتواصل معناالأسئلة الشائعة

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالعروضالمدونةالدخول
الذكاء الاصطناعي

Quantization للمتوسط: شغّل Llama 3 70B على لابتوب 16GB RAM

📅 ٨ مايو ٢٠٢٦⏱ 5 دقائق قراءة
Quantization للمتوسط: شغّل Llama 3 70B على لابتوب 16GB RAM

المستوى: متوسط — تحتاج خلفية أساسية بـ Python وفهم بسيط لتشغيل الموديلات اللغوية.

Quantization: شغّل Llama 3 70B على لابتوب بـ 16GB RAM

لو حاولت تشغّل Llama 3 70B على لابتوبك ووجدت إن الموديل بيحتاج 140GB من VRAM، يعني محتاج سيرفر صناعي بـ$30,000. الـ Quantization بيخلّي نفس الموديل يشتغل على لابتوب 16-32GB RAM، مع فقدان دقة 3-5% بس.

المشكلة باختصار

الموديلات الكبيرة بتُخزَّن بصيغة FP16 (16-bit floating point). كل وزن في الموديل بيشغل بايتين. Llama 3 70B عنده 70 بليون وزن × 2 بايت = 140 جيجا. ده مش هيشتغل غير على H100 أو A100 بسعر فلكي.

الحل اسمه Quantization: ضغط أوزان الموديل من FP16 لـ INT4 (4-bit integer). يعني كل وزن يبقى نص بايت بدل بايتين. النتيجة: 140GB → 35GB → 18GB بعد التحسينات. الموديل يبقى يشتغل على M2 Pro بـ 32GB، أو حتى 16GB مع quantization أقوى شوية.

شبكة عصبية مضيئة تمثّل ضغط الموديلات اللغوية الكبيرة عبر Quantization

مثال للمبتدئ: ضغط الصور في واتساب

تخيّل عندك صورة 4K بحجم 12 ميجا. لما تفتحها على واتساب وتبعتها لصاحبك، واتساب بيضغطها لـ 800 كيلو. الصورة بتفقد دقة بسيطة، بس لسه تشوف الوش والملامح بوضوح.

الـ Quantization بنفس الفكرة بالظبط. الموديل الأصلي زي صورة الـ 4K، الـ quantized version زي نسخة واتساب. بتخسر تفاصيل قليلة جدًا في الإجابات، بس الموديل لسه قادر يفهم ويرد بكفاءة عالية، بفرق ميلاحظوش غير في المهام المعقدة جدًا.

التعريف العلمي الدقيق

Quantization في الـ deep learning هي عملية تحويل أوزان الموديل من تمثيل بدقة عالية (مثل FP16 أو FP32) لتمثيل بدقة أقل (مثل INT8 أو INT4). العملية بتعتمد على معادلتين أساسيتين: scale و zero-point.

Python

# المعادلة الأساسية للـ quantization
quantized_value = round((float_value / scale) + zero_point)

# والعكس (dequantization عند الـ inference):
float_value = (quantized_value - zero_point) * scale

# مثال عملي: ضغط وزن FP16 = 0.7234 لـ INT4
# scale = 0.05, zero_point = 8
# quantized = round(0.7234 / 0.05) + 8 = 14 + 8 = ... وهكذا

الـ scale هو معامل التحجيم اللي بيقلّل المدى من ±65,504 لـ ±8 (في حالة INT4). والـ zero_point هو القيمة اللي تمثّل الصفر في النطاق الجديد. بتُحسب لكل block من الأوزان (عادة 64 أو 128 وزن) عشان نقلل خسارة الدقة الموزّعة.

الأنواع الأساسية للـ Quantization

  1. Post-Training Quantization (PTQ): بنضغط الموديل بعد ما يخلص training. أسرع وأبسط، بس الدقة بتقل شوية أكتر.
  2. Quantization-Aware Training (QAT): الموديل بيتدرب وهو عارف إنه هيتضغط. أعلى دقة، بس يحتاج وقت training طويل.
  3. GGUF/GGML: صيغة ضغط متخصصة لـ CPU inference، شائعة جدًا في llama.cpp وتشتغل على Mac و Windows و Linux.
  4. GPTQ/AWQ: خوارزميات quantization متقدمة بتستخدم calibration data للحفاظ على الدقة في المهام الصعبة.

كود تنفيذي: شغّل Llama 3 70B Q4 محليًا

Bash

# 1) تثبيت llama.cpp على Mac
brew install llama.cpp

# 2) تحميل الموديل من Hugging Face (Q4_K_M = ضغط متوسط الجودة)
huggingface-cli download \
  bartowski/Meta-Llama-3-70B-Instruct-GGUF \
  Meta-Llama-3-70B-Instruct-Q4_K_M.gguf \
  --local-dir ./models

# 3) تشغيل الموديل بـ context 4096 و 8 threads
llama-cli \
  -m ./models/Meta-Llama-3-70B-Instruct-Q4_K_M.gguf \
  -n 256 \
  -c 4096 \
  -t 8 \
  --temp 0.7 \
  -p "اشرحلي الفرق بين TCP و UDP بالعربي"

على Apple M2 Pro بـ 32GB، الموديل يشتغل بسرعة 8-12 token/sec. مش سرعة H100، بس كافية لأي تطبيق مش real-time. لو الجهاز عنده 16GB بس، استخدم Llama 3 8B Q4 بدل الـ 70B.

الأرقام المقاسة (Llama 3 70B على Apple M2 Pro)

شرائح ذاكرة ولوحة إلكترونية ترمز للفرق بين تمثيل FP16 وتمثيل INT4 في حجم أوزان الموديل
  • FP16 (الأصلي): 140GB ذاكرة، MMLU score 79.5، 25 token/sec على A100.
  • Q8 (8-bit): 70GB ذاكرة (-50%)، MMLU score 79.3 (-0.2%)، 22 token/sec.
  • Q4_K_M (4-bit متوسط): 40GB ذاكرة (-71%)، MMLU score 76.8 (-3.4%)، 18 token/sec.
  • Q3_K_S (3-bit صغير): 31GB ذاكرة (-78%)، MMLU score 71.2 (-10.4%)، 20 token/sec.

المنطقة الذهبية هي Q4_K_M. بتوفّر 71% من الذاكرة مقابل خسارة 3.4% بس من جودة الموديل. ده الـ sweet spot اللي بتوصي بيه أغلب benchmarks الإنتاج.

Trade-offs لازم تعرفها

  1. دقة المهام المعقدة بتقل أكتر: الموديل المضغوط بيقع في مهام الـ math reasoning و code generation أكتر من المهام البسيطة. تجاربي على HumanEval: Q4 خسر 6% بدل 3% في NLP عادي.
  2. السرعة على CPU بطيئة: Quantization بيقلل الذاكرة، مش بيسرّع الموديل بشكل سحري. على CPU بدون GPU/Metal، توقّع 4-8 token/sec، مش 25.
  3. الصيغ مش متوافقة مع بعض: GGUF يشتغل على llama.cpp بس. GPTQ يشتغل على exllama. AWQ على vLLM. اختار الصيغة حسب inference engine اللي عندك.
  4. Calibration data مهمة جدًا: لو ضغطت موديل عربي بـ calibration data إنجليزية بس، الدقة على العربي هتنزل أكتر بكتير. اختار dataset متعدد اللغات أو عربي صرف.

متى لا تستخدم الـ Quantization

في 3 حالات الـ quantization مش الحل المناسب:

  • تطبيقات طبية أو قانونية: أي خسارة في الدقة هنا ليها ثمن باهظ. خد موديل أصغر بدقة كاملة بدل موديل كبير مضغوط.
  • fine-tuning متخصص: لما تعمل fine-tune على بيانات شركتك، الموديل المضغوط بيفقد القدرة على التعلم بكفاءة. درّب بـ FP16 ثم اضغط بعد التدريب، مش العكس.
  • Latency حرج تحت 100ms: Quantization بيوفّر ذاكرة، مش بيسرّع inference بشكل أساسي. لو سرعة الرد حرجة، استخدم موديل أصغر أصلًا (8B بدل 70B) واتركه FP16.

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

نزّل llama.cpp وجرّب Llama 3 8B Q4_K_M أولاً (يحتاج 5GB فقط). شغّله على لابتوبك واسأله 10 أسئلة معقدة بالعربي. قارن بإجابات نفس الأسئلة من Claude أو GPT-4. ده هيديك إحساس عملي بفجوة الجودة قبل ما تستثمر وقت في إعداد الموديل الـ 70B Q4 على جهاز أكبر.

المصادر

  • Frantar et al. "GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers" — ICLR 2023.
  • Lin et al. "AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration" — MLSys 2024.
  • Dettmers et al. "LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale" — NeurIPS 2022.
  • llama.cpp documentation: https://github.com/ggerganov/llama.cpp
  • Hugging Face Quantization guide: https://huggingface.co/docs/transformers/quantization
  • Meta Llama 3 Model Card: https://huggingface.co/meta-llama/Meta-Llama-3-70B-Instruct
  • أرقام MMLU من Open LLM Leaderboard 2024.

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة