مقارنة vLLM وTGI وllama.cpp لتشغيل نماذج اللغة في الإنتاج
النموذج نصف القرار الشرائي لا أكثر. أمّا محرّك التشغيل الذي يُحمِّل الأوزان ويجدول الرموز ويُعرّض نقطة HTTPS، فهو الذي يُحدّد كم مستخدمًا متزامنًا يحمل المعالج الرسومي الواحد، ومدى انتظام الكمون تحت الحِمل، ومدى موثوقية المخرجات المُهيكَلة، وما إذا كان صندوق طرفي هادئ بدون GPU خادم خيارًا قابلًا للنشر في حصن أصلًا. ثلاثة محرّكات مفتوحة المصدر تهيمن على عمليات النشر السيادية في 2026: vLLM، TGI من Hugging Face، وllama.cpp. وهي ليست بدائل متكافئة، فاختيار الخطأ منها يُهدر ميزانية العتاد ويُحاصر فريق التشغيل في إعادات بناء متكرّرة.
قرار حزمة التشغيل قبل قرار النموذج
من الأخطاء الشرائية الشائعة اختيار النموذج أوّلًا (جيمّا 4، Qwen 3.6، ديب سيك آر1) ثم وراثة المحرّك الذي يصادف أنّ المتكامل يعرفه. الترتيب الأنسب أن نُوصِّف الحِمل أوّلًا، ثم نختار المحرّك، ثم نُحمِّل النموذج المدعوم الذي يلائمه. محاور الحِمل الأربعة المهمّة: التزامن (كم مستخدمًا متزامنًا في الذروة)، شكل المخرجات (محادثة حرّة مقابل JSON صارم أو استخراج محكوم بقواعد نحوية)، فئة العتاد (رفّ متعدّد الـGPU، أم برج بـGPU واحد، أم صندوق طرفي على معالج عام أو أبل سيليكون)، والموقف التشغيلي (ترقيع متواصل أم لمسات نادرة). كلّ محرّك يقع على نقطة واضحة في هذا الفضاء. تستعرض بقيّة المقالة المحرّكات الثلاثة بعين المشتري السيادي ثم تُلخّص مصفوفة لأجهزة حصن. وللإطار العامّ من جانب النموذج راجع المقالة المحوريّة سياق Gemma 4 بحجم 256 ألف رمز.
vLLM، رائد الإنتاجية على رفوف الـGPU
vLLM هو المحرّك المرجعي مفتوح المصدر لتشغيل النماذج بإنتاجية عالية على المعالجات الرسومية. ابتكاره الجوهري هو PagedAttention، خوارزمية انتباه مستوحاة من ترقيم الذاكرة الافتراضية في أنظمة التشغيل. فبدلًا من حجز ذاكرة مفاتيح وقيم متّصلة لكلّ طلب وإهدارها بسبب التشظّي الداخلي والخارجي، تُخزِّن PagedAttention الذاكرة في كتل ثابتة الحجم وتُجمِّعها عند الطلب، ممّا يُحقّق هدرًا يكاد يكون صفرًا ومشاركة كتل بين الطلبات. وتُفيد ورقة SOSP 2023 الأصلية، Efficient Memory Management for Large Language Model Serving with PagedAttention، بإنتاجية أعلى بمقدار ضعفين إلى أربعة أضعاف مقارنةً بـFasterTransformer وOrca عند الكمون نفسه، مع فوارق تتراوح بين 8.5x و15x في سيناريوهات الإكمال المتوازي.
ومع التجميع المستمرّ (يُدخل المُجدوِل طلبات جديدة عند كلّ خطوة بدلًا من انتظار اكتمال دفعة ثابتة)، فإنّ الأثر العملي هو أنّ GPU يخدم عبر vLLM يحمل عددًا أكبر بكثير من المستخدمين المتزامنين عند الكمون نفسه لكلّ رمز. بالنسبة لرفّ سيادي يستضيف مساعدًا مؤسّسيًّا، يكون الفرق بين أربعة معالجات رسومية واثني عشر. تغطّي وثائق vLLM التوازي على المستوى التنسوري وتخزين البادئات والفكّ التخميني وصيغ الأوزان المُكمَّمة، وقد صار المحرّك الخلفية الافتراضية لعدّة منتجات تشغيل تجارية. أمّا حدود المحرّك فصريحة: vLLM مرتبط بالـGPU (CUDA أساسًا، مع دعم تجريبي لـROCm وTPU)، وسطح إعداداته واسع، ودعم المخرجات المُهيكَلة فيه أقلّ نضجًا من TGI.
TGI، تشغيل Hugging Face بقوّة في المخرجات المُهيكَلة
TGI هو المحرّك الذي يُشغّل Inference Endpoints ومعظم النشر عبر منصّة Hub. يدعم التقنيات نفسها الموجّهة للإنتاجية (تجميع مستمرّ، FlashAttention، توازي تنسوري، إدارة KV بأسلوب مُرقَّم في الإصدارات الأخيرة)، ويضيف حزمة فكّ موجَّهة أقوى: فرض مخطّط JSON لكل طلب، وقواعد نحوية بصيغ التعابير المنتظمة، وسقّالة لاستخدام الأدوات تُبقي المخرجات على القواعد دون الحاجة إلى تمرير عبر مُحلِّل. وتشرح وثائق TGI هذه الميزات عبر عائلات Llama وQwen وGemma وFalcon وDeepSeek.
يبرز TGI في الاستخدام السيادي لطابور الاستخراج المُهيكَل: التدوين السريري، استخراج حقول التحقّق من العميل، تصنيف الوثائق، تعبئة قوالب الجهات الرقابية، ووسم حقول التدقيق. هذه المهام لا تحتاج إنتاجية محادثة قصوى، بل تحتاج أن يَجتاز كلّ مخرج التحقّق في كلّ مرّة. وتُقلّل طبقة القواعد النحوية في TGI من إخفاقات ما بعد المعالجة بصورة كبيرة. كما يندمج TGI بسلاسة في حزمة Hugging Face التشغيلية الأشمل (توقيع بطاقات النماذج، تتبّع نسب البيانات، أُطر التقييم)، وهو ما تجده فرق المشتريات السيادية أيسر في التدقيق. وعلى برج بـGPU واحد بحِمل استخراج ثابت، يكون TGI الخيار الأنسب أمام vLLM.
llama.cpp، محرّك الحافة الصديق للمعالج
llama.cpp هو التطبيق المفتوح بلغة C/C++ الذي نقل استدلال نماذج اللغة من رفوف الخوادم إلى الحواسيب المحمولة والهواتف وأجهزة أبل سيليكون المكتبية. يأتي مستودع المشروع دون أيّ اعتماديات خارجية، ويدعم امتدادات SIMD على المعالج (AVX-512، AVX2، ARM NEON)، وApple Metal، وCUDA، وROCm، وVulkan، ويقرأ صيغة التكميم GGUF التي صارت المعيار الفعلي لتوزيع النماذج المفتوحة المُخفّضة الدقّة (من 1.5 بت حتى 8 بت). كما تَعرض أداة llama-server المرفقة نقطة HTTP متوافقة مع OpenAI، ممّا يعني أنّ كود التطبيق المكتوب لـvLLM أو TGI يعمل عادةً دون تعديل.
لنشر سيادي على الحافة، يكون llama.cpp غالبًا الخيار الوحيد القابل للتطبيق. فجهاز Mac Studio M3 Ultra بذاكرة موحّدة سعتها 256 جيجابايت يُشغِّل Gemma 4 32B أو Qwen 3.6 72B بتكميم GGUF بأربع بتّات بكمون مقبول لمستخدم واحد، دون مراوح، وبمكتب هادئ بوصفه «الرفّ». ومكتب ميداني بمحطّة Strix Halo صغيرة أو صندوق x86 مُقوّى يحصل على القصّة نفسها. لن يُجاري llama.cpp رفّ vLLM في الإنتاجية الإجمالية، لكنّه الجواب الصحيح لمساعدين بمستخدم إلى خمسة في موقع متحفّظ.
مصفوفة أجهزة حصن
تُحاذي حصن المحرّكات الثلاثة مع المستويات الثلاثة من الأجهزة، فيحمل فريق التشغيل حزمة واحدة لكلّ مستوى ويرى المشتري قرارًا واحدًا لكلّ حالة استخدام.
- Hosn Rack (متعدّد الـGPU، نحو 50 إلى 500 مستخدم متزامن): vLLM محرّكًا افتراضيًّا للمحادثة والمساعد، مع TGI على الجانب لطوابير الاستخراج المُهيكَل. يُوجِّه الموجِّه حسب مخطّط الاستجابة.
- Hosn Tower (GPU واحد، نحو 5 إلى 50 مستخدمًا متزامنًا): vLLM إن طغت المحادثة، وTGI إن طغى الاستخراج. الأحمال المختلطة تُشغِّل المحرّكين على الـGPU نفسه عبر تقسيم ذاكرة VRAM مع الموجِّه بوّابةً.
- Hosn Kernel (طرف على معالج عام أو Mac Studio M3، نحو 1 إلى 5 مستخدمين): llama.cpp مع نماذج مُكمَّمة بصيغة GGUF. النقطة نفسها المتوافقة مع OpenAI كما في المستويات الأعلى، ليبقى كود العميل قابلًا للنقل من الطرف إلى المركز.
للجهات التي تخلط المستويات (رفّ في المقرّ، أبراج في الفروع الكبرى، صناديق Kernel في المواقع الميدانية)، تُحافظ طبقة التوجيه الأمامية على التجربة الموحّدة. فطلب المحلّل في المكتب البعيد يصل إلى llama.cpp على Mac Studio هادئ، ويصل المحلّل نفسه عند الاتّصال بالمقرّ إلى vLLM على رفّ. تتطابق هويّة النموذج وسطح الواجهة وأثر التدقيق من جانب التطبيق. ويُغطّي تحجيم هذه المستويات مقالة تحجيم العتاد السيادي بحسب المستخدمين والكمون.
تُسلِّم حصن المحرّكات الثلاثة وتُرقّعها وتُشغِّلها باتّفاقية مستوى خدمة واحدة. لمواءمة حِملك مع المستوى المناسب راسلونا على [email protected] لجلسة إحاطة لمدّة ساعة.
الأسئلة الشائعة
هل يكون vLLM دائمًا الخيار الافتراضي للجهاز السيادي؟
بالنسبة لرفّ متعدّد الـGPU يحمل مستخدمين متزامنين، نعم. تُقدّم PagedAttention مع التجميع المستمرّ إنتاجية أعلى بمقدار ضعفين إلى أربعة أضعاف مقارنةً بتشغيل HuggingFace التقليدي عند الكمون نفسه، وقد أصبح المشروع المرجع الفعلي للنشر الإنتاجي للنماذج المفتوحة الأوزان. أمّا على برج بـGPU واحد وحِمل غني بالمخرجات المُهيكَلة فإنّ TGI أنسب. وعلى صندوق طرفي بدون GPU خادم فإنّ vLLM ليس الأداة المناسبة، ويتقدّم llama.cpp.
لماذا يبقى llama.cpp مهمًّا رغم انخفاض أسعار الـGPU؟
لثلاثة أسباب: أوّلًا، المواقع السيادية الطرفية (مكتب وزارة بعيد، عيادة ميدانية، غرفة سرّية صغيرة) قد لا تستطيع استضافة GPU بحجم خادم وتحتاج إلى صندوق هادئ منخفض الطاقة. ثانيًا، تجعل ذاكرة أبل سيليكون الموحّدة من Mac Studio M3 Ultra قادرًا بصورة مفاجئة على تشغيل مساعد لمستخدم واحد على Gemma 4 أو Qwen 3.6 المُكمَّم إلى 4 بت. ثالثًا، يُتيح تكميم GGUF للجهات اختبار النماذج وتجربتها قبل الالتزام بمسرّع من فئة Tower.
هل يستطيع جهاز حصن واحد تشغيل vLLM وTGI جنبًا إلى جنب؟
نعم. تأتي مستويا Hosn Rack وTower مع موجِّه أمام المحرّكات، ويستطيع جهاز واحد استضافة vLLM لحركة المحادثات والمساعد ذات الإنتاجية العالية فيما يخدم TGI طابور الاستخراج المُهيكَل (التدوين الطبّي، التحقّق من العميل، تصنيف الوثائق). يقرّر الموجِّه لكل طلب حسب مخطّط الاستجابة وميزانية الكمون، فيرى المشغّلون نقطة HTTPS واحدة وحزمة رصد واحدة.
هل يؤثّر اختيار المحرّك على الموقف الامتثالي؟
ليس بصورة مباشرة. المحرّكات الثلاثة جميعها مفتوحة المصدر، تعمل داخل الجهة، ولا تُصدر أيّ قياس عن بُعد افتراضيًّا بمجرّد تنزيل الأوزان محلّيًّا. السؤال الامتثالي تشغيليّ: من يُرقّع المحرّك؟ من يراجع الثغرات؟ من يصون مكدّس برامج الـGPU؟ من يحفظ سجلّ النماذج موقّعًا؟ تتولّى حصن ذلك كلّه باتّفاقية مستوى خدمة واحدة عبر vLLM وTGI وllama.cpp في كلّ مستوى.