يتفوق vLLM على SGLang في المطالبات التي تبلغ 64 ألف توكن، لكن SGLang يتصدر بمجرد وصول السياق إلى 200 ألف توكن على خادم B300 مزود بـ 8 وحدات GPU. يوضح هذا التحول كيف أن اختناقات مرحلة فك التشفير (decode-stage)، وليس عمل التعبئة المسبقة (prefill)، هي التي تملي الأداء مع توسع نوافذ التوكنات.
لماذا يكتسب هذا الاختبار أهمية
يرفع الاستنتاج (inference) ذو السياق الطويل التكاليف لمساعدي الدردشة، ومساعدي البرمجة، وأي تطبيق يجب أن يحتفظ بمئات الآلاف من التوكنات في الذاكرة. ويُعد Kimi-K3، وهو نموذج ذو معاملات ضخمة، أحد أول نماذج LLM مفتوحة الأوزان التي يمكنها التعامل براحة مع مثل هذه النوافذ، ولكن المحرك الذي يشغل النموذج هو ما يحدد ما إذا كان الطلب سينتهي في ثوانٍ أم دقائق.
يعد كل من vLLM و SGLang باستنتاج عالي الإنتاجية، ومع ذلك فإنهما يتبعان نهجين متضادين لمرحلة فك التشفير (decode stage). يحافظ vLLM على مسار فك التشفير بسيطاً، متجنباً المزامنة الإضافية التي يفرضها توازي سياق فك التشفير (Decode Context Parallelism - DCP). بينما يقوم SGLang بتوزيع قراءات ذاكرة التخزين المؤقت للمفاتيح والقيم (KV cache) عبر وحدات GPU متعددة باستخدام DCP، وهي تقنية يمكنها توزيع عرض نطاق الذاكرة (memory bandwidth) على حساب زيادة الاتصالات.
بيئة الاختبار
- الأجهزة: خادم واحد مزود بثماني وحدات NVIDIA B300 GPU، لكل منها ذاكرة متطابقة.
- أعباء العمل: إعدادان لطول السياق – 64 ألف توكن (الحد الأدنى لـ "السياق الطويل") و200 ألف توكن (الحد الأقصى الذي تستهدفه العديد من العروض البحثية).
- المقاييس: الوقت الإجمالي لمعالجة دفعة ثابتة من المطالبات؛ ويُشتق معدل الإنتاجية من فرق التوقيت.
لقد أبقينا حجم الدفعة (batch size)، وأوزان النموذج، وأهداف استهلاك الذاكرة ثابتة. كان المتغير الوحيد الذي قمنا بتغييره بين عمليات التشغيل هو محرك الاستنتاج.
الأرقام المحسومة
| السياق | المحرك | الوقت (ثانية) | السرعة النسبية |
|---|---|---|---|
| 64 ألف | vLLM | 100.5 | – |
| SGLang | 150.8 | vLLM أسرع بـ ≈ 1.5× | |
| 200 ألف | vLLM | 295.2 | – |
| SGLang | 225.3 | SGLang أسرع بـ ≈ 1.31× |
انخفضت الإنتاجية (توكن في الثانية) بشكل كبير بالنسبة لـ vLLM عندما زاد السياق: انخفاض بمقدار 3.29× من 64 ألف إلى 200 ألف. بينما انخفضت إنتاجية SGLang بمقدار 1.25× فقط عبر نفس النطاق.
من أين يأتي الفارق
يقضي كلا المحركين وقتاً مماثلاً في مرحلة التعبئة المسبقة (prefill stage) – وهي تحميل المطالبة في ذاكرة التخزين المؤقت KV. ويظهر التباين في مرحلة فك التشفير (decode stage)، حيث يقوم النموذج بتوليد التوكنات واحداً تلو الآخر.
- 64 ألف توكن: تهيمن الاتصالات بين وحدات GPU. يتجنب مسار فك التشفير أحادي الـ GPU في vLLM المزامنة الإضافية التي يتطلبها DCP، مما يسمح له بالانتهاء بشكل أسرع بنحو 1.5×.
- 200 ألف توكن: ينمو الـ KV cache ليصبح كبيراً جداً لدرجة أن قراءته تصبح هي عنق الزجاجة. يقوم DCP في SGLang، والمُعد بحجم 8، بتوزيع تلك القراءات عبر جميع وحدات GPU الثماني. وتتفوق مكاسب عرض النطاق الترددي على تكلفة الاتصال، مما يمنح SGLang تفوقاً واضحاً.
هناك ملاحظة عملية ثانوية تتعلق بضغط الذاكرة. أدى تشغيل أي من المحركين عند استهداف نسبة استهلاك ذاكرة تبلغ 0.95 إلى تكرار محاولات "نفاد الذاكرة" (OOM) على وحدات B300. أدى خفض الهدف إلى 0.92 إلى القضاء على هذه المحاولات واستقرار أوقات التشغيل، وذلك على حساب زيادة طفيفة في زمن الاستجابة (latency).
من الرابح ومن الخاسر
- المطورون ذوو السياقات القصيرة إلى المتوسطة (≤ 64 ألف توكن) يستفيدون أكثر من مسار فك التشفير الرشيق في vLLM. حيث يترجم سرعة الإنجاز إلى فواتير حوسبة سحابية أقل وحلقات تجربة مستخدم أكثر سلاسة.
- الفرق التي تبني أدوات تحليل عميق أو أدوات بحثية والتي تحتاج إلى الاحتفاظ بمئات الآلاف من التوكنات في السياق، يجب أن تميل نحو SGLang مع تفعيل DCP. فمعدل إنتاجيتها الأكثر استقراراً يقلل من مخاطر انتهاء المهلة (time-outs) ويحافظ على استهلاك أعلى للـ GPU مع ارتفاع متطلبات الذاكرة.
- مخططو الأجهزة يدركون أن مجرد عدد وحدات GPU لا يضمن التوسع الخطي. فعندما يصبح عرض نطاق KV هو نقطة الاختناق، فإن البنى التحتية التي يمكنها موازاة قراءات التخزين المؤقت – سواء عبر DCP أو ترقيات أنظمة الذاكرة المستقبلية – ستستخلص قيمة أكبر من نفس السيليكون.
وجهة نظر معارضة: هل يمكن لـ vLLM سد الفجوة؟
حتى تظهر بيانات جديدة، تظل الأرقام الحالية هي أفضل مقارنة عامة متاحة.
ما يجب مراقبته لاحقاً
- نوافذ السياق الأكبر ستزيد من الضغط على عرض نطاق KV بشكل أكبر، مما قد يؤدي إلى توسيع فجوة تفوق SGLang.
الخلاصة
عندما تحتاج إلى خدمة طلبات ذات سياق طويل على عنقود (cluster) يعتمد على B300، اختر المحرك الذي يناسب نافذة التوكنات الخاصة بك. بالنسبة لأعباء العمل التي تبلغ 64 ألف توكن، يوفر vLLM استنتاجاً أسرع بنحو 1.5×. وإذا تجاوزت 200 ألف توكن، يصبح فك التشفير المدفوع بـ DCP في SGLang هو الخيار الأكثر كفاءة، حيث تنخفض إنتاجيته بمقدار 1.25× مقارنة بانخفاض vLLM البالغ 3.29×. اضبط استهلاك الذاكرة على 0.92 لتجنب محاولات OOM، وتذكر أن المحرك "الأفضل" يعتمد على السياق، وليس حلاً واحداً يناسب الجميع.
