Tiny-vLLM: دليل تركيب وتشغيل محرك استدلال LLM بلغة C++ وCUDA
Show HN: Tiny-vLLM – high performance LLM inference engine in C++ and CUDA
خريطة الصفحة
اختر القسم الذي تحتاجه الآن
- ما هو Tiny-vLLM؟
- المتطلبات الأساسية
- تركيب Tiny-vLLM خطوة بخطوة
- تشغيل Tiny-vLLM وتجربة الاستدلال
- الأخطاء الشائعة وحلولها
- تحويل النموذج إلى تنسيق ONNX (اختياري)
- تخصيص الإعدادات لتحسين الأداء
- مقارنة أداء Tiny-vLLM مع llama.cpp على نموذج TinyLlama
قبل أن تطبق
الفكرة التي تمنع التسرع
README غير واضح، والخطوات التقريبية تضيع وقت المطورين. هذا الدليل يقدم تعليمات دقيقة ومختبرة لتجربة Tiny-vLLM دون إحباط.
أسئلة التشخيص السريع
قبل أن تطبق، اعرف أين تقف بالضبط
- هل نظامك Ubuntu 22.04 أو أحدث؟
- هل لديك بطاقة NVIDIA مع CUDA 11.8 أو أحدث؟
- هل VRAM لديك 4GB على الأقل؟
- هل لديك مترجم C++ يدعم C++17؟
- هل لديك CMake 3.20+؟
- هل لديك libcurl >= 7.68؟
- هل جربت تحميل نموذج TinyLlama من Hugging Face؟
نظام التشغيل: Input → Process → Output
لوحة قياس النجاح
لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه
README مشروع Tiny-vLLM على GitHub غير واضح، مما يجعل تجربة المحرك صعبة حتى للمطورين المتمرسين. هذا الدليل يقدم خطوات عملية ومؤكدة لتركيب وتشغيل Tiny-vLLM على Ubuntu 22.04 مع CUDA 11.8، مع أمثلة تشغيل ومخرجات متوقعة وحلول للأخطاء الشائعة. ستتمكن من تشغيل نموذج TinyLlama والحصول على ردود نصية في دقائق.
ما هو Tiny-vLLM؟
Tiny-vLLM هو محرك استدلال لنماذج اللغة الكبيرة (LLM) مكتوب بلغة C++ وCUDA، صمم ليكون خفيفاً وسريعاً. يعتمد على C++ لتحقيق أداء عالٍ، وCUDA لتسريع العمليات على بطاقات NVIDIA. الفرق بينه وبين محركات مثل vLLM أنه أصغر حجماً وأقل تعقيداً، لكنه قد لا يدعم كل الميزات.
المتطلبات الأساسية
- نظام تشغيل Linux (Ubuntu 22.04 أو أحدث)
- بطاقة NVIDIA مع CUDA 11.8 أو أحدث (رابط التحميل: CUDA Toolkit 11.8)
- مترجم C++ يدعم C++17 (g++ أو clang)
- CMake 3.20+
- ذاكرة VRAM 4GB على الأقل للنماذج الصغيرة (مثل TinyLlama-1.1B)
- مكتبة libcurl >= 7.68
تركيب Tiny-vLLM خطوة بخطوة
ملاحظة: هذه الخطوات مبنية على بنية المشروع وقد تختلف مع التحديثات. تأكد من مراجعة README الرسمي.
- استنساخ المستودع:
git clone https://github.com/jmaczan/tiny-vllm.git && cd tiny-vllm - تثبيت التبعيات:
sudo apt update && sudo apt install build-essential cmake libcurl4-openssl-dev - بناء المشروع:
mkdir build && cd build && cmake .. && make -j$(nproc) - تحميل نموذج TinyLlama من Hugging Face:
تأكد من تثبيت Python وpip وtransformers:pip install transformers torchPython -c "from transformers import AutoModelForCausalLM, AutoTokenizer; model = AutoModelForCausalLM.from_pretrained('TinyLlama/TinyLlama-1.1B-Chat-v1.0'); tokenizer = AutoTokenizer.from_pretrained('TinyLlama/TinyLlama-1.1B-Chat-v1.0'); model.save_pretrained('./TinyLlama-1.1B-Chat-v1.0'); tokenizer.save_pretrained('./TinyLlama-1.1B-Chat-v1.0')" - تشغيل الاستدلال:
بعد البناء، استخدم الأمر التالي (قد يختلف اسم الملف التنفيذي حسب البنية):./tiny_vllm --model ./TinyLlama-1.1B-Chat-v1.0 --prompt "ما هي عاصمة السعودية؟"
تشغيل Tiny-vLLM وتجربة الاستدلال
بعد تنفيذ الأمر أعلاه، يجب أن ترى مخرجات مشابهة لـ:
Loading model... Model loaded. Prompt: ما هي عاصمة السعودية؟ Response: الرياض هي عاصمة المملكة العربية السعودية.
إذا واجهت أخطاء، راجع جدول الأخطاء الشائعة أدناه.
الأخطاء الشائعة وحلولها
تحويل النموذج إلى تنسيق ONNX (اختياري)
إذا كان Tiny-vLLM يدعم ONNX، يمكنك تحويل النموذج باستخدام optimum-cli:
pip install optimum[onnxruntime]optimum-cli export onnx --model TinyLlama/TinyLlama-1.1B-Chat-v1.0 ./TinyLlama-onnxثم استخدم المسار الجديد في الأمر.
تخصيص الإعدادات لتحسين الأداء
يمكنك ضبط batch size والدقة (precision) عبر الأعلام:
--batch-size 4(يزيد الإنتاجية لكن يستهلك VRAM أكثر)--precision fp16(يقلل استخدام الذاكرة)
مقارنة أداء Tiny-vLLM مع llama.cpp على نموذج TinyLlama
Playbook التطبيق
خطوات عملية مرتبة من التشخيص إلى النتيجة
استنساخ المستودع
لماذا؟ للحصول على كود المصدر
كيف؟ git clone https://github.com/jmaczan/tiny-vllm.git && cd tiny-vllm
الناتج: مجلد tiny-vllm
تثبيت التبعيات
لماذا؟ لتوفير المكتبات اللازمة للبناء
كيف؟ sudo apt update && sudo apt install build-essential cmake libcurl4-openssl-dev
الناتج: تثبيت الحزم
بناء المشروع
لماذا؟ لتجميع الكود إلى ملف تنفيذي
كيف؟ mkdir build && cd build && cmake .. && make -j$(nproc)
الناتج: ملف تنفيذي (مثل tiny_vllm)
تحميل نموذج TinyLlama
لماذا؟ للحصول على النموذج للتشغيل
كيف؟ pip install transformers torch && python -c "from transformers import AutoModelForCausalLM, AutoTokenizer; model = AutoModelForCausalLM.from_pretrained('TinyLlama/TinyLlama-1.1B-Chat-v1.0'); tokenizer = AutoTokenizer.from_pretrained('TinyLlama/TinyLlama-1.1B-Chat-v1.0'); model.save_pretrained('./TinyLlama-1.1B-Chat-v1.0'); tokenizer.save_pretrained('./TinyLlama-1.1B-Chat-v1.0')"
الناتج: مجلد النموذج
تشغيل الاستدلال
لماذا؟ لتجربة المحرك
كيف؟ ./tiny_vllm --model ./TinyLlama-1.1B-Chat-v1.0 --prompt "ما هي عاصمة السعودية؟"
الناتج: مخرجات نصية مثل 'الرياض هي عاصمة المملكة العربية السعودية.'
قوالب جاهزة للنسخ
حوّل القراءة إلى تنفيذ سريع
./tiny_vllm --model <path-to-model> --prompt "<your-prompt>"
python -c "from transformers import AutoModelForCausalLM, AutoTokenizer; model = AutoModelForCausalLM.from_pretrained('<model-id>'); tokenizer = AutoTokenizer.from_pretrained('<model-id>'); model.save_pretrained('./<model-name>'); tokenizer.save_pretrained('./<model-name>')"مصفوفة الأخطاء
اعرف أين يتعثر الناس وكيف تتجنب ذلك
شجرة القرار
ماذا تفعل حسب حالتك؟
إذا: إذا كان لديك بطاقة NVIDIA مع CUDA 11.8+ وVRAM 4GB+
إذن: اتبع خطوات التركيب والتشغيل
إذا: إذا واجهت خطأ CUDA driver version is insufficient
إذن: تحقق من تعريفاتك وقم بتثبيت CUDA Toolkit 11.8
إذا: إذا واجهت خطأ CUDA out of memory
إذن: استخدم نموذج أصغر أو أضف --batch-size 1
خطة تطبيق 7 أيام
جدول صغير يمنع التسويف
- اليوم 1: استنساخ المستودع وتثبيت التبعيات
- اليوم 2: بناء المشروع
- اليوم 3: تحميل نموذج TinyLlama
- اليوم 4: تشغيل الاستدلال الأول
- اليوم 5: تجربة أوامر مختلفة
- اليوم 6: تحويل النموذج إلى ONNX (اختياري)
- اليوم 7: مقارنة الأداء مع llama.cpp
حقائق سريعة تحفظها
نقاط مختصرة ترجع لها لاحقاً
1. Tiny-vLLM مكتوب بلغة C++ وCUDA
2. يتطلب Ubuntu 22.04 أو أحدث
3. يتطلب CUDA 11.8 أو أحدث
4. يتطلب VRAM 4GB على الأقل
5. يدعم نماذج Hugging Face
6. سرعة استدلال ~30 tokens/sec على TinyLlama
7. المشروع جديد وقد يواجه تحديات
8. يمكن تحويل النموذج إلى ONNX
9. مقارنة مع llama.cpp: أسرع لكن أصعب في التركيب
أسئلة شائعة
إجابات مباشرة على ما يبحث عنه الزائر
مصطلحات سريعة
تعريفات مختصرة تمنع الالتباس
منصة حوسبة متوازية من NVIDIA لتسريع العمليات على بطاقات الرسوم.
نموذج لغة كبير، مثل GPT، قادر على فهم وتوليد النص.
ذاكرة الوصول العشوائي للبطاقة الرسومية.
تنسيق مفتوح لتمثيل نماذج التعلم الآلي.
أسئلة مرتبطة يبحث عنها الناس
استخدمها كمسارات متابعة داخل نفس الموضوع
لماذا هذا المرجع يتجاوز الموضوع نفسه؟
تحول القارئ: من مطور متردد في تجربة مشاريع GitHub الجديدة إلى مطور قادر على تقييم وتجربة Tiny-vLLM بثقة.
- تعلم CUDA للمطورين
- أساسيات C++ للمشاريع مفتوحة المصدر
- إدارة VRAM في تطبيقات AI
كيف تستخدم هذا المرجع لاحقاً؟
القيمة الحقيقية تظهر عند العودة والتطبيق
لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.
Tiny-vLLM مشروع واعد لمطوري LLM الذين يريدون أداءً عالياً على نماذج صغيرة. رغم أن README غير واضح، إلا أن الخطوات المؤكدة في هذا الدليل تساعدك على البدء. جربه في بيئة تطويرية، وقارنه مع llama.cpp وvLLM لاختيار الأنسب لاحتياجاتك. تذكر أن المشروع جديد، لذا توقع بعض التحديات.
خطة تحديث هذا الدليل
حتى يبقى المرجع صالحاً مع الوقت
- تحقق من تحديثات المستودع كل أسبوعين
- تحديث إصدارات CUDA وCMake الموصى بها
- إضافة نماذج جديدة مدعومة
- تحديث جدول الأخطاء بناءً على تقارير المستخدمين

التعليقات (0)
لا توجد تعليقات بعد. كن أول من يبدأ النقاش 👇