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

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

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

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

المنصة

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

الدعم

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

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

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

AWQ Quantization للمحترف: Llama 70B على H100 واحدة بـ 35GB

📅 ١٧ مايو ٢٠٢٦⏱ 6 دقائق قراءة
AWQ Quantization للمحترف: Llama 70B على H100 واحدة بـ 35GB
المستوى: محترف

AWQ Quantization: شغّل Llama 70B على H100 واحدة بـ 35GB

سيرفر Llama 3.3 70B شغّال على 4×A100 80GB بيكلّفك $11,820 شهرياً على Lambda Labs. AWQ INT4 quantization بينزّل الذاكرة من 140GB لـ 35GB، يخلّيك تشغّله على H100 واحدة بـ $1,800 شهرياً، بدون فقد دقة محسوس على معظم الـ tasks.

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

الفريق طلب deploy لـ Llama 3.3 70B في الإنتاج. الـ FP16 weights لوحدها 140GB. أرخص setup فيه 4×A100 80GB بـ $16.36/ساعة = $11,820 شهرياً. لو السيرفر بياخد طلب كل 800ms، الـ ROI ضعيف جداً قدام GPT-4o-mini API.

Quantization بيحل المشكلة دي بصياغة جديدة للوزن: بدل ما تخزّن كل parameter في 16 bit، تخزنه في 4 bit. الـ 140GB بقت 35GB، وقدرت تركّبه على H100 واحدة 80GB مع باقي مساحة للـ KV cache.

كرت رسوميات NVIDIA H100 محمول عليه نموذج Llama 70B بعد ضغط AWQ INT4 بحجم 35 جيجابايت

إيه هي Quantization (مثال JPEG للمبتدئ)

تخيّل صورة RAW بحجم 24 ميجابايت. لمّا تحفظها JPEG quality 85، بتنزل لـ 2 ميجابايت بدون ما عينك تلاحظ فرق. JPEG بيشيل التفاصيل اللي عينك مش بتقدر تميّزها، ويحتفظ بالباقي.

Quantization بنفس المنطق على weights النموذج. كل وزن في FP16 محتاج 2 byte (16 bit). تحويله لـ INT4 بيخلّيه نص byte فقط. الموديل بيشتغل بدقة "كافية" بدل دقة "كاملة"، والذاكرة بتنزل 4 أضعاف.

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

Quantization هي عملية تحويل قيم متصلة (continuous) إلى مجموعة محدودة من القيم المتقطعة (discrete). في حالة LLM weights: بنحوّل floating-point 16-bit (range واسع) إلى integer 4-bit (16 قيمة ممكنة فقط). العملية بتعتمد على scaling factor لكل group من الـ weights علشان نحافظ على الـ distribution.

المهم اللي بيفرّق: مش كل وزن في الموديل بنفس الأهمية. AWQ (Activation-aware Weight Quantization, MIT Han Lab, Lin et al. 2023) لاحظ إن أقل من 1% من الـ weights مسؤولين عن معظم جودة المخرجات. الـ technique بتحمي الـ 1% دول من الـ aggressive quantization وتضرب الباقي بقسوة. النتيجة: دقة قريبة من FP16 على معظم الـ benchmarks.

AWQ vs GPTQ — الاختيار العملي

على H100 / A100 / L40S، AWQ هو الـ default في الإنتاج حالياً. الأسباب أرقام مش رأي:

  • Throughput: Marlin-AWQ kernel بيدّي 10.9× speedup مقارنة بـ FP16، Marlin-GPTQ بيدّي 2.6× فقط.
  • Pass@1 على HumanEval: Marlin-AWQ سجّلت 51.8%، GPTQ-INT4 سجّلت 48.3% على نفس الموديل.
  • MT-Bench: AWQ متقدّم على GPTQ بـ 0.4 نقطة عند نفس bit-width.
  • Memory footprint: الاتنين بيوصلوا لـ ~35GB. مفيش فرق فعلي هنا.

الفائز في 2026: AWQ، بفارق واضح في الـ throughput وفرق طفيف في الدقة.

Deployment فعلي على vLLM

الـ workflow اللي بيشتغل من غير صداع:

  1. نزّل النسخة الـ quantized من Hugging Face (مش لازم تعمل quantization بنفسك — في nightly builds جاهزة لمعظم الموديلات الشهيرة).
  2. شغّل vLLM 0.6.4 مع Marlin kernel.
  3. راقب الذاكرة و throughput على أول 100 طلب علشان تتأكد من الـ stability.
Bash
# Install
pip install vllm==0.6.4

# Serve Llama 3.3 70B AWQ-INT4 on H100 (80GB)
python -m vllm.entrypoints.openai.api_server \
  --model casperhansen/llama-3.3-70b-instruct-awq \
  --quantization awq_marlin \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.92 \
  --dtype half \
  --port 8000

اختبار من curl:

Bash
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "casperhansen/llama-3.3-70b-instruct-awq",
    "messages": [{"role":"user","content":"اكتب function Python بتعكس string"}],
    "max_tokens": 256
  }'

على H100 SXM بـ batch size 8 و sequence length 2048، الأرقام المقاسة:

  • VRAM المستخدمة: 38.2 GB (35 weights + 3.2 KV cache).
  • Throughput: 741 token/ثانية.
  • TTFT (Time to First Token): 162ms.
  • Cost per million output tokens: $0.18 (H100 spot على Lambda Labs بـ $2.49/ساعة).
شاشة مراقبة inference server تعرض throughput vLLM مع Llama 70B AWQ على H100 وقياس latency

الـ Trade-offs اللي بتخفى

الـ paper الرسمي بيقولك "98.1% retention على MMLU-Pro". الواقع أعمق من كده.

  1. Math و reasoning بيتأثر أكتر. GSM8K بتنزل من 95.1% (FP16) لـ 91.7% (AWQ INT4). فقد 3.4 نقطة على شغل حسابي. لو منتجك chatbot محاسبي أو مالي، الـ trade-off ده مش مقبول.
  2. الـ variance بترتفع تحت sampling. عند temperature=0 الدقة قريبة. عند temperature=0.7 الـ output variance بتكبر 2.3× مقارنة بـ FP16. لو بتعتمد على outputs متعددة (n=5 sampling أو self-consistency)، اعمل benchmark بنفسك قبل ما تعمم.
  3. الـ Calibration dataset بيفرّق. AWQ بتحتاج 128-512 sample من توزيع قريب من بياناتك. لو الـ calibration كانت على نصوص إنجليزية والـ workload عربي، الدقة بتنزل 4-6 نقاط زيادة على المتوقع. استخدم calibration set عربي لو الـ traffic عربي.
  4. الـ context length الطويل بيستهلك ذاكرة KV cache بسرعة. 35GB weights + KV cache لـ 32K context = 50GB+. عند 128K context، مش هتعرف على H100 واحدة. ارجع لـ 2 GPUs أو فعّل FP8 KV cache بـ --kv-cache-dtype fp8_e5m2.

متى لا تستخدم AWQ

  • Fine-tuning: مش هتعرف تعمل fine-tune مباشرة على AWQ weights. لازم ترجع لـ FP16 الأول، تعمل LoRA، ثم تعيد الـ quantization.
  • Code generation طويل (>2K token): الـ cumulative errors بتظهر في output طويل. بعض workloads بتحتاج FP8 بدل INT4.
  • Math-heavy reasoning أو RAG على بيانات طبية/مالية: الـ 3-4 نقاط فقد بتبقى كارثة. اشتغل بـ FP16 أو FP8.
  • أول release من النموذج: AWQ weights للموديلات الجديدة بتاخد 1-3 أسابيع تظهر على HuggingFace. لو محتاج deploy في اليوم الأول، AWQ مش هيكون متاح.

الافتراضات اللي بنينا عليها

كل الأرقام دي على Llama 3.3 70B (dense decoder transformer). للموديلات MoE زي DeepSeek V3 و Mixtral الـ behavior مختلف لأن الـ active parameters أقل بكتير. الـ benchmark تم على H100 SXM 80GB؛ على H100 PCIe الـ throughput بينزل 18-22% بسبب الـ memory bandwidth الأقل.

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

افتح dashboard المراقبة بتاع inference server بتاعك، شوف الـ p99 latency و الـ GPU utilization على آخر أسبوع. لو بتستخدم Llama 70B FP16 على multi-GPU و الـ utilization تحت 60%، اعمل A/B test على AWQ INT4 لمدة 72 ساعة على 5% من الـ traffic. لو الـ user feedback ما تغيّرش و الـ cost نزل 60%، عمم النشر.

المصادر

  • AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration (Lin et al., MIT Han Lab, 2023)
  • vLLM Benchmarks 2026 — Morph LLM
  • AWQ Quantization Guide 2026 — Spheron
  • LLM Quantization Explained: INT4, INT8, FP8, AWQ, GPTQ — VRLA Tech 2026
  • Assessing Accuracy Loss in Quantized LLMs — apxml
  • A Comprehensive Evaluation of Quantized Instruction-Tuned LLMs up to 405B (arXiv 2409.11055)
  • vLLM AWQ Documentation
]]>

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

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

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