vLLM ومحركات الاستدلال مفتوحة المصدر

بنية vLLM والمفاهيم الأساسية

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

أصبح vLLM المعيار الفعلي لاستدلال LLM مفتوح المصدر. دعنا نستكشف بنيته ولماذا يهيمن على النظام البيئي.

تطور vLLM

المعالم الرئيسية:

  • يونيو 2023: الإصدار الأولي مع PagedAttention
  • يناير 2025: vLLM V1 ألفا—ترقية معمارية كبيرة مع تسريع 1.7x
  • مايو 2025: انضم إلى مؤسسة PyTorch كمشروع مستضاف
  • ديسمبر 2025: الإصدار 25.11 مع CUDA 13.0.2، PyTorch 2.9.0

اعتباراً من يناير 2026، vLLM هو حل خدمة LLM مفتوح المصدر الأكثر انتشاراً.

البنية الأساسية

┌─────────────────────────────────────────────────────────────────┐
│                      بنية vLLM                                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────┐     ┌─────────────┐     ┌─────────────┐       │
│  │   خادم     │     │   المجدول  │     │   العامل   │       │
│  │   API      │────►│   (الأساس) │────►│   (GPU)    │       │
│  │ (FastAPI)  │     │             │     │             │       │
│  └─────────────┘     └─────────────┘     └─────────────┘       │
│        │                   │                   │                │
│        │                   │                   │                │
│        ▼                   ▼                   ▼                │
│  ┌─────────────┐     ┌─────────────┐     ┌─────────────┐       │
│  │   طابور    │     │   مدير     │     │   مشغل    │       │
│  │   الطلبات  │     │   الكتل    │     │   النموذج │       │
│  │             │     │ (PagedAttn) │     │             │       │
│  └─────────────┘     └─────────────┘     └─────────────┘       │
│                                                                 │
│  الابتكارات الرئيسية:                                          │
│  • PagedAttention لكفاءة الذاكرة                               │
│  • التجميع المستمر للإنتاجية                                   │
│  • توازي الموتر/الأنبوب للنماذج الكبيرة                       │
│  • الفك الترميزي التخميني لزمن الاستجابة                      │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

بنية vLLM V1 (2025)

جلب إصدار V1 تحسينات كبيرة:

# التغييرات الرئيسية في vLLM V1
# 1. حلقة تنفيذ نظيفة ومحسنة
# 2. تخزين مؤقت للبادئة بدون تكلفة
# 3. دعم محسن للوسائط المتعددة
# 4. تكامل أصلي مع PyTorch 2.x

# V1 هو الافتراضي الآن في vLLM
from vllm import LLM

# ميزات V1 مفعلة تلقائياً
llm = LLM(
    model="meta-llama/Llama-3.3-70B-Instruct",
    # تحسينات V1 مطبقة تلقائياً
)

البدء السريع

التثبيت

# موصى به: استخدام uv للتثبيت الأسرع (توصية vLLM)
pip install uv
uv pip install vllm

# أو pip القياسي (Python 3.12+ موصى به)
pip install vllm

# لحاويات NVIDIA (الإنتاج)
docker pull vllm/vllm-openai:latest

الاستخدام الأساسي

from vllm import LLM, SamplingParams

# تهيئة النموذج
llm = LLM(
    model="meta-llama/Llama-3.3-70B-Instruct",
    tensor_parallel_size=4,  # استخدام 4 GPUs
)

# تحديد معاملات أخذ العينات
sampling_params = SamplingParams(
    temperature=0.7,
    top_p=0.9,
    max_tokens=1024,
)

# توليد الإكمالات
prompts = [
    "اشرح الحوسبة الكمومية بعبارات بسيطة:",
    "اكتب دالة Python لترتيب قائمة:",
]

outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    print(output.outputs[0].text)

خادم متوافق مع OpenAI

# بدء خادم vLLM مع توافق OpenAI API
vllm serve meta-llama/Llama-3.3-70B-Instruct \
    --tensor-parallel-size 4 \
    --port 8000 \
    --api-key your-api-key

# الاستخدام مع عميل OpenAI
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="your-api-key"
)

response = client.chat.completions.create(
    model="meta-llama/Llama-3.3-70B-Instruct",
    messages=[
        {"role": "user", "content": "مرحبا!"}
    ]
)

دعم الأجهزة

vLLM يدعم أجهزة متنوعة (اعتباراً من يناير 2026):

المنصة مستوى الدعم ملاحظات
NVIDIA GPUs كامل الهدف الأساسي، أفضل أداء
AMD GPUs إنتاج دعم ROCm
Intel Gaudi إضافة عبر habana_frameworks
Google TPU إنتاج tpu-inference 0.12.0
Intel CPUs بيتا للتطوير/الاختبار
Apple Silicon مجتمعي دعم محدود
# اختيار GPU
llm = LLM(
    model="meta-llama/Llama-3.3-70B-Instruct",

    # تكوين NVIDIA GPU
    tensor_parallel_size=4,
    dtype="float16",  # أو "bfloat16" لـ Ampere+

    # لـ AMD GPUs
    # device="hip"

    # للـ CPU (للاختبار فقط)
    # device="cpu"
)

دعم النماذج

vLLM يدعم معظم بنيات النماذج الشائعة:

# عائلات النماذج المدعومة (غير شاملة)
supported_models = [
    # عائلة Meta Llama
    "meta-llama/Llama-3.3-70B-Instruct",
    "meta-llama/Llama-3.1-405B-Instruct",

    # Mistral/Mixtral
    "mistralai/Mistral-7B-Instruct-v0.3",
    "mistralai/Mixtral-8x22B-Instruct-v0.1",

    # Qwen
    "Qwen/Qwen2.5-72B-Instruct",

    # DeepSeek
    "deepseek-ai/DeepSeek-V3",  # أداء قياسي على Blackwell

    # متعدد الوسائط
    "llava-hf/llava-v1.6-mistral-7b-hf",
    "Qwen/Qwen2-VL-72B-Instruct",
]

# التحقق من دعم النموذج
from vllm import LLM
llm = LLM(model="your-model")  # يرفع خطأ إذا غير مدعوم

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

from vllm import LLM

llm = LLM(
    model="meta-llama/Llama-3.3-70B-Instruct",

    # التوازي
    tensor_parallel_size=4,      # GPUs لتوازي الموتر
    pipeline_parallel_size=1,    # مراحل لتوازي الأنبوب

    # الذاكرة
    gpu_memory_utilization=0.9,  # % من ذاكرة GPU للاستخدام
    max_model_len=32768,         # أقصى طول للسياق

    # التكميم
    quantization="fp8",          # أو "awq", "gptq", "squeezellm"

    # التخزين المؤقت
    enable_prefix_caching=True,  # مشاركة KV cache للبادئات المشتركة

    # الأداء
    enforce_eager=False,         # استخدام CUDA graphs (أسرع)
    enable_chunked_prefill=True, # جدولة أفضل
)

فهم بنية vLLM يجهزك للتكوين والتحسين المتقدم.

التالي، سنستكشف أنماط نشر الإنتاج لـ vLLM. :::

اختبار

الوحدة 2: vLLM ومحركات الاستدلال مفتوحة المصدر

خذ الاختبار