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 قابلة للتكرار. :::