الرئيسية / ML 101 / الوحدة 10 / الدرس 3

خط أنابيب تعلّم الآلة

من البيانات الخام إلى الإنتاج — بناء أنظمة تعلّم آلة قابلة للتكرار والمراقبة والصيانة على المدى البعيد.

~15 دقيقة قراءة الوحدة 10 · الدرس 3 متوسط

سير العمل الشامل لتعلّم الآلة

النموذج التدريبي ليس منتجًا نهائيًا — بل هو مكوّن واحد ضمن خط أنابيب أوسع يجب بناؤه وإصدار نسخه ونشره وصيانته. تستغرق معظم مشاريع تعلّم الآلة جزءًا صغيرًا فقط من وقتها في تدريب النماذج؛ يذهب معظم الجهد الهندسي إلى استيعاب البيانات وحساب الميزات وبنية التقديم والمراقبة.

يجعل خط الأنابيب الناضج كل خطوة قابلة للتكرار (المدخلات ذاتها تنتج المخرجات ذاتها دائمًا)، وقابلة للملاحظة (تعرف ما يجري في الإنتاج)، وقابلة للصيانة (تستطيع تحديث مراحل فردية دون كسر الأخرى). هذه الخصائص ليست رفاهية — بل متطلبات أساسية لنشر تعلّم الآلة بشكل موثوق.

01
استيعاب البيانات وإصدار نسخها
جمع البيانات الخام من المصادر؛ إصدار نسخ مجموعات البيانات لضمان تكرار التجارب.
02
هندسة الميزات
تحويل البيانات الخام إلى ميزات جاهزة للنموذج؛ تخزين منطق الميزات لتجنب الانحراف بين التدريب والتقديم.
03
التدريب وتتبع التجارب
تدريب النماذج؛ تسجيل المعاملات الفائقة والمقاييس والمخرجات لكل تشغيل.
04
تسلسل النموذج والسجل
حفظ النموذج المدرَّب بتنسيق قابل للنقل؛ تسجيله مع البيانات الوصفية لبوابة النشر.
05
التقديم والنشر
كشف النموذج كواجهة برمجية أو مهمة دفعية؛ تغليف التبعيات للاستدلال المتسق.
06
المراقبة وإعادة التدريب
تتبع جودة التنبؤات وانجراف البيانات في الإنتاج؛ تشغيل إعادة التدريب عند تراجع الأداء.

إصدار نسخ البيانات

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

DVC (التحكم في إصدار البيانات)

DVC يمدّد Git للتعامل مع الملفات ومجموعات البيانات الضخمة. بدلًا من تخزين البيانات في مستودع Git، يخزّن DVC ملف مؤشر صغير (تجزئة المحتوى) في Git ويدفع البيانات الفعلية إلى تخزين بعيد (S3، GCS، Azure Blob وغيره). هذا يمنحك:

الانحراف بين التدريب والتقديم — القاتل الصامت

أكثر أسباب فشل تعلّم الآلة في الإنتاج شيوعًا: يختلف حساب الميزات أثناء التدريب عن حسابه عند الاستدلال. أغلق منطق الميزات في كود خط أنابيب ذي إصدار يعمل بشكل متطابق في كلا البيئتين. لا تحسب الميزات بشكل مخصص وقت التقديم.

تتبع التجارب

كل تشغيل تدريبي يتخذ خيارات — أي بنية نموذج، وأي معاملات فائقة، وأي إصدار بيانات، وأي خطوات معالجة مسبقة. بدون تسجيل منهجي، يصبح من المستحيل معرفة أي تشغيل أنتج أي نموذج أو كيفية استنساخ نتيجة سابقة.

MLflow

MLflow منصة مفتوحة المصدر لدورة حياة تعلّم الآلة. مكوناتها الأساسية:

MLflow Tracking
تسجيل التجارب
تسجيل المعاملات والمقاييس والمخرجات (النماذج والرسوم) لكل تشغيل عبر واجهة برمجية بسيطة.
MLflow Projects
تشغيلات قابلة للتكرار
تغليف كود تعلّم الآلة مع تبعياته حتى يتمكن أي شخص من إعادة تشغيل التجارب في أي بيئة.
MLflow Models
تنسيق قابل للنقل
تنسيق نموذج قياسي مع نظام نكهات يدعم scikit-learn وPyTorch وTensorFlow والمزيد.
Model Registry
بوابة النشر
تسجيل النماذج بمراحل دورة الحياة (تجريبي ← إنتاج ← مؤرشف) والبيانات الوصفية.

Weights & Biases (W&B)

Weights & Biases منصة تتبع تجارب مستضافة على السحابة، شائعة بشكل خاص في التعلّم العميق. توفر تصورات غنية لمنحنيات التدريب، وكنس المعاملات الفائقة عبر ميزة Sweeps (التي تنفّذ التحسين البايزي والبحث العشوائي)، وإصدار مجموعات البيانات عبر Artifacts، وسجل النماذج.

ما يُسجَّل في كل تشغيل
\text{Run}=\{\text{git\_sha},\,\text{data\_hash},\,\theta,\,\mathcal{L}_{\text{val}}\}
سجل التشغيل الكامل يربط إصدار الكود وإصدار البيانات والمعاملات الفائقة والمقاييس — مكوّنًا سلسلة الإثبات اللازمة لاستنساخ أي نتيجة.

تسلسل النموذج

يجب حفظ النموذج المدرَّب بتنسيق يمكن تحميله لاحقًا للاستدلال — ربما على جهاز مختلف، أو بلغة مختلفة، أو بعد سنوات. يؤثر اختيار تنسيق التسلسل على قابلية النقل والأمان وسرعة الاستدلال.

تنسيقات التسلسل

joblib
نماذج scikit-learn
تسلسل Python فعّال لصفائف NumPy وخطوط أنابيب sklearn. مناسب للاستخدام الداخلي الموثوق؛ لا تحمّل ملفات من مصادر غير موثوقة.
ONNX
متعدد المنصات
Open Neural Network Exchange: تصدير من PyTorch/sklearn، تشغيل في أي ONNX Runtime (C++، Java، .NET، JavaScript).
TorchScript / SavedModel
التعلّم العميق
TorchScript من PyTorch وSavedModel من TensorFlow يُترجمان النموذج للتقديم الأمثل دون مفسر Python.
MLflow Model
متعدد الأطر
يغلّف أي نموذج بواجهة قياسية. يدعم نكهات متعددة لتحميل النموذج ذاته عبر أُطر مختلفة.

النشر

يعني تقديم النموذج إتاحة تنبؤاته للأنظمة الأخرى. تعتمد استراتيجية النشر على متطلبات زمن الاستجابة وحجم الطلبات ومستوى التعقيد التشغيلي المقبول.

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

التقديم الفوري يكشف النموذج كنقطة نهاية API في الوقت الفعلي. يصل كل طلب ويُعالج ويُمرَّر للنموذج ويُعاد التنبؤ — كل ذلك خلال ميلي ثانية. هذا هو النهج الصحيح عندما يجب أن تكون التنبؤات طازجة (أنظمة التوصيات، اكتشاف الاحتيال، التسعير الفوري).

التقديم الدفعي يشغّل النموذج على مجموعة بيانات كبيرة بفترات مجدولة ويخزّن التنبؤات في قاعدة بيانات تقرأها الأنظمة المنبثقة. مناسب عندما يمكن حساب التنبؤات مسبقًا، وأسهل بكثير في التشغيل من API الفوري.

الحاويات والتنسيق

تغليف النموذج للنشر في حاوية Docker يضمن تثبيت إصدار Python والمكتبات وتبعيات النظام وتكرارها عبر البيئات. تعمل الحاويات بشكل متطابق على الحاسب المحلي وخادم CI وعنقود Kubernetes الإنتاجي.

للتقديم عالي الحركة، تُنشر النماذج خلف موازن حمل مع نسخ متعددة وتوسع أفقي تلقائي. توفر منصات مثل BentoML وSeldon Core وKServe بنية تحتية للتقديم مخصصة لتعلّم الآلة فوق Kubernetes.

نشر وضع الظل

قبل توجيه حركة المرور الحقيقية للنموذج الجديد، شغّله في "وضع الظل": أرسل الطلبات ذاتها للنموذجين القديم والجديد، سجّل كلا التنبؤين، لكن أعد فقط مخرجات النموذج القديم للمستخدمين. هذا يتيح مقارنة التنبؤات وكشف التراجعات في توزيعات بيانات الإنتاج قبل أن يؤثر النموذج الجديد على أي مستخدم.

المراقبة وإعادة التدريب

تتراجع النماذج مع مرور الوقت. يتغير العالم — تتحول سلوكيات المستخدمين، وتتغير ميزات المنتج، وتتطور الأحوال الاقتصادية — وتصبح الأنماط التي تعلّمها النموذج من البيانات التاريخية أقل تنبؤًا بالتوزيع الحالي. يُسمى هذا انجراف المفهوم (تتغير العلاقة بين الميزات والتسميات) أو انجراف البيانات (يتغير توزيع الميزات). كلاهما يقلل أداء النموذج دون أي خطأ مرئي في النظام.

ما يجب مراقبته

استراتيجيات إعادة التدريب

إعادة تدريب مجدولة
دورية
إعادة التدريب بجدول ثابت (يومي، أسبوعي). بسيطة لكن قد تُعيد التدريب دون حاجة أو ببطء بعد الانجراف.
إعادة تدريب مُحفَّزة
قائمة على الانجراف
تشغيل إعادة التدريب تلقائيًا عند اكتشاف المراقبة لانجراف كبير أو تراجع في الأداء.
التدريب المستمر
التعلّم الآني
تحديث أوزان النموذج تدريجيًا مع وصول البيانات الجديدة. يتطلب ضوابط استقرار دقيقة.
إنسان في الحلقة
موافقة يدوية
إعادة التدريب مؤتمتة لكن يراجعها إنسان ويوافق على النموذج الجديد قبل استبدال النموذج الإنتاجي.

اختبار أ/ب للنماذج

عندما يكون نموذج مرشح جديد جاهزًا، كيف تقرر الترقية إليه؟ المعيار الذهبي هو اختبار أ/ب: وجّه جزءًا من حركة المرور الحية للنموذج الجديد (مجموعة العلاج) وأبقِ الباقي على النموذج القديم (مجموعة التحكم). قس مقياس الأعمال المهم وارسل دلالة إحصائية لتحديد ما إذا كان الفرق حقيقيًا أم ضوضاء.

الانضباط المفتاحي: حدّد مقياس النجاح والحد الأدنى للتأثير القابل للاكتشاف قبل إجراء الاختبار، والتزم بحجم العينة المخطط قبل النظر في النتائج. الاطلاع على النتائج الجزئية والتوقف المبكر يضخّم معدلات الإيجابيات الكاذبة بشكل كبير.

حجم عينة اختبار أ/ب
n = \frac{2\sigma^2(z_{\alpha/2} + z_\beta)^2}{\delta^2}
n: عدد المستخدمين المطلوب لكل مجموعة. σ²: تباين النتيجة. δ: الحد الأدنى لحجم التأثير الجدير بالكشف. قيم z لـ α=0.05، القدرة=0.8: z_{α/2}=1.96، z_β=0.84.

النقاط الرئيسية

يربط خط أنابيب تعلّم الآلة البيانات بالإنتاج عبر مراحل ذات إصدارات وقابلة للتكرار. استخدم DVC لإصدار البيانات وMLflow أو W&B لتتبع التجارب — لا تعتمد على الملاحظات اليدوية. سلسل النماذج بتنسيقات قابلة للنقل (ONNX، TorchScript، MLflow Model) وضع بيئات التقديم في حاويات. راقب توزيعات التنبؤات والميزات بحثًا عن الانجراف؛ شغّل إعادة التدريب عند تراجع الأداء. تحقق من النماذج الجديدة باختبارات أ/ب على حركة مرور حقيقية قبل الطرح الكامل.

السابق الوحدة 10-درس 2: اختيار النماذج والضبط نظرة عامة على الوحدة الدرس التالي الوحدة 11-درس 1: التدريب على نطاق واسع