0%
MLOps: خط أنابيب تعلّم الآلة

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

تعرّف على كيفية إعداد خط أنابيب MLOps متكامل لمشاريع تعلّم الآلة الخاصة بك.

I

InSkillCoach

· دقيقة

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

تعرّف على كيفية إعداد خط أنابيب MLOps متكامل لمشاريع تعلّم الآلة الخاصة بك.

إعداد خط الأنابيب

1. بنية المشروع

project/
├── data/
│   ├── raw/
│   └── processed/
├── models/
│   ├── trained/
│   └── deployed/
├── src/
│   ├── data/
│   ├── features/
│   ├── models/
│   └── utils/
├── tests/
├── notebooks/
├── configs/
└── .github/
    └── workflows/

2. إعداد DVC

# dvc.yaml
stages:
  prepare:
    cmd: python src/data/prepare.py
    deps:
      - data/raw
    outs:
      - data/processed
      
  train:
    cmd: python src/models/train.py
    deps:
      - data/processed
    outs:
      - models/trained
      
  evaluate:
    cmd: python src/models/evaluate.py
    deps:
      - models/trained
      - data/processed

خط أنابيب البيانات

1. تحضير البيانات

# src/data/prepare.py
import pandas as pd
from sklearn.model_selection import train_test_split

def prepare_data():
    # التحميل
    data = pd.read_csv("data/raw/data.csv")
    
    # التنظيف
    data = clean_data(data)
    
    # Feature engineering
    data = engineer_features(data)
    
    # التقسيم
    train, test = train_test_split(data, test_size=0.2)
    
    # الحفظ
    train.to_csv("data/processed/train.csv")
    test.to_csv("data/processed/test.csv")

2. هندسة الخصائص (Feature Engineering)

# src/features/engineering.py
from sklearn.preprocessing import StandardScaler

def engineer_features(data):
    # إنشاء الخصائص
    data["new_feature"] = data["feature1"] * data["feature2"]
    
    # التطبيع
    scaler = StandardScaler()
    data[["feature1", "feature2"]] = scaler.fit_transform(data[["feature1", "feature2"]])
    
    return data

خط أنابيب التدريب

1. إعداد MLflow

# src/models/train.py
import mlflow
from mlflow.tracking import MlflowClient

def train_model():
    # إعداد MLflow
    mlflow.set_tracking_uri("http://localhost:5000")
    mlflow.set_experiment("model_training")
    
    with mlflow.start_run():
        # المعاملات
        params = {
            "learning_rate": 0.1,
            "epochs": 100,
            "batch_size": 32
        }
        
        # التدريب
        model = train(params)
        
        # التسجيل
        mlflow.log_params(params)
        mlflow.log_metrics({"accuracy": 0.95})
        mlflow.log_model(model, "model")

2. تقييم النماذج

# src/models/evaluate.py
from sklearn.metrics import accuracy_score, precision_score, recall_score

def evaluate_model(model, test_data):
    # التنبؤات
    predictions = model.predict(test_data)
    
    # المقاييس
    metrics = {
        "accuracy": accuracy_score(test_data.target, predictions),
        "precision": precision_score(test_data.target, predictions),
        "recall": recall_score(test_data.target, predictions)
    }
    
    return metrics

النشر والمراقبة

1. إعداد Docker

# Dockerfile
FROM python:3.9-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

CMD ["python", "src/app.py"]

2. المراقبة باستخدام Prometheus

# src/monitoring/metrics.py
from prometheus_client import Counter, Histogram

# المقاييس
PREDICTIONS = Counter('model_predictions_total', 'إجمالي التنبؤات')
LATENCY = Histogram('model_latency_seconds', 'زمن استجابة التنبؤات')

def track_prediction(latency):
    PREDICTIONS.inc()
    LATENCY.observe(latency)

CI/CD باستخدام GitHub Actions

1. خط أنابيب التدريب

# .github/workflows/train.yml
name: Train Model

on:
  push:
    branches: [ main ]
  workflow_dispatch:

jobs:
  train:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      
      - name: Setup Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.9'
          
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          
      - name: Train model
        run: dvc repro train
        
      - name: Upload model
        uses: actions/upload-artifact@v2
        with:
          name: model
          path: models/trained

2. خط أنابيب النشر

# .github/workflows/deploy.yml
name: Deploy Model

on:
  workflow_run:
    workflows: ["Train Model"]
    types:
      - completed

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      
      - name: Download model
        uses: actions/download-artifact@v2
        with:
          name: model
          
      - name: Build and push Docker image
        run: |
          docker build -t model-app .
          docker push model-app
          
      - name: Deploy to production
        run: |
          kubectl apply -f k8s/

أفضل الممارسات

  1. إدارة الإصدارات (Versioning)

    • الشيفرة البرمجية
    • البيانات
    • النماذج
    • ملفات الإعداد
  2. المراقبة (Monitoring)

    • المقاييس
    • السجلات (Logs)
    • التنبيهات
    • الأداء
  3. الأمان

    • الأسرار (Secrets)
    • الصلاحيات
    • التحقق من الصحة
    • التدقيق

الخاتمة

النقاط الأساسية التي يجب تذكّرها:

  • خط أنابيب مؤتمت
  • إدارة إصدارات شاملة
  • مراقبة فعّالة
  • نشر آمن

التوصيات:

  • أتمتة العمليات
  • متابعة المقاييس
  • توثيق التغييرات
  • التكوّن في MLOps
  • الحفاظ على الجودة
InSkillCoach

نبذة عن InSkillCoach

خبير في التدريب والتقنيات

مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.

الشهادات:

  • AWS Certified Solutions Architect – Professional
  • شهادات Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.4k
192

التعليقات

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

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!