Kubeflow وخطوط ML

Kubeflow: منصة ML لـ Kubernetes

4 دقيقة للقراءة

Kubeflow يوفر نظاماً بيئياً قابلاً للتركيب لـ ML من البداية للنهاية على Kubernetes. مع استعداد المجتمع لتخرج CNCF، أصبح المنصة القياسية لخطوط ML الإنتاجية.

النظام البيئي لـ Kubeflow

بنية المكونات

┌─────────────────────────────────────────────────────────────────┐
│                    منصة Kubeflow                                 │
├─────────────────────────────────────────────────────────────────┤
│  واجهة المستخدم                                                  │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │ لوحة مركزية │ واجهة Notebooks │ واجهة Pipelines │ واجهة Katib ││
│  └─────────────────────────────────────────────────────────────┘│
├─────────────────────────────────────────────────────────────────┤
│  مكونات ML                                                       │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐          │
│  │ Notebooks│ │ Pipelines│ │  Katib   │ │ Training │          │
│  │(Jupyter) │ │  (KFP)   │ │(AutoML)  │ │ Operators│          │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘          │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐                        │
│  │  KServe  │ │  Feast   │ │  Model   │                        │
│  │(الخدمة) │ │(الميزات)│ │ Registry │                        │
│  └──────────┘ └──────────┘ └──────────┘                        │
├─────────────────────────────────────────────────────────────────┤
│  خدمات المنصة                                                    │
│  ┌──────────────────────────────────────────────────────────── ┐│
│  │ Istio (شبكة الخدمة) │ Dex (المصادقة) │ MinIO (التخزين)     ││
│  └─────────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────────┘

المكونات الرئيسية

المكون الغرض حالة الاستخدام
Notebooks التطوير التفاعلي استكشاف البيانات، النماذج الأولية
Pipelines تنسيق سير العمل خطوط ML من البداية للنهاية
Katib ضبط المعاملات الفائقة AutoML، NAS
Training Operators التدريب الموزع PyTorch، TensorFlow، MPI
KServe خدمة النماذج نقاط نهاية الاستدلال
Feast مخزن الميزات إدارة الميزات

تثبيت Kubeflow

التثبيت المستقل

# تثبيت kustomize
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash

# استنساخ manifests Kubeflow
git clone https://github.com/kubeflow/manifests.git
cd manifests

# تثبيت Kubeflow (التثبيت الكامل)
while ! kustomize build example | kubectl apply -f -; do
  echo "إعادة المحاولة..."
  sleep 10
done

# التحقق من التثبيت
kubectl get pods -n kubeflow

deployKF (موصى به للإنتاج)

# deployKF يوفر نشر Kubeflow قائم على GitOps
# يستخدم ArgoCD لإدارة دورة الحياة

# تثبيت ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# تطبيق مولد deployKF
kubectl apply -f https://raw.githubusercontent.com/deployKF/deployKF/main/argocd-application.yaml

خيارات مزود السحابة

المزود الخدمة الميزات
AWS Amazon SageMaker on EKS notebooks مُدارة، خطوط
GCP Vertex AI Pipelines تكامل GKE أصلي
Azure Azure ML on AKS Kubeflow مُدار

لوحة Kubeflow المركزية

الوصول إلى اللوحة

# إعادة توجيه المنفذ للوصول للوحة
kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80

# الوصول على http://localhost:8080
# بيانات الاعتماد الافتراضية: user@example.com / 12341234

تعدد المستأجرين مع الملفات الشخصية

# إنشاء ملف شخصي للمستخدم (namespace + RBAC)
apiVersion: kubeflow.org/v1
kind: Profile
metadata:
  name: ml-team-alpha
spec:
  owner:
    kind: User
    name: alice@example.com
  resourceQuotaSpec:
    hard:
      cpu: "32"
      memory: "128Gi"
      nvidia.com/gpu: "8"
      persistentvolumeclaims: "10"
# تطبيق الملف الشخصي
kubectl apply -f ml-team-alpha-profile.yaml

# عرض الملفات الشخصية
kubectl get profiles

Kubeflow Notebooks

إنشاء خادم Notebook

apiVersion: kubeflow.org/v1
kind: Notebook
metadata:
  name: pytorch-notebook
  namespace: ml-team-alpha
spec:
  template:
    spec:
      containers:
      - name: pytorch
        image: kubeflownotebookswg/jupyter-pytorch-cuda-full:v1.8.0
        resources:
          requests:
            cpu: "2"
            memory: "8Gi"
            nvidia.com/gpu: "1"
          limits:
            cpu: "4"
            memory: "16Gi"
            nvidia.com/gpu: "1"
        volumeMounts:
        - name: workspace
          mountPath: /home/jovyan
      volumes:
      - name: workspace
        persistentVolumeClaim:
          claimName: pytorch-notebook-pvc

صور Notebook الجاهزة

الصورة الإطار دعم GPU
jupyter-pytorch-full PyTorch نعم
jupyter-tensorflow-full TensorFlow نعم
jupyter-scipy SciPy/Pandas لا
codeserver-python VS Code اختياري

Training Operators

PyTorch Training Operator

apiVersion: kubeflow.org/v1
kind: PyTorchJob
metadata:
  name: pytorch-distributed
  namespace: ml-team-alpha
spec:
  pytorchReplicaSpecs:
    Master:
      replicas: 1
      restartPolicy: OnFailure
      template:
        spec:
          containers:
          - name: pytorch
            image: pytorch/pytorch:2.1-cuda12.1
            command: ["python", "train.py"]
            resources:
              limits:
                nvidia.com/gpu: 1
    Worker:
      replicas: 3
      restartPolicy: OnFailure
      template:
        spec:
          containers:
          - name: pytorch
            image: pytorch/pytorch:2.1-cuda12.1
            command: ["python", "train.py"]
            resources:
              limits:
                nvidia.com/gpu: 1

Training Operators أخرى

# تدريب TensorFlow
apiVersion: kubeflow.org/v1
kind: TFJob
metadata:
  name: tf-distributed
spec:
  tfReplicaSpecs:
    Chief:
      replicas: 1
    Worker:
      replicas: 2
    PS:
      replicas: 1
---
# MPI Job (لـ Horovod)
apiVersion: kubeflow.org/v1
kind: MPIJob
metadata:
  name: horovod-training
spec:
  slotsPerWorker: 1
  mpiReplicaSpecs:
    Launcher:
      replicas: 1
    Worker:
      replicas: 4

التالي، سنتعمق في Kubeflow Pipelines لبناء سير عمل ML قابلة للتكرار. :::

اختبار

الوحدة 3: Kubeflow وخطوط ML

خذ الاختبار