Home
Login

المرحلة السادسة: التطبيق العملي لمشاريع الذكاء الاصطناعي والنشر في الإنتاج

دورة شاملة لهندسة تعلم الآلة، تعلم كيفية دمج تعلم الآلة مع هندسة البرمجيات، من التجارب إلى عملية النشر في الإنتاج الكاملة.

MLOpsMachineLearningProductionMLGitHubTextFreeEnglish

Made With ML: نظرة عامة على المشروع

ملخص المشروع

Made With ML هو مشروع مفتوح المصدر أنشأه Goku Mohandas، ويركز على تعليم كيفية دمج تعلم الآلة مع هندسة البرمجيات، وتصميم وتطوير ونشر وتكرار تطبيقات تعلم الآلة ذات المستوى الإنتاجي. أصبح المشروع أحد أفضل مستودعات تعلم الآلة على GitHub، مع أكثر من 40,000 مطور يتابعونه.

أهداف المشروع وميزاته

المفهوم الأساسي

تبني الدورة أنظمة إنتاج موثوقة تدريجيًا من خلال التكرار، بدءًا من مرحلة التجربة (التصميم + التطوير) إلى مرحلة الإنتاج (النشر + التكرار).

الميزات الرئيسية

  1. 💡 مبادئ أولية: بناء فهم للمبادئ الأولية لكل مفهوم من مفاهيم تعلم الآلة قبل الانتقال مباشرة إلى التعليمات البرمجية.
  2. 💻 أفضل الممارسات: تطبيق أفضل ممارسات هندسة البرمجيات عند تطوير ونشر نماذج تعلم الآلة.
  3. 📈 قابلية التوسع: توسيع نطاق أعباء عمل تعلم الآلة بسهولة في Python (البيانات والتدريب والضبط والخدمة) دون الحاجة إلى تعلم لغة جديدة تمامًا.
  4. ⚙️ MLOps: ربط مكونات MLOps (التتبع والاختبار والخدمة والتنسيق وما إلى ذلك) لبناء أنظمة تعلم آلي شاملة.
  5. 🚀 التطوير إلى الإنتاج: تعلم كيفية الانتقال بسرعة وموثوقية من التطوير إلى الإنتاج دون تغيير التعليمات البرمجية أو إدارة البنية التحتية.
  6. 🐙 CI/CD: تعلم كيفية إنشاء سير عمل CI/CD ناضج لتدريب ونشر نماذج أفضل باستمرار بطريقة معيارية.

الجمهور المستهدف

يستهدف المشروع أنواعًا مختلفة من المتعلمين:

  • 👩💻 جميع المطورين: سواء كانوا مهندسي برمجيات/بنية تحتية أو علماء بيانات، أصبح تعلم الآلة جزءًا أساسيًا من تطوير المنتجات.
  • 👩🎓 خريجو الجامعات: تعلم المهارات العملية المطلوبة في الصناعة، وسد الفجوة بين الدورات الجامعية وتوقعات الصناعة.
  • 👩💼 المنتج/القيادة: الراغبون في بناء أساس تقني لبناء منتجات مذهلة وموثوقة مدعومة بتعلم الآلة.

هيكل المشروع والمحتوى

هيكل التعليمات البرمجية

تمت إعادة هيكلة التعليمات البرمجية الأساسية للمشروع إلى نصوص Python التالية:

madewithml
├── config.py
├── data.py
├── evaluate.py
├── models.py
├── predict.py
├── serve.py
├── train.py
├── tune.py
└── utils.py

سير العمل الرئيسي

1. إعداد البيئة

يدعم المشروع بيئات نشر متعددة:

  • بيئة محلية: استخدام جهاز كمبيوتر محمول شخصي كمجموعة
  • منصة Anyscale: استخدام Anyscale Workspace للتطوير السحابي
  • منصات أخرى: دعم AWS و GCP و Kubernetes والنشر المحلي وما إلى ذلك
2. تدريب البيانات والنموذج
export EXPERIMENT_NAME="llm"
export DATASET_LOC="https://raw.githubusercontent.com/GokuMohandas/Made-With-ML/main/datasets/dataset.csv"
export TRAIN_LOOP_CONFIG='{"dropout_p": 0.5, "lr": 1e-4, "lr_factor": 0.8, "lr_patience": 3}'
python madewithml/train.py \
--experiment-name "$EXPERIMENT_NAME" \
--dataset-loc "$DATASET_LOC" \
--train-loop-config "$TRAIN_LOOP_CONFIG" \
--num-workers 1 \
--cpu-per-worker 3 \
--gpu-per-worker 1 \
--num-epochs 10 \
--batch-size 256 \
--results-fp results/training_results.json
3. ضبط النموذج
python madewithml/tune.py \
--experiment-name "$EXPERIMENT_NAME" \
--dataset-loc "$DATASET_LOC" \
--initial-params "$INITIAL_PARAMS" \
--num-runs 2 \
--num-workers 1 \
--cpu-per-worker 3 \
--gpu-per-worker 1 \
--num-epochs 10 \
--batch-size 256 \
--results-fp results/tuning_results.json
4. تقييم النموذج
export RUN_ID=$(python madewithml/predict.py get-best-run-id --experiment-name $EXPERIMENT_NAME --metric val_loss --mode ASC)
python madewithml/evaluate.py \
--run-id $RUN_ID \
--dataset-loc $HOLDOUT_LOC \
--results-fp results/evaluation_results.json
5. توقع النموذج
python madewithml/predict.py predict \
--run-id $RUN_ID \
--title "Transfer learning with transformers" \
--description "Using transformers for transfer learning on text classification tasks."
6. خدمة النموذج
python madewithml/serve.py --run_id $RUN_ID

تتبع التجارب

يستخدم المشروع MLflow لتتبع التجارب وإدارة النماذج:

export MODEL_REGISTRY=$(python -c "from madewithml import config; print(config.MODEL_REGISTRY)")
mlflow server -h 0.0.0.0 -p 8080 --backend-store-uri $MODEL_REGISTRY

إطار الاختبار

يحتوي المشروع على مجموعة اختبار شاملة:

# اختبار التعليمات البرمجية
python3 -m pytest tests/code --verbose --disable-warnings

# اختبار البيانات
pytest --dataset-loc=$DATASET_LOC tests/data --verbose --disable-warnings

# اختبار النموذج
pytest --run-id=$RUN_ID tests/model --verbose --disable-warnings

# اختبار التغطية
python3 -m pytest tests/code --cov madewithml --cov-report html --disable-warnings

النشر في الإنتاج

نشر Anyscale

يوفر المشروع حلاً كاملاً لنشر Anyscale:

  1. تكوين بيئة المجموعة:
export CLUSTER_ENV_NAME="madewithml-cluster-env"
anyscale cluster-env build deploy/cluster_env.yaml --name $CLUSTER_ENV_NAME
  1. تكوين الحساب:
export CLUSTER_COMPUTE_NAME="madewithml-cluster-compute-g5.4xlarge"
anyscale cluster-compute create deploy/cluster_compute.yaml --name $CLUSTER_COMPUTE_NAME
  1. إرسال المهمة:
anyscale job submit deploy/jobs/workloads.yaml
  1. نشر الخدمة:
anyscale service rollout -f deploy/services/serve_model.yaml

سير عمل CI/CD

يدمج المشروع GitHub Actions لتنفيذ عمليات النشر الآلية:

  1. تشغيل سير العمل: تشغيل سير عمل أعباء العمل عند إنشاء PR
  2. تدريب وتقييم النموذج: تنفيذ التدريب والتقييم تلقائيًا
  3. ملاحظات النتائج: عرض نتائج التدريب والتقييم مباشرة في PR
  4. النشر التلقائي: النشر التلقائي في بيئة الإنتاج بعد الدمج في الفرع الرئيسي

نقاط التعلم الأساسية

المكدس التقني

  • Python: لغة البرمجة الأساسية
  • Ray: إطار عمل الحوسبة الموزعة
  • MLflow: تتبع التجارب وإدارة النماذج
  • Transformers: نماذج التعلم العميق
  • FastAPI: إطار عمل خدمة API
  • pytest: إطار الاختبار
  • GitHub Actions: منصة CI/CD

أفضل ممارسات هندسة تعلم الآلة

  1. تنظيم التعليمات البرمجية: هيكل مشروع معياري
  2. إدارة التجارب: تتبع التجارب بشكل منهجي
  3. التحكم في الإصدار: إدارة إصدار التعليمات البرمجية والنماذج
  4. استراتيجية الاختبار: تغطية اختبار شاملة
  5. أتمتة النشر: تكامل سير عمل CI/CD
  6. المراقبة والصيانة: المراقبة المستمرة لبيئة الإنتاج

قيمة المشروع

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

مصادر التعلم

  • الدورة التدريبية عبر الإنترنت: https://madewithml.com/
  • التعليمات البرمجية المصدر: https://github.com/GokuMohandas/Made-With-ML
  • دفاتر الملاحظات التفاعلية: notebooks/madewithml.ipynb
  • المعسكر التدريبي المباشر: معسكر تدريبي عبر الإنترنت يقام بانتظام

التحسين المستمر

يؤكد المشروع على أهمية التحسين المستمر، ومع إنشاء سير عمل CI/CD، يمكن التركيز على التحسين المستمر للنماذج، والتوسع بسهولة ليشمل عمليات التشغيل المجدولة (cron)، وخطوط أنابيب البيانات، ومراقبة اكتشاف الانحراف، والتقييم عبر الإنترنت، وما إلى ذلك.

يوفر هذا المشروع موردًا تعليميًا شاملاً وعمليًا لممارسي تعلم الآلة، ويغطي العملية الكاملة من فهم المفاهيم إلى النشر في الإنتاج، وهو مورد ممتاز لتعلم MLOps الحديثة.