
شنو هي هندسة الاستدلال من الصفر حتى الاحتراف؟
هندسة الاستدلال من الصفر حتى الاحتراف هي مستودع ديال دورة تطبيقية لفهم أنظمة التشغيل اللي كاتخدم ورا تقديم نماذج اللغة الكبيرة. بلا ما تركّز على تدريب النموذج ولا تحسين الجودة ديالو، كاتدرس شنو كيوقع منين كايوصل الطلب لنموذج LLM.
المشروع كايبدا بأصغر عمليات الاستدلال المفيدة، وكايتقدّم بالتدريج حتى كاايوصل لبيئة تشغيل مدمجة للاستدلال. والتدرّج المقصود هو:
التقطيع → prefill → decode → ذاكرة KV المؤقتة → أخذ العينات → حالة الطلب → الجدولة → التجميع المستمر → تدبير الذاكرة → الأجزاء الداخلية لمحرك التقديم
المنهج اللي كاايعطي الأولوية للتنفيذ كاايركّز على فحص التنسورات، والمخرجات المولّدة، وحالة الذاكرة المؤقتة، واستعمال الذاكرة بشكل مباشر. هاد الشي كاايساعد يربط بين عمليات النموذج ومشاكل التقديم العملية بحال زمن الاستجابة، ومعدل المعالجة، واستعمال GPU، واستهلاك الذاكرة.
شنو غادي تتعلّم
الدورة مصمّمة باش تطوّر فهم موجّه للأنظمة حول استدلال نماذج اللغة الكبيرة. والمواضيع الرئيسية ديالها كااتشمل:
- التقطيع: كيفاش كاايتحوّل النص ديال الطلب لمعرّفات الرموز اللي كااايستهلكها النموذج.
- Prefill: كيفاش كااايعالج النموذج الطلب الأولي وكااايخلق الحالة اللازمة للتوليد.
- Decode: كيفاش كااايتولّدو الرموز الموالية وحدة بوحدة.
- التخزين المؤقت لـ KV: كيفاش كاااتكبر حالة الانتباه وكتتفادى إعادة الحساب اللي ما عندهاش لزوم.
- أخذ العينات: كيفاش كااايتختار رمز من درجات مخرجات النموذج.
- حالة الطلب: كيفاش كااايتابع نظام التشغيل الطلبات، والرموز المولّدة، وحالة الإكمال.
- الجدولة: كيفاش كااايقرّر المحرك شنوما هي الطلبات اللي خاصها المعالجة.
- التجميع المستمر: كيفاش كااايمكن جمع الطلبات النشيطة بكفاءة ملي كااايدخلو للنظام ولا كااايخرجو منو.
- تدبير الذاكرة: فين كااايتستعملات ذاكرة GPU وكيفاش كااايأثر تنظيم الذاكرة المؤقتة على السعة.
- الأجزاء الداخلية لمحرك التقديم: كيفاش كااايتحاط تنفيذ النموذج بأنظمة كاااتحسّن الكفاءة.
حالة الدورة وتنظيمها
المستودع مقسوم لمستويات المبتدئين، والمتوسطين، والمتقدمين. دابا مسار المبتدئين مازال خدام. المواد ديال المستوى المتوسط والمتقدم مازال ما متوفراش.
الفصل المتوفر
- الفصل 01: الاستدلال اليدوي على نماذج اللغة الكبيرة من المبادئ الأولى — متوفر فـ
beginner/01_manual_llm_inference/.
فصول المبتدئين المبرمجة
- أخذ العينات
- حالة الطلب
- مجدول بسيط
- التجميع المستمر
- تدبير ذاكرة KV
- ذاكرة KV مقسّمة إلى صفحات أو كتل
- التخزين المؤقت للبادئات
- قياس أداء الاستدلال
خارطة الطريق مرنة عن قصد. يقدرو يزيدو فصول، ويحيدوها، ويقسموها، ولا يعاودو يرتبوها حسب المشاكل الجديدة اللي كااايكشفها العمل على التنفيذ.
التثبيت والإعداد
README ديال المستودع ما كاايعطيش أمر ثابت لتثبيت الاعتماديات ولا مواصفات البيئة. بدا بتنزيل المستودع ولا استنساخو، ومن بعد تفقد الملفات والتعليمات اللي مرفوقين بالفصل 1 قبل ما تثبّت ولا تشغّل أي حاجة.
- جيب نسخة محلية من مستودع GitHub.
- حلّ مجلد المستودع فـ الطرفية، ولا المحرر، ولا بيئة الدفاتر.
- سير للمسار
beginner/01_manual_llm_inference/. - قرا أي تعليمات خاصة بالفصل وحدد الدفتر الموجود فداك المجلد.
- ثبّت غير الاعتماديات اللي طلباتها مواد الفصل.
- حلّ الدفتر ونفّذ الخلايا ديالو بالترتيب.
beginner/01_manual_llm_inference/حيت README ما كايحدّدش الإصدارات الدقيقة ديال الحزم، ولا متطلبات العتاد، ولا أوامر التثبيت، استعمل دفتر الفصل باعتبارو المصدر المعتمد لإعداد بيئة التشغيل ديالو.
الاستعمال الأساسي: خدم على الاستدلال اليدوي
الفصل 1 هو نقطة البداية الموصى بها. الهدف ديالو هو دراسة الاستدلال اليدوي على نماذج اللغة الكبيرة من المبادئ الأولى، عوض إخفاء التوليد ورا واجهة كاملة لتقديم النماذج.
الخطوة 1: تبع الدفتر بالتسلسل
شغّل الدفتر من الأول حتى للآخر. ما تفوّتش خلايا الإعداد ولا الفحص، حيت العمليات الموالية تقدر تعتمد على كائنات النموذج، ولا المدخلات المقطّعة، ولا الحالة المخزّنة اللي تخلقات من قبل.
الخطوة 2: تتبّع الطلب
لاحظ كيفاش كااايتبدّل الطلب المدخل وهو كااايدوز من مراحل الاستدلال. والتتبّع المفاهيمي المفيد هو:
نص الطلب
→ معرّفات الرموز
→ معالجة الطلب ولا prefill
→ درجات الرمز الموالي
→ الرمز المختار
→ السلسلة المحدّثة
→ فك التشفير بشكل متكررسجّل أشكال التنسورات وعدد الرموز كلما الدفتر بيّنهم. هاد الشي كاااايخلّيك تشوف بسهولة الفرق بين معالجة طلب كامل وتوليد رمز إضافي واحد.
الخطوة 3: فرّق بين Prefill وDecode
Prefill كاااايعالج الطلب وكاااايهيّأ الحالة اللازمة للتوليد. أما Decode كااااينتج رموز إضافية بالتدريج. التعامل مع هاد المرحلتين باعتبارهما منفصلتين ضروري، حيت عندهم خصائص مختلفة حسابياً ومن ناحية الذاكرة.
وأنت كااااتشغّل الدفتر، سول راسك:
- شحال من رمز مدخل كاااايتعالج فمرحلة prefill؟
- شنو هو المدخل اللي كاااايتعطى فكل خطوة ديال decode؟
- شنوما هي التنسورات اللي كاااايتبدلو من بعد ما كاااايتولّد رمز جديد؟
- شنو هي الحالة اللي تقدر تعاود تستعملها بلا ما تعاود تحسبها؟
الخطوة 4: فحص المخرجات مباشرة
قارن بين معرّفات الرموز والنص المفكوك، وفحص المخرجات الوسيطة فالأماكن اللي كاااايسمح بها الدفتر. الهدف ماشي غير إنتاج نص، ولكن فهم سلسلة العمليات المسؤولة على إنتاج داك النص.
فهم نموذج التشغيل
واحد الطريقة المفيدة للتعامل مع المستودع هي أنك تشوف التوليد كحلقة كتحتافظ بالحالة، وماشي غير استدعاء واحد للنموذج:
وجد الطلب
عالج البرومبت
خزّن الحالة القابلة لإعادة الاستعمال
اختار التوكن الجاي
حدّث حالة الطلب
عاود حتى تكملهاد المنظور كيحضّرك للفصول الجاية. الـSampling كيحدّد شنو هو التوكن اللي غادي يتختار، وحالة الطلب كتتبّع كل عملية توليد، والـScheduling كيختار الخدمة اللي خاصها تدوز، والـContinuous Batching كيجمع الخدمة ديال بزاف ديال الطلبات النشيطة.
نصائح متقدمة للدراسة
تبّع الـShapes والحالة والذاكرة مجموعين
ما تفتّشش على الـTensors بوحدهم. فكل عملية مهمة، سجّل شكل الإدخال، شكل الإخراج، طول السلسلة، حالة الكاش، والزيادة المتوقعة فالذاكرة. هاد الشي كيربط بين التنفيذ الرياضي ديال الموديل والسلوك ديال السيستيم.
قارن بين طول البرومبت وطول الـDecode
ملي كيخليك الفصل تبدّل المدخلات، قارن بين البرومبتات القصيرة والطويلة، وبين التوليدات القصيرة والطويلة. لاحظ شنو هي التكاليف اللي كتوقع فمرحلة الـPrefill وشنو اللي كيتراكم فمرحلة الـDecoding. ما تفترضش نتائج الـBenchmark خارج داك الشي اللي بيّناتو القياسات ديالك.
بنِ جدول ديال حالة الطلب
قبل ما يتوفّر الفصل المخصّص لحالة الطلب، تقدر تنظّم الملاحظات بهاد الخانات مثلاً:
- معرّفات توكنات الإدخال
- معرّفات التوكنات المولّدة
- الطول الحالي للسلسلة
- حالة الكاش
- حالة التوليد
هادشي تقنية للدراسة، وماشي ميزة موعودة فالمستودع الحالي. كيساعدك تفهم علاش محرّكات الـInference خاصها سيستيمات دايرة بالموديل براسو.
قِس قبل ما تحسّن
خارطة الطريق فيها فصل مبرمج على الـBenchmarking ديال الـInference. حتى يتوفّر، خلّي التجارب مضبوطة: بدّل غير مدخل واحد ولا شرط واحد ديال التوليد فكل مرة، سجّل الملاحظات، وفرّق بين السلوك المقاس والافتراضات.
رجع للفصول اللّولة
ملي تزاد فصول الـSampling والـScheduling والـBatching وتدبير الكاش، رجع دير الـInference يدوي. ربط كل تجريد جديد بالحلقة الأصلية ديال توليد التوكنات، باش تبقى التحسينات مبنية على التنفيذ الحقيقي ديال الموديل.
القيود الحالية
حالياً غير أول فصل فمسار المبتدئين هو اللي مبيّن على أنه متوفّر. الـSampling والـSchedulers والـContinuous Batching واستراتيجيات تدبير الكاش والـBenchmarking، وزيد عليهم مسارا المستوى المتوسط والمتقدم، مازالين مبرمجين. لذلك خاصك تعتبر المستودع كورس كيتطوّر، وماشي إطار كامل لمحرّك الـInference.
الخلاصة
Inference Engineering Zero to Hero كيوفّر طريق عملي باش تدخل للجانب ديال الـRuntime فـLLMs. بدا من beginner/01_manual_llm_inference/، شغّل الـNotebook بالترتيب، وركّز على كيفاش البرومبتات والتوكنات والـTensors والحالة القابلة لإعادة الاستعمال كيدوزو فعملية التوليد. هاد الأساس غادي يسهّل عليك فهم الدروس المبرمجة على الـScheduling والـBatching والذاكرة والتفاصيل الداخلية ديال محرّكات الـServing.
