CI/CD لأنظمة ML
GitOps والبنية التحتية ككود
4 دقيقة للقراءة
GitOps يجلب سير عمل Git للبنية التحتية ونشر ML. يختبر المحاورون معرفتك بـ ArgoCD وTerraform والبنية التحتية التصريحية لـ ML.
مبادئ GitOps لـ ML
| المبدأ | التطبيق على ML |
|---|---|
| التصريحي | نشر النماذج محدد في YAML |
| مُصدّر | كل التكوين في Git، قابل للتدقيق |
| الآلي | ArgoCD يزامن الحالة المطلوبة |
| القابل للملاحظة | حالة النشر مرئية في Git |
ArgoCD لنشر ML
# argocd/applications/model-serving.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: fraud-detection-model
namespace: argocd
spec:
project: ml-production
source:
repoURL: https://github.com/company/ml-deployments.git
targetRevision: main
path: models/fraud-detection
helm:
valueFiles:
- values-production.yaml
parameters:
- name: model.version
value: "v2.3.1"
- name: model.replicas
value: "5"
destination:
server: https://kubernetes.default.svc
namespace: ml-production
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
سؤال المقابلة: GitOps لـ ML
السؤال: "كيف ستنفذ GitOps لمنصة تقديم النماذج؟"
هيكل الإجابة:
# هيكل المستودع لـ GitOps ML
ml-deployments/
├── base/ # الموارد المشتركة
│ ├── kustomization.yaml
│ ├── model-serving-deployment.yaml
│ ├── model-serving-service.yaml
│ └── model-serving-hpa.yaml
│
├── models/
│ ├── fraud-detection/
│ │ ├── kustomization.yaml
│ │ ├── values-staging.yaml
│ │ └── values-production.yaml
│ │
│ └── recommendation/
│ ├── kustomization.yaml
│ ├── values-staging.yaml
│ └── values-production.yaml
│
├── infrastructure/
│ ├── terraform/
│ │ ├── gke-cluster.tf
│ │ ├── mlflow-server.tf
│ │ └── feature-store.tf
│ │
│ └── crossplane/
│ ├── database.yaml
│ └── redis.yaml
│
└── argocd/
├── app-of-apps.yaml
└── applications/
├── fraud-detection.yaml
└── recommendation.yaml
Terraform للبنية التحتية لـ ML
# terraform/ml-platform.tf
# مجموعة GKE مع مجموعة عقد GPU
resource "google_container_cluster" "ml_cluster" {
name = "ml-production"
location = var.region
# تمكين الميزات المطلوبة لـ ML
addons_config {
gce_persistent_disk_csi_driver_config {
enabled = true # لتخزين النماذج
}
}
# التوسع التلقائي للمجموعة
cluster_autoscaling {
enabled = true
resource_limits {
resource_type = "cpu"
maximum = 1000
}
resource_limits {
resource_type = "memory"
maximum = 4000 # GB
}
resource_limits {
resource_type = "nvidia-tesla-t4"
maximum = 50
}
}
}
# مجموعة عقد GPU للاستدلال
resource "google_container_node_pool" "gpu_pool" {
name = "gpu-inference"
cluster = google_container_cluster.ml_cluster.name
location = var.region
autoscaling {
min_node_count = 1
max_node_count = 20
}
node_config {
machine_type = "n1-standard-8"
guest_accelerator {
type = "nvidia-tesla-t4"
count = 1
}
# مطلوب لعقد GPU
metadata = {
disable-legacy-endpoints = "true"
}
oauth_scopes = [
"https://www.googleapis.com/auth/cloud-platform"
]
}
}
# خادم تتبع MLflow
resource "google_sql_database_instance" "mlflow_db" {
name = "mlflow-tracking"
database_version = "POSTGRES_15"
region = var.region
settings {
tier = "db-custom-2-7680"
backup_configuration {
enabled = true
}
}
}
# تخزين الأصول للنماذج
resource "google_storage_bucket" "model_artifacts" {
name = "ml-model-artifacts-${var.project_id}"
location = var.region
versioning {
enabled = true # تاريخ إصدار النموذج
}
lifecycle_rule {
action {
type = "Delete"
}
condition {
num_newer_versions = 10 # الاحتفاظ بآخر 10 إصدارات
}
}
}
سير عمل GitOps لتحديثات النموذج
# كيف يتدفق تحديث النموذج عبر GitOps
model_update_workflow:
1_data_scientist:
action: "يدرب نموذج جديد، يسجل في MLflow"
output: "إصدار النموذج v2.3.2 في السجل"
2_ml_engineer:
action: "يحدث values.yaml بإصدار النموذج الجديد"
file: "models/fraud-detection/values-production.yaml"
change: "model.version: v2.3.1 → v2.3.2"
3_pull_request:
action: "يفتح PR مع زيادة إصدار النموذج"
ci_checks:
- "النموذج موجود في السجل"
- "النموذج اجتاز الاختبارات غير المتصلة"
- "نشر staging ناجح"
4_approval:
action: "القائد التقني يوافق على PR"
requirements:
- "فحوصات CI اجتازت"
- "مقاييس النموذج تم التحقق منها"
5_argocd_sync:
action: "ArgoCD يكتشف التغيير، يزامن المجموعة"
rollout: "الكناري → الطرح الكامل"
6_observability:
action: "مراقبة لوحات المعلومات للمشاكل"
rollback: "التراجع عن commit Git إذا لزم الأمر"
الفوائد للذكر في المقابلات
gitops_benefits = {
"auditability": "كل تغيير متتبع في تاريخ Git",
"reproducibility": "يمكن إعادة إنشاء أي بيئة من Git",
"rollback": "git revert للتراجع الفوري",
"collaboration": "عملية مراجعة الكود للبنية التحتية",
"consistency": "نفس العملية لجميع البيئات",
"security": "بيانات اعتماد المجموعة تبقى في ArgoCD، ليس في CI"
}
نصيحة احترافية: "نستخدم ApplicationSet من ArgoCD لإدارة نماذج متعددة. قالب واحد، نشر تلقائي لكل زيادة إصدار نموذج."
الوحدة التالية تغطي أسئلة مقابلات السلوكية والتفاوض. :::