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. :::