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/
أفضل الممارسات
-
إدارة الإصدارات (Versioning)
- الشيفرة البرمجية
- البيانات
- النماذج
- ملفات الإعداد
-
المراقبة (Monitoring)
- المقاييس
- السجلات (Logs)
- التنبيهات
- الأداء
-
الأمان
- الأسرار (Secrets)
- الصلاحيات
- التحقق من الصحة
- التدقيق
الخاتمة
النقاط الأساسية التي يجب تذكّرها:
- خط أنابيب مؤتمت
- إدارة إصدارات شاملة
- مراقبة فعّالة
- نشر آمن
التوصيات:
- أتمتة العمليات
- متابعة المقاييس
- توثيق التغييرات
- التكوّن في MLOps
- الحفاظ على الجودة
نبذة عن 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 للمشاركة في النقاش