Saturday, 24 October 2026 | التحديث اليومي نظرة ثاقبة للذكاء الاصطناعي، مكتوبة للبناة

Nano-vLLM: تطبيق vLLM بسيط للاستدلال المحلي

  • ما هي: نانو-فِلْإم هو إعادة تنفيذ خفيفة الوزن، تتكوَّن من نحو 1200 سطر من بايثون، لمُحرِّك الاستنتاج vLLM محرك الاستدلال، نُشِر بواسطة DeepSeek المهندس Xingkai Yu على GitHub باسم GeeeekExplorer/nano-vllm.
  • لماذا تستخدمه: مصدر سهل القراءة للتعلم عن كيفية عمل paged attention و prefix caching و CUDA graphs — وليس بديلاً للإنتاج عن vLLM.
  • التثبيت: pip install git+https://github.com/GeeeekExplorer/nano-vllm.git، ثم حمّل مجلد نموذج من Hugging Face واستدعِ LLM(...).generate(...).
  • المتطلبات: وحدة معالجة رسومات NVIDIA مزودة بـ CUDA و PyTorch ومساحة VRAM كافية لنموذجك المختار — انظر إلى حاسبة VRAM.

Nano-vLLM هو إعادة تنفيذ مفتوحة المصدر من الصفر لمحرك vLLM inference server، مكتوب في حوالي 1,200 سطر من Python. تم إطلاقه في منتصف 2025 بواسطة Xingkai Yu، مهندس في DeepSeek، بموجب ترخيص MIT على github.com/GeeeekExplorer/nano-vllm. إنها قاعدة بيانات من مستوى التدريس وأداة استدلال سريعة للمعالجات الدفعية — وليست بديلاً فوريًا لخادم vLLM الكامل.

ما هو Nano-vLLM فعلاً

المستودع الأصلي vllm-project/vllm هو خادم استدلال كبير من مستوى الإنتاج يضم مئات المساهمين وواجهة HTTP متوافقة مع OpenAI وعمال موزعين ودعم لعشرات بنى النماذج وأنظمة التكميم. يُرجع Nano-vLLM كل ذلك إلى الحلقة الأساسية: تحميل النموذج ومدير ذاكرة التخزين المؤقت KV ومجدول المعالجة والعينات.

وفقاً لملف README الخاص بالمشروع، يحتفظ nano-vllm بالتحسينات الرئيسية التي تجعل vLLM سريعًا:

  • Prefix caching — يُعيد استخدام كتل ذاكرة التخزين المؤقت KV عبر الطلبات التي تتشارك بادئة طلب.
  • Tensor parallelism — يقسم نموذجًا عبر وحدات معالجة رسومات متعددة على عقدة واحدة.
  • Torch compilation — يستخدم torch.compile لدمج النواة.
  • CUDA graphs — يقلل من تكاليف الإطلاق لكل خطوة أثناء فك التشفير.

ما يتجاهله عن قصد: خادم HTTP المتوافق مع OpenAI وواجهات برمجية للبث المستمر وأغلب backends التكميم (AWQ و GPTQ و FP8) والفك الاستدلالي والتبديل السريع لـ LoRA والعناقيد متعددة العقد والنطاق العريض للنموذج. يُشحن بشكل أساسي مع اختبار ضد نماذج Qwen3-class الكثيفة.

تثبيت Nano-vLLM

Nano-vLLM هو حزمة Python. لا توجد مسار دعم CUDA أصلي لنظام Windows في المستودع الأصلي؛ على Windows استخدم WSL2 مع برنامج تشغيل NVIDIA. Linux و WSL2 هما المنصات الأساسية. لم يتم دعم macOS لأن مسارات الأكواد تفترض CUDA.

Linux و WSL2

python -m venv .venv
source .venv/bin/activate
pip install torch --index-url https://download.pytorch.org/whl/cu121
pip install git+https://github.com/GeeeekExplorer/nano-vllm.git

طابق عجلة CUDA (cu121, cu124، إلخ) مع برنامج التشغيل المثبت لديك من NVIDIA. تحقق باستخدام nvidia-smi قبل التثبيت.

Windows (عبر WSL2)

ثبّت برنامج تشغيل NVIDIA لـ Windows وفعّل WSL2 مع توزيع Ubuntu (wsl --install -d Ubuntu), ثم اتبع خطوات Linux داخل WSL. لا تثبت CUDA toolkit داخل WSL — برنامج التشغيل في Windows يكشف عن GPU.

macOS

غير مدعوم. يعتمد Nano-vLLM على نوى CUDA وبدائل paged-attention التي لا توجد لها backend Metal. على Apple Silicon استخدم Ollama أو LM Studio بدلاً من ذلك، وكلاهما يعمل llama.cpp تحت الغطاء.

تنزيل نموذج

يحمّل Nano-vLLM مجلدات نموذج Hugging Face القياسية — نفس تخطيط config.json, tokenizer.json و safetensors الذي يستخدمه transformers و vLLM. اجلب نموذجًا باستخدام واجهة سطر الأوامر الرسمية huggingface_hub واجهة سطر الأوامر (CLI):

pip install -U "huggingface_hub[cli]"
hf download Qwen/Qwen3-8B --local-dir ~/models/Qwen3-8B

راجع وثائق Hugging Face Hub CLI للمصادقة والنماذج المقيدة. لاحظ أن الإصدار الأقدم huggingface-cli يشحن نقطة الدخول لا تزال مع الحزمة، لكن Hugging Face توصي الآن بـ hf الأمر.

تشغيل الاستدلال

API يعكس واجهة vLLM للمعالجة الدفعية بدون اتصال بشكل وثيق. سكريبت بسيط:

from nanovllm import LLM, SamplingParams

llm = LLM("/home/user/models/Qwen3-8B", enforce_eager=False, tensor_parallel_size=1)
sp = SamplingParams(temperature=0.7, max_tokens=256)

prompts = ["Explain paged attention in one paragraph."]
outputs = llm.generate(prompts, sp)
print(outputs[0]["text"])

قد تنجرف أسماء الفئات والأشكال المرجعية الدقيقة عبر الالتزامات — تحقق من example.py في جذر المستودع، وهو المرجع الاستخدام الأساسي.

متطلبات الأجهزة حسب النموذج

لأن nano-vllm يعمل حالياً بالنماذج في bf16/fp16 (بدون كمية مدمجة 4-بت في وقت الكتابة)، متطلبات VRAM تقريباً ضعف أرقام 4-بت أدناه. استخدم حاسبة VRAM لتقدير لكل دقة. فيما يلي أرقام مرجعية 4-بت من Convly قاعدة بيانات النماذج — لـ nano-vllm في bf16، خطط لحوالي 2x هذه القيم بالإضافة إلى حاشية KV.

النموذج السياق VRAM (مرجع 4-بت) GPU واقعي nano-vllm
Qwen3 8B 128 ألف رمز ~5 غيغابايت RTX 4090 واحد (24 جيجابايت) في bf16
Qwen3 14B 128 ألف رمز ~9 جيجابايت RTX 4090 واحد في bf16 مع سياق متواضع
Qwen3 32B 128 ألف رمز ~20 جيجابايت 2× RTX 4090 مع tensor_parallel_size=2
Llama 3.1 8B 128 ألف رمز ~5 غيغابايت RTX 4090 واحد
Llama 3.3 70B 128 ألف رمز ~40 جيجابايت 2× A100 80GB أو 4× RTX 4090

للحصول على صورة أوسع لما يناسب أي بطاقة، انظر أفضل GPUs للنماذج اللغوية المحلية و جدول متطلبات VRAM.

Nano-vLLM مقابل vLLM مقابل Ollama

الميزة Nano-vLLM vLLM Ollama
عدد الأسطر ~1,200 Python ~100k+ Python/C++/CUDA غلاف Go فوق llama.cpp
خادم متوافق مع OpenAI لا نعم نعم (عبر /v1)
الواجهة الخلفية PyTorch + CUDA PyTorch + نوى مخصصة llama.cpp (GGUF)
Quantization بسيط AWQ, GPTQ, FP8, INT4 Q2–Q8 GGUF
متعدد GPU موازاة الموتر موازاة الموتر + الخط الأنابيب + الخبير محدود
الاستخدام الأساسي التعلم، التضمين التقديم الإنتاجي سطح المكتب / التطوير

إذا كان هدفك تقديم نقطة نهاية متجهة للعميل، استخدم vLLM الكامل. إذا كنت تريد تضمين حلقة استنتاج دفعية داخل برنامج Python أكبر مع حد أدنى من التبعيات، nano-vllm معقول. إذا كنت تريد روبوت دردشة محلي بأمر واحد، استخدم Ollama.

متى يكون Nano-vLLM منطقيًا

  • تعلم الداخليات. يناسب الجدولة ومدير الكتل شاشة واحدة. قراءة nano-vllm هي أسرع طريقة لفهم موازاة الصفحات في الكود الحقيقي.
  • فروع البحث. تعديل قاعدة بيانات 1,200 سطر لاختبار عينة أو سياسة ذاكرة تخزين مؤقت جديدة قابل للتتبع؛ فرع vLLM العلوي ليس كذلك.
  • استنتاج بدون اتصال دفعي. التقدير، توليد البيانات الاصطناعية، حلقات التقييم على مجموعة طلبات ثابتة.

عندما لا يكون معقولاً: APIs الإنتاج، التقديم متعدد المستأجرين، ميزانيات الكمية الضيقة، أو أي أجهزة غير NVIDIA.

الاستضافة الذاتية مقابل واجهة برمجة التطبيقات

تشغيل nano-vllm محلياً له تكاليف حقيقية — رأس مال GPU، والكهرباء، ووقت الهندسة. النماذج المستضافة الحدودية غالباً أرخص لكل رمز من الاستدلال المحلي المطفأ بكمية منخفضة. قارن مع حاسبة المقارنة بين الاستضافة الذاتية وواجهة برمجة التطبيقات (API) و حاسبة تكلفة واجهة برمجة التطبيقات (API). للمرجع، Qwen3 8B على نقطة نهاية مستضافة يعمل بـ $0.04 في / $0.14 خارج لكل 1M رمز وفقاً لـ Convly قاعدة بيانات النماذج، بينما بطاقة GPU 24 جيجابايت قادرة على تشغيلها محلياً تكلف أكثر من $1,500.

الأسئلة المتكررة

من كتب نانو-فِلْإم؟

المستودع يتم صيانته بواسطة Xingkai Yu (معرف GitHub GeeeekExplorer)، مهندس في DeepSeek. إنه مشروع شخصي، وليس إصدار DeepSeek رسمي. الكود مرخص بموجب MIT ويعيش في github.com/GeeeekExplorer/nano-vllm.

هل نانو-فِلْإم أسرع من vLLM؟

يبلغ README عن الإنتاجية قريبة من vLLM في النماذج الكثيفة الصغيرة مثل Qwen3-0.6B على GPU واحد من فئة RTX 4070، وفي بعض تكوينات المعايير القصيرة أسرع قليلاً لأن هناك عدد أقل من عبء الجدولة. على النماذج الأكبر، السياقات الأطول، أو خدمة طلبات متعددة، تحسينات vLLM العلوية تتقدم. تعامل مع التكافؤ كـ «في نفس النطاق للدفعية بدون اتصال،» وليس «بديل صارم».

هل يمكن لنانو-فِلْإم تقديم واجهة برمجة تطبيقات (API) متوافقة مع OpenAI؟

ليس بشكل افتراضي. يوفّر المشروع واجهة برمجة تطبيقات (API) بلغة بايثون LLM.generate() طريقة تُستخدم دفعةً دون اتصال بالإنترنت. وإذا كنت بحاجة إلى خادم HTTP مع /v1/chat/completions، فقم بتغليفه يدويًّا باستخدام إطار عمل FastAPI، أو استخدم خادم vLLM المتوافق مع واجهة OpenAI أو Ollama.

هل يدعم نانو-فِلْإم النماذج المُكمَّنة مثل GGUF أو AWQ؟

لا. يقوم رمز المصدر بتحميل أوزان Hugging Face القياسية بصيغة safetensors وبتنسيق bf16/ fp16. أما بالنسبة للأوزان بصيغة GGUF (مثل Q4_K_M إلخ)، فيجب استخدام أدوات تعتمد على llama.cpp; for AWQ or GPTQ use upstream vLLM. This is one reason nano-vllm’s VRAM footprint is higher per parameter than Ollama’s for the same model.

أي النماذج معروفة بأنها تعمل معه؟

تُعَدُّ نماذج Qwen3 الكثيفة الهدف الرئيسي للتنفيذ المرجعي. وغالبًا ما تعمل نماذج أخرى مبنية على بنية Llama بعد إدخال تعديلات طفيفة على محمل النموذج، لكن البنية غير التقليدية (مثل نماذج «مزيج الخبراء» أو النماذج الهجينة القائمة على فضاء الحالات) لا تعمل عمومًا. راجع الدليل nanovllm/models/ في المستودع للحصول على قائمة النماذج المدعومة حاليًّا.

هل يمكنني تشغيل نانو-فِلْإم على معالجات AMD أو شرائح Apple Silicon؟

ليس في الوقت الراهن. فالمكتبات الأساسية تفترض وجود بيئة CUDA. وقد يعمل ROCm باستخدام بناء مخصص لمكتبة PyTorch، لكنه لم يُختبر رسميًّا في الإصدار الأصلي. أما على معالجات Apple Silicon فلا توجد وسيلة دعم — لذا يُرجى استخدام أدوات تعتمد على MLX أو llama.cpp. وللاطلاع على ملخّص للبدائل المتاحة، راجع لوحة تصنيف النماذج اللغوية الكبيرة (LLM) واختر النموذج الذي يتوافق مع مواصفات جهازك.

كتبه مصطفى إحسان

مصطفى إحسان هو مؤسس ومحرر Convly.ai. بنى ويحتفظ بقاعدة بيانات نماذج AI المباشرة للموقع، ومؤشر أداء السعر، وآلاته الحاسبة المجانية لمتطلبات VRAM وتكاليف API واقتصاديات الاستضافة الذاتية. يكتب عن تسعير النماذج ونتائج المقاييس والأجهزة المطلوبة لتشغيل نماذج AI محلياً، ويفضل باستمرار الأرقام المقاسة على ادعاءات البائع.

انتقل إلى الأعلى