تنسيق سير عمل التعلم الآلي
مفاهيم خطوط الأنابيب
3 دقيقة للقراءة
خطوط أنابيب ML تُؤتمت التدفق من البيانات الخام إلى النموذج المنشور. فهم أساسيات خطوط الأنابيب يُساعدك في اختيار أداة التنسيق المناسبة.
ما هو خط أنابيب ML؟
خط أنابيب ML هو سلسلة من الخطوات المؤتمتة:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ استيعاب │───▶│ تحويل │───▶│ التحقق │
│ البيانات │ │ البيانات │ │ البيانات │
└─────────────┘ └─────────────┘ └─────────────┘
│
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ نشر │◀───│ تقييم │◀───│ تدريب │
│ النموذج │ │ النموذج │ │ النموذج │
└─────────────┘ └─────────────┘ └─────────────┘
DAG: التجريد الأساسي
خطوط الأنابيب تُنمذج كـ رسوم بيانية موجهة غير دورية (DAGs):
- موجهة: المهام تتدفق في اتجاه واحد
- غير دورية: لا تبعيات دائرية
- رسم بياني: مهام (عقد) متصلة بتبعيات (حواف)
# هيكل DAG مفاهيمي
dag = {
"ingest": [], # لا تبعيات
"transform": ["ingest"], # يعتمد على ingest
"validate": ["transform"], # يعتمد على transform
"train": ["validate"], # يعتمد على validate
"evaluate": ["train"], # يعتمد على train
"deploy": ["evaluate"] # يعتمد على evaluate
}
مكونات خط الأنابيب الرئيسية
| المكون | الغرض | مثال |
|---|---|---|
| المهمة | وحدة عمل واحدة | تدريب نموذج، التحقق من البيانات |
| التبعية | ترتيب التنفيذ | التدريب بعد التحقق |
| المُحفز | ما يبدأ خط الأنابيب | جدولة، وصول بيانات |
| المُخرج | ناتج يُمرر بين المهام | مجموعة بيانات مُعالجة، نموذج |
| المعلمة | قيم التكوين | معدل التعلم، الحقب |
أنماط خطوط الأنابيب
خط أنابيب تسلسلي
A ──▶ B ──▶ C ──▶ D
كل خطوة تنتظر السابقة. بسيط لكن بطيء.
خط أنابيب متوازٍ
┌──▶ B ──┐
A ──┤ ├──▶ D
└──▶ C ──┘
المهام المستقلة تعمل متزامنة. تنفيذ أسرع.
خط أنابيب شرطي
┌──▶ B (if condition)
A ──▶ ◆──┤
└──▶ C (else)
مسارات مختلفة بناءً على النتائج. سير عمل مرن.
التفرع/الدمج
┌──▶ B1 ──┐
│ │
A ──┼──▶ B2 ──┼──▶ C
│ │
└──▶ B3 ──┘
معالجة البيانات بالتوازي، ثم التجميع. شائع للتدريب الموزع.
مراحل خط أنابيب ML المحددة
خط أنابيب البيانات
┌─────────────────────────────────────────────────────────┐
│ خط أنابيب البيانات │
├─────────────┬─────────────┬─────────────┬──────────────┤
│ استخراج │ تحويل │ التحقق │ تحميل │
│ (مصادر) │ (تنظيف) │ (جودة) │ (تخزين) │
└─────────────┴─────────────┴─────────────┴──────────────┘
خط أنابيب التدريب
┌─────────────────────────────────────────────────────────┐
│ خط أنابيب التدريب │
├─────────────┬─────────────┬─────────────┬──────────────┤
│ هندسة │ تدريب │ التحقق │ تسجيل │
│ الميزات │ النموذج │ النموذج │ النموذج │
└─────────────┴─────────────┴─────────────┴──────────────┘
خط أنابيب الاستدلال
┌─────────────────────────────────────────────────────────┐
│ خط أنابيب الاستدلال │
├─────────────┬─────────────┬─────────────┬──────────────┤
│ معالجة │ تحميل │ توقع │ معالجة │
│ المدخل │ النموذج │ │ المخرج │
└─────────────┴─────────────┴─────────────┴──────────────┘
استراتيجيات الجدولة
| الاستراتيجية | متى تُستخدم | مثال |
|---|---|---|
| مبنية على الوقت | فترات منتظمة | إعادة تدريب يومية الساعة 2 صباحاً |
| مبنية على الحدث | عند وصول البيانات | ملف دفعة جديد يُحفز خط الأنابيب |
| يدوية | تجارب حسب الحاجة | يُحفزها عالم البيانات |
| مستمرة | معالجة التدفق | تحديثات ميزات فورية |
التنسيق مقابل سير العمل
| التنسيق | سير العمل |
|---|---|
| يُدير التنفيذ | يُعرف الخطوات |
| يُعالج الفشل | يُحدد المنطق |
| يُجدول التشغيلات | يُعلن التبعيات |
| يُراقب التقدم | تكوين |
اختيار المنسق
| الأداة | الأفضل لـ | التعقيد |
|---|---|---|
| DVC | خطوط أنابيب ML بسيطة | منخفض |
| Airflow | هندسة البيانات + ML | متوسط |
| Prefect | سير عمل Python الحديث | متوسط |
| Kubeflow | ML أصلي لـ Kubernetes | عالٍ |
| Argo Workflows | وظائف Kubernetes عامة | عالٍ |
أنماط معالجة الأخطاء
إعادة المحاولة
# أعد محاولة المهام الفاشلة تلقائياً
task_config = {
"retries": 3,
"retry_delay": "5m"
}
البديل
# استخدم مسار بديل عند الفشل
if model_training_failed:
use_previous_model()
else:
use_new_model()
التنبيه
# أبلغ عند الفشل
on_failure_callback = send_slack_alert
أفضل الممارسات
| الممارسة | لماذا |
|---|---|
| مهام متساوية التأثير | آمنة لإعادة المحاولة بدون آثار جانبية |
| مهام صغيرة ومركزة | أسهل للتصحيح وإعادة التشغيل |
| تحكم في إصدار كل شيء | أعد إنتاج أي تشغيل خط أنابيب |
| سجّل بشكل موسع | صحح الفشل بسرعة |
| اختبر محلياً أولاً | اكتشف الأخطاء قبل النشر |
الرؤية الرئيسية: خط أنابيب مُصمم جيداً يُحول عملية يدوية معرضة للخطأ إلى نظام موثوق ومؤتمت. ابدأ بسيطاً، ثم أضف التعقيد حسب الحاجة.
التالي، سنغوص في Kubeflow Pipelines لتنسيق ML الأصلي لـ Kubernetes. :::