الرئيسيةمن أناالدوراتالمدونةسوق الأوامرالمناهج والباقاتالشركاء

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

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

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • المناهج والباقات
  • سوق الأوامر
  • المدونة

الدعم

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

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

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

فك التشفير التخميني: إزاي تسرّع استدلال الـ LLM 2 إلى 3 أضعاف بدون تغيير الموديل

محترف25 يوليو 20265 دقائق قراءة
فك التشفير التخميني: إزاي تسرّع استدلال الـ LLM 2 إلى 3 أضعاف بدون تغيير الموديل

المستوى: محترف — المقال ده موجّه لمن يشغّل نماذج لغة كبيرة في الإنتاج ويعرف مصطلحات مثل التوكن، الـ latency، والـ throughput.

لو سيرفر الـ LLM بتاعك بيولّد التوكن ورا التوكن ببطء وزمن الاستجابة عالي، تقدر تنزّله 2 إلى 3 أضعاف بتقنية اسمها فك التشفير التخميني (Speculative Decoding)، بدون ما تغيّر النموذج ولا تخسر جودة المخرجات. المقال ده بيشرحلك إزاي بالظبط، بمثال بسيط الأول وبعدين علميًا، مع كود شغّال وأرقام حقيقية.

فك التشفير التخميني: تسريع استدلال نماذج اللغة بدون خسارة جودة

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

توليد النص في الـ LLM عملية تسلسلية (autoregressive). النموذج بيطلّع توكن واحد في كل تمريرة أمامية (forward pass)، وبعدين بيحطّه في المدخل ويكرّر. يعني علشان تطلّع 200 توكن، لازم 200 تمريرة كاملة على مليارات الباراميترات.

المشكلة اللي بتحصل فعلاً إن التمريرة الواحدة دي مقيّدة بعرض نطاق الذاكرة (memory bandwidth bound)، مش بقوة الحساب. يعني كرت الشاشة بيقضّي معظم وقته بيقرا أوزان النموذج من الذاكرة، والوحدات الحسابية نصها فاضي. ده معناه إن عندك طاقة حساب مهدورة تقدر تستغلّها.

الفكرة بمثال بسيط قبل العلمي

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

النتيجة: المدقّق الكبير راجع 5 كلمات في زمن قراءة واحدة بدل 5 مرات منفصلة. لو المساعد بيخمّن صح غالبًا، السرعة بتزيد كتير. ده بالظبط اللي بيعمله فك التشفير التخميني.

علميًا: بتستخدم نموذجين. نموذج صغير سريع (draft model) بيقترح k توكن قدّام بسرعة. النموذج الكبير (target model) بياخد الاقتراحات دي ويتحقق منها في تمريرة أمامية واحدة متوازية. لأن التمريرة أصلاً مقيّدة بالذاكرة، التحقق من 5 توكن بيكلّف تقريبًا نفس تكلفة توليد توكن واحد.

إزاي بيضمن نفس المخرجات بالظبط

ده الجزء المهم اللي بيخلّي التقنية آمنة: التحقق مش بياخد اقتراح النموذج الصغير كما هو. فيه خطوة قبول/رفض احتمالية (rejection sampling) بتضمن إن التوزيع النهائي للتوكنز مطابق تمامًا لتوزيع النموذج الكبير لوحده.

  1. النموذج الصغير يقترح k توكن (مثلًا 4 أو 5).
  2. النموذج الكبير يحسب احتمالاته للتوكنز دي كلها في تمريرة واحدة.
  3. كل توكن يُقبل باحتمال نسبة احتمال الكبير إلى الصغير؛ أول رفض بيوقف السلسلة.
  4. عند الرفض، يُعاد أخذ عيّنة من توزيع مصحّح، فالمخرج يفضل صحيحًا إحصائيًا.

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

الكود: جرّبه بنفسك

في مكتبة Transformers من Hugging Face، التقنية اسمها "assisted generation" وبتفعّلها بسطر واحد: تمرّر نموذج مساعد.

Python
from transformers import AutoModelForCausalLM, AutoTokenizer

target = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B-Instruct", device_map="auto")
assistant = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-1B-Instruct", device_map="auto")
tok = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B-Instruct")

inputs = tok("اشرح الفرق بين TCP و UDP في ثلاث جمل:", return_tensors="pt").to(target.device)

# assistant_model هو النموذج المخمّن السريع
out = target.generate(**inputs, assistant_model=assistant, max_new_tokens=200)
print(tok.decode(out[0], skip_special_tokens=True))

في الإنتاج، الأفضل تستخدم vLLM اللي بيدعم speculative decoding مضبوطًا مع الـ batching:

Bash
vllm serve meta-llama/Llama-3.1-8B-Instruct \
  --speculative-model meta-llama/Llama-3.2-1B-Instruct \
  --num-speculative-tokens 5 \
  --gpu-memory-utilization 0.9

الأرقام: إيه اللي تتوقّعه فعلاً

الورقة الأصلية من Google (Leviathan et al., 2023) قاست تسريع من 2 إلى 3 أضعاف على نماذج T5 وGPT دون أي تغيير في المخرجات. ورقة DeepMind (Chen et al., 2023) سجّلت 2 إلى 2.5 ضعف على Chinchilla بحجم 70 مليار باراميتر.

سيناريو واقعي: لو عندك خدمة شات بتخدم زمن استجابة متوسط 40 توكن/ثانية على Llama-3.1-8B، تفعيل speculative decoding بنموذج مساعد 1B ممكن يوصّلك لـ 80 إلى 110 توكن/ثانية على نفس الكارت، بشرط إن معدل القبول عالٍ. المكسب الحقيقي بيعتمد على "معدل القبول" (acceptance rate): كل ما النموذج الصغير قريب من الكبير، كل ما القبول أعلى والتسريع أكبر.

الـ trade-offs اللي لازم تنتبه لها

مفيش وجبة مجانية. بتكسب سرعة، بتخسر حاجات:

  • ذاكرة زيادة: بتحمّل نموذجين على نفس الكارت. النموذج المساعد 1B بياخد تقريبًا 2 جيجابايت إضافية بدقة FP16.
  • تعقيد التشغيل: لازم تختار حجم النموذج المساعد وعدد التوكنز المخمّنة (k) بعناية. k كبير مع معدل قبول منخفض ممكن يبطّئك بدل ما يسرّعك.
  • حساسية للـ batch الكبير: لما الـ batch كبير جدًا، الـ GPU بيبقى مشغول أصلًا (compute bound)، والطاقة المهدورة اللي بنستغلّها بتقل، فالمكسب بيتراجع.

متى لا تستخدم هذه الطريقة

ابعد عنها في الحالات دي:

  • لو الـ throughput أهم عندك من زمن استجابة كل مستخدم، وشغّال بـ batch كبير مشبع للـ GPU؛ هنا المكسب هيبقى هامشي.
  • لو الذاكرة عندك مضغوطة أصلًا ومش قادر تحمّل نموذج مساعد إضافي.
  • لو مفيش نموذج مساعد قريب من نموذجك (نفس التوكنايزر والعائلة)؛ معدل قبول منخفض بيلغي الفايدة.

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

شغّل قياسًا سريعًا: فعّل speculative decoding في vLLM بنموذج مساعد 1B و--num-speculative-tokens 5، وقيس الـ tokens/second وقارنها بدون التقنية على نفس البرومبت. لو التسريع أقل من 1.5 ضعف، جرّب تقلّل k لـ 3 أو تختار نموذجًا مساعدًا أقرب لعائلة نموذجك، ثم أعد القياس.

المصادر

  • Leviathan, Kalman, Matias — "Fast Inference from Transformers via Speculative Decoding" (Google, ICML 2023): arxiv.org/abs/2211.17192
  • Chen et al. — "Accelerating Large Language Model Decoding with Speculative Sampling" (DeepMind, 2023): arxiv.org/abs/2302.01318
  • Hugging Face — Assisted Generation (Speculative Decoding) documentation: huggingface.co/docs/transformers/generation_strategies
  • vLLM — Speculative Decoding documentation: docs.vllm.ai/en/latest/features/spec_decode.html

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

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

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