تحسين التكلفة والتوسع
أنماط التوسع
3 دقيقة للقراءة
توسيع بنية LLM التحتية يتطلب فهم الخصائص الفريدة لأحمال عمل الاستدلال: الحوسبة المقيدة بـ GPU، وذاكرات KV كثيفة الذاكرة، ومتطلبات زمن الاستجابة المتغيرة.
أبعاد التوسع
┌─────────────────────────────────────────────────────────────┐
│ أبعاد توسع LLM │
├─────────────────────────────────────────────────────────────┤
│ │
│ التوسع الأفقي (المزيد من النسخ) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │ GPU │ │ GPU │ │ GPU │ │ GPU │ ... │ │
│ │ │ 1 │ │ 2 │ │ 3 │ │ 4 │ │ │
│ │ └─────┘ └─────┘ └─────┘ └─────┘ │ │
│ │ نفس النموذج، طلبات متوازية │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ التوسع العمودي (GPUs أكبر) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ A10G (24GB) → A100 (80GB) → H100 (80GB) → B200 │ │
│ │ ذاكرة أكثر، حوسبة أسرع، أحجام دفعات أكبر │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ توازي النموذج (تقسيم النموذج) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ الطبقات │ │ الطبقات │ │ الطبقات │ │ │
│ │ │ 1-12 │→ │ 13-24 │→ │ 25-36 │ │ │
│ │ │ GPU 1 │ │ GPU 2 │ │ GPU 3 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ │ توازي الأنبوب للنماذج الكبيرة │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
تكوين Kubernetes HPA
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: llm-inference-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: vllm-deployment
minReplicas: 2
maxReplicas: 20
metrics:
# استخدام GPU (الأساسي)
- type: External
external:
metric:
name: dcgm_gpu_utilization
selector:
matchLabels:
deployment: vllm
target:
type: AverageValue
averageValue: "75" # التوسع عند 75% استخدام GPU
# عمق قائمة الانتظار (الثانوي)
- type: External
external:
metric:
name: llm_pending_requests
target:
type: AverageValue
averageValue: "10" # التوسع إذا >10 معلق
behavior:
scaleUp:
stabilizationWindowSeconds: 60
policies:
- type: Pods
value: 2
periodSeconds: 60
scaleDown:
stabilizationWindowSeconds: 300 # 5 دقائق تهدئة
policies:
- type: Pods
value: 1
periodSeconds: 120
النشر متعدد المناطق
┌─────────────────────────────────────────────────────────────┐
│ المعمارية متعددة المناطق │
├─────────────────────────────────────────────────────────────┤
│ │
│ US-East EU-West │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ ┌────────────┐ │ │ ┌────────────┐ │ │
│ │ │ LLM Pods │ │ │ │ LLM Pods │ │ │
│ │ │ (H100x8) │ │ │ │ (H100x8) │ │ │
│ │ └──────┬─────┘ │ │ └──────┬─────┘ │ │
│ │ │ │ │ │ │ │
│ │ ┌──────┴─────┐ │ │ ┌──────┴─────┐ │ │
│ │ │ Cache │ │ │ │ Cache │ │ │
│ │ │ (Redis) │ │ │ │ (Redis) │ │ │
│ │ └────────────┘ │ │ └────────────┘ │ │
│ └────────┬─────────┘ └────────┬─────────┘ │
│ │ │ │
│ └───────────┬───────────┘ │
│ │ │
│ ┌──────────┴──────────┐ │
│ │ موازن الحمل │ │
│ │ العالمي │ │
│ └─────────────────────┘ │
│ │
│ التوجيه القائم على زمن الاستجابة: <50ms لأقرب منطقة │
│ الاحتياطي: تبديل تلقائي عبر المناطق عند الانقطاع │
│ │
└─────────────────────────────────────────────────────────────┘
أفضل ممارسات التوسع
| الممارسة | التوصية |
|---|---|
| أقل نسخ | دائماً ≥2 للتوفر العالي |
| سرعة التوسع للأعلى | سريعة (1-2 دقيقة) للتعامل مع الذروات |
| سرعة التوسع للأسفل | بطيئة (5-10 دقائق) لتجنب التذبذب |
| هدف استخدام GPU | 70-80% (اترك مساحة) |
| تنبيه عمق قائمة الانتظار | >20 معلق لـ >2 دقيقة |
| التسخين المسبق | حمّل النماذج قبل استقبال الحركة |
| الاحتياطي الإقليمي | اكتشاف وتبديل <30 ثانية |
| ::: |