توسيع نطاق نقاط نهاية النماذج وتوسيعها تلقائيًا
Kubernetes HPA لمثيلات النموذج، والتوسيع المستند إلى حركة المرور، ونشر A/B، والإصدارات الكنارية
توسيع نطاق نقاط نهاية النماذج وتوسيعها تلقائيًا درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
لماذا التحجيم التلقائي
نادراً ما تكون حركة مرور الاستدلال ثابتة. فإعداد الموارد لحمل الذروة يهدر المال ليلًا، بينما يؤدي إعدادها للحمل المتوسط إلى فشل الخدمة عند الذروة. يضبط التحجيم التلقائي عدد النسخ تلقائيًا بناءً على الطلب، بحيث تدفع مقابل ما تستخدمه وتحافظ على سرعة الاستجابة.
الحاويات والنسخ
يعمل خادم النموذج على Kubernetes باعتباره Deployment يضم حاويات متطابقة (نسخًا). ويعني التحجيم تغيير عدد النسخ. وتوزّع Service طلبات الموازنة عبر أي نسخ موجودة.
apiVersion: apps/v1
kind: Deployment
metadata:
name: model-server
spec:
replicas: 2
template:
spec:
containers:
- name: server
image: my-model:latestHorizontal Pod Autoscaler
يراقب Horizontal Pod Autoscaler (HPA) مقياسًا، ويضيف الحاويات أو يزيلها للحفاظ عليه قريبًا من قيمة مستهدفة. والمقياس التقليدي هو استخدام وحدة المعالجة المركزية.
HPA بناءً على استخدام وحدة المعالجة المركزية
تخبر targetCPUUtilizationPercentage أداة HPA بالحفاظ على متوسط استخدام وحدة المعالجة المركزية قريبًا من قيمة مستهدفة. فإذا بلغ متوسط استخدام الحاويات 80% وكانت القيمة المستهدفة 50%، تزيد HPA عدد الحاويات حتى ينخفض الاستخدام مجددًا باتجاه 50%.
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: model-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: model-server
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 50حدود التحجيم القائم على وحدة المعالجة المركزية
تُعد وحدة المعالجة المركزية مؤشرًا تقريبيًا غير مناسب لبعض أحمال العمل. فقد يواجه نموذج يستخدم وحدة معالجة رسومية عنق زجاجة في وحدة معالجة الرسومات بينما يظل استخدام وحدة المعالجة المركزية منخفضًا، أو قد ينمو طابور عامل غير متزامن بينما تكون وحدة المعالجة المركزية خاملة. في هذه الحالات، استخدم إشارة خاصة بحمل العمل للتحجيم.
KEDA للتحجيم القائم على الأحداث
تُجري KEDA (التحجيم التلقائي القائم على الأحداث في Kubernetes) التحجيم بناءً على مقاييس خارجية مثل طول الطابور أو تأخر Kafka أو استعلامات Prometheus. ويمكنها حتى التحجيم إلى صفر عند عدم وجود عمل، وهو ما لا تستطيع HPA فعله بمفردها.
ScaledObject القائم على الطابور في KEDA
تضيف قيمة ScaledObject هذه في KEDA عمالًا عندما يكبر طابور الرسائل. ويؤدي كل عنصر من التراكم في queueLength إلى تشغيل نسخة إضافية، بحيث يواكب المستهلك الارتفاعات المفاجئة.
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: inference-worker
spec:
scaleTargetRef:
name: inference-worker
minReplicaCount: 0
maxReplicaCount: 20
triggers:
- type: rabbitmq
metadata:
queueName: inference
queueLength: "10"موازنة التحميل باستخدام Ingress
تصل حركة المرور الخارجية إلى حاوياتك عبر ingress. وينهي متحكم nginx ingress جلسات TLS، ويوزّع الطلبات عبر Service التي تدعم نسخك، لذلك يؤدي التوسع فورًا إلى توزيع الحمل.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: model-ingress
spec:
ingressClassName: nginx
rules:
- host: api.example.com
http:
paths:
- path: /predict
pathType: Prefix
backend:
service:
name: model-server
port:
number: 8000عمليات طرح آمنة: Canary
يُعد نشر إصدار جديد من النموذج إلى حركة المرور بأكملها دفعة واحدة أمرًا محفوفًا بالمخاطر. إذ يرسل إصدار canary جزءًا صغيرًا من حركة المرور إلى الإصدار الجديد، ويراقب مقاييسه، ثم يحوّل مزيدًا من الحركة إليه تدريجيًا.
Canary باستخدام أوزان حركة المرور
توجّه تعليقات canary التوضيحية في nginx ingress نسبةً مئوية من الطلبات إلى عملية نشر ثانية. ابدأ بنسبة 10%، وتحقق من معدل الأخطاء وزمن الاستجابة، ثم ارفع الوزن إلى 100%.
metadata:
annotations:
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "10"جمع عناصر التحجيم
يجمع الإعداد المتين كل هذه العناصر:
- تحدد HPA أو KEDA عدد النسخ بناءً على الطلب
- توازن Ingress الحمل عبر النسخ
- تطرح أوزان Canary الإصدارات الجديدة بأمان
تمنح هذه العناصر مجتمعة خدمة نماذج مرنة وموثوقة ومنخفضة المخاطر.
تحقق سريع
اختبر معرفتك بالتحجيم.
مراجعة
لقد تعلّمت كيفية تحجيم نقاط نهاية النماذج:
- تُجري HPA التحجيم بناءً على وحدة المعالجة المركزية باستخدام
targetCPUUtilizationPercentage - تُجري KEDA التحجيم بناءً على طول الطابور، وتدعم التحجيم إلى صفر
- يوازن nginx ingress الحمل عبر النسخ
- تحوّل أوزان Canary حركة المرور تدريجيًا لإجراء عمليات طرح آمنة
الأسئلة الشائعة
هل درس «توسيع نطاق نقاط نهاية النماذج وتوسيعها تلقائيًا» مجاني؟
نعم — نص درس «توسيع نطاق نقاط نهاية النماذج وتوسيعها تلقائيًا» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «توسيع نطاق نقاط نهاية النماذج وتوسيعها تلقائيًا»؟
Kubernetes HPA لمثيلات النموذج، والتوسيع المستند إلى حركة المرور، ونشر A/B، والإصدارات الكنارية تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «توسيع نطاق نقاط نهاية النماذج وتوسيعها تلقائيًا»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- وضع نماذج التعلم الآلي في حاويات باستخدام Docker
- النشر السحابي: AWS SageMaker
- تقديم عالي الأداء باستخدام Triton Inference Server
- توسيع نطاق نقاط نهاية النماذج وتوسيعها تلقائيًا