هل حاولت يومًا استضافة نموذج لغوي كبير على وحدة معالجة الرسوميات الخاصة بك وشعرت وكأنك تبنيت حيوان Tamagotchi جائعًا جدًا؟ أنت تطعمه VRAM، وتدلل النواة، وعندما تطلب أخيرًا إجابة... يرمش إليك لمدة خمس ثوانٍ ويهرب. كانت هذه هي عطلة نهاية الأسبوع الخاصة بي مع خادم LLM "عادي". ثم قمت بتثبيت vLLM.
تنبيه: vLLM هو المحرك مفتوح المصدر الذي يجعل استنتاج LLM يبدو وكأنك استبدلت دراجتك ثلاثية العجلات بسيارة Tesla. يتعمق هذا الاستعراض لـ vLLM في ماهيته، وكيف يضغط المزيد من الرموز المميزة من ميزانية الأجهزة الخاصة بك، وأين يتألق، وأين يتعثر، ومن يجب أن يضعه في سلة التسوق، أو المجموعة، أو كومة "ربما لاحقًا".
ما هو vLLM، باللغة الإنجليزية البسيطة (وبدموع أقل من وحدة معالجة الرسوميات)؟
vLLM هو محرك استنتاج وخدمة مفتوح المصدر للنماذج اللغوية الكبيرة. فكر فيه على أنه مراقب الحركة الجوية، ومعالج الأمتعة، وشركة طيران مخفضة - الشيء الذي يجدول الطلبات، ويحزم الرموز المميزة في ذاكرة وحدة معالجة الرسوميات، وينطلق بكفاءة دون ترك مقاعد (VRAM) فارغة. إنه يغلف النماذج التي تعرفها - Llama، Mistral، Mixtral، Phi، Qwen، Gemma - خلف واجهات برمجة تطبيقات مألوفة (على غرار OpenAI ومتوافقة مع OpenAI)، ثم يشحنها بشدة بحيل الذاكرة الذكية والجدولة.
إذا حاولت تشغيل LLMs بحلقات ساذجة أو حتى أطر خدمة للأغراض العامة، فربما تكون قد التقيت بأكبر قاتل للسرعة: الذاكرة المهدرة. إن حركة vLLM المميزة هي PagedAttention، وهو مدير ذاكرة ديناميكي يعامل ذاكرات التخزين المؤقت للانتباه الرئيسية/القيمة مثل الصفحات في نظام التشغيل. ترجمة: بدلاً من منح كل محادثة بنتهاوس خاص في VRAM، فإنه يحول البنتهاوس إلى مساحة عمل مشتركة. يمكن أن يتسع المزيد من الأشخاص (الطلبات). يكتب الجميع بشكل أسرع.
لمن هذا الاستعراض لـ vLLM؟
- الفرق التي تبني تطبيقات الذكاء الاصطناعي التي تريد دردشة منخفضة الكمون ووظائف دفعية ذات إنتاجية عالية.
- الأشخاص الذين يبحثون عن بديل مفتوح المصدر لنقاط نهاية LLM التجارية.
- الباحثون الذين يحتاجون إلى تبديل سريع للنماذج دون التضحية بالأداء.
- المبتدئون العمليون الذين يحاولون تقليل تكاليف الرموز المميزة عن طريق الاستضافة الذاتية.
إذا كنت في وضع "أريد فقط مربع مطالبة واهتزازات"، فقد تفضل واجهات برمجة تطبيقات مُدارة. إذا كنت في وضع "أريد إنتاجية 10x بدون ميزانية 10x"، فاستمر في القراءة.
الميزات الرئيسية في vLLM (ولماذا يجب أن تهتم)
- PagedAttention: ترحيل الذاكرة لذاكرات التخزين المؤقت للانتباه KV. إنه السبب في أن vLLM يمكنه التوفيق بين الكثير من الطلبات دون إسقاط الإطارات.
- التجميع المستمر: تنضم الطلبات الجديدة إلى الدُفعات قيد التنفيذ، لذلك تظل وحدات معالجة الرسوميات مشغولة ويظل الكمون سليمًا.
- واجهات برمجة تطبيقات متوافقة مع OpenAI: قم بتوصيلها بالأدوات ومجموعات SDK المصممة لـ OpenAI بأقل قدر من تغييرات التعليمات البرمجية.
- دعم الموتر/التكميم: FP16 و BF16 والأوزان الكمية الشائعة (مثل AWQ و GPTQ حيثما ينطبق ذلك)، بحيث يمكنك وضع عقول أكبر في وحدات معالجة رسوميات أصغر.
- وحدات معالجة رسوميات متعددة وخدمة موزعة: قم بتوسيع نطاق التشغيل عندما تبدأ A100 الفردية في التعرق.
- رموز البث: يرى المستخدمون الكلمات مكتوبة مثل مشهد اختراق في هوليوود، مما يجعل كل شيء يبدو أسرع بطريقة ما.
- دعم LoRA/المحول (يعتمد على النموذج): مفيد إذا كنت تخدم متغيرات مضبوطة بدقة على نفس النموذج الأساسي.
قصة الإعداد السريع (المعروفة أيضًا باسم: ما مدى السرعة التي يمكنني الوصول بها إلى الرمز المميز الأول؟)
- قم بتثبيت vLLM عبر pip. لا توجد دائرة استدعاء مطلوبة:
pip install vllm
- وجهه إلى نموذج على Hugging Face أو الأوزان المحلية الخاصة بك.
- قم بتشغيل الخادم بنقطة نهاية متوافقة مع OpenAI.
- Curl it أو قم بتوصيله بعميل OpenAI الحالي الخاص بك.
في اختباراتي عبر وحدة معالجة رسوميات للمستهلكين ومحطة عمل مزودة ببطاقة مركز بيانات، شعرت أن الوقت المستغرق للوصول إلى الرمز المميز الأول أسرع بشكل ملحوظ من إعدادات خادم المحولات القياسية، خاصةً تحت التحميل. يظهر السحر عندما يتزاحم العديد من المستخدمين (أو وظائفك المجمعة) على الخادم - يحافظ vLLM على تغذية وحدة معالجة الرسوميات.
معايير الأداء والكمون والأجواء الواقعية
إليك ما برز خلال مراجعة vLLM:
- الإنتاجية: مع التجميع المستمر، يمكن لـ vLLM خدمة العديد من الطلبات في الثانية دون تحويل وحدة معالجة الرسوميات الخاصة بك إلى سخان فضاء يطبع علامات الحذف فقط. كلما زاد عدد الطلبات المتزامنة التي تلقيها عليه (في حدود المعقول)، زادت مرونته.
- الكمون: يعد الوقت المستغرق للوصول إلى الرمز المميز الأول تنافسيًا، وأحيانًا أفضل، من خوادم مفتوحة المصدر أخرى جربتها - خاصةً عند تمكين البث وكانت المطالبات قصيرة إلى متوسطة.
- المخرجات الطويلة: الجيل المستدام ثابت. بالنسبة للأجيال الطويلة جدًا، سترغب في ضبط max_tokens وإعدادات الحزمة (إذا كان يجب عليك ذلك) ودرجة الحرارة للحفاظ على VRAM مريحًا.
- أحمال العمل المختلطة: إنه جيد بشكل غريب في التعامل مع الدردشة ومطالبات استخدام الأدوات والتسجيل الدفعي الخفيف في نفس الوقت. مثل مطعم يقدم الفطائر والباد تاي دون تسميم أي شخص.
ستعتمد أرقامك على فئة وحدة معالجة الرسوميات والتكميم وأطوال التسلسل واختيار النموذج. لكن النمط ثابت: يتقدم vLLM مع زيادة التزامن.
أين يتألق vLLM مقارنة بخوادم LLM الأخرى
- إذا كانت أولويتك هي خدمة الكثير من المستخدمين التفاعليين بأقل قدر من الانخفاضات في زمن الوصول، فإن جدولة vLLM و PagedAttention هما الأبرز.
- إذا كنت بحاجة إلى نقاط نهاية متوافقة مع OpenAI لإدخالها في التطبيقات الحالية، فهي سهلة التوصيل والتشغيل.
- إذا كنت تعمل على تحسين التكلفة، فيمكنك غالبًا الانتقال إلى فئة وحدة معالجة رسوميات أصغر قليلاً أو الحصول على المزيد من req/sec من نفس الجهاز. لقد انتعش المديرون الماليون في كل مكان.
أين يمكن أن يحبطك vLLM (إنه ليس غبار الجنيات السحري)
- توافق النموذج ليس عالميًا. تعمل معظم الأوزان المفتوحة الشائعة بشكل رائع، ولكن البنى الغريبة أو تنسيقات الكميات المتطورة قد تتطلب تعديلًا أو قد لا تكون مدعومة بعد.
- الذاكرة لا تزال فيزيائية. يساعد PagedAttention، لكن نموذج 7B على وحدة معالجة رسوميات 6GB مع 100 مستخدم متزامن لا يزال مسلسلًا كوميديًا، وليس خادمًا.
- قد يتطلب تعدد المستأجرين المتقدم والحواجز الواقية الاقتران بأدوات أخرى أو كتابة رمز لاصق.
- تتحرك التحديثات بسرعة. هذه إضافة للميزات، وناقص إذا كنت تريد استقرارًا راكدًا.
vLLM مقابل المشتبه بهم المعتادين (مواجهة ودية)
- استنتاج إنشاء النص (TGI): TGI مصقول وشائع في المؤسسات. غالبًا ما يتفوق vLLM عليه في الإنتاجية من خلال التجميع الديناميكي و PagedAttention، خاصةً لأحمال العمل الثرثرة. يتمتع TGI بتكامل قوي مع Hugging Face وبيئة عمل إنتاجية قوية. اختر vLLM لسرعة الخدمة الأولية وواجهات برمجة تطبيقات شبيهة بـ OpenAI؛ اختر TGI إذا كنت متعمقًا في أدوات HF وتريد أنماط العمليات الخاصة بهم.
- OpenLLM/FastChat/آخرون: العديد منهم رائعون للتجريب. يفوز vLLM عادةً في التزامن وكفاءة الذاكرة. إذا كنت تقوم ببناء تطبيق للمستهلكين بحركة مرور متقطعة، فإن جدولة vLLM تساعد في الحفاظ على الذيل قصيرًا.
- مجموعات Triton/Transformers المخصصة: يمكنك تصميم خادم متوسط يدويًا، لكن vLLM يحزم الحيل التي ستبنيها على أي حال - ولا يتعين عليك صيانة قيمة مدينة صغيرة من النوى.
غوص عميق: لماذا PagedAttention مهم
تخيل مساحة التفكير في انتباه نموذجك على أنها لوحة بيضاء عملاقة. كل محادثة تعتمد عليها. تقوم معظم الخوادم بتعيين قسم كامل - حتى لو كانت المحادثة عبارة عن رسومات شخبطة ورمز تعبيري مبتسم. يقسم PagedAttention هذه اللوحة البيضاء إلى ملاحظات لاصقة ويقوم بتبديلها داخل وخارج. يمكن للمزيد من الأشخاص الرسم مرة واحدة، وتقليل الفجوات، وتقليل المساحة المهدرة. هذا هو السبب في أن vLLM يحافظ على الأداء عندما يظهر العالم الحقيقي - المعروف أيضًا باسم العديد من المستخدمين الذين يسألون أشياء عشوائية.
تجربة المطور: مريحة أم مقرمشة؟
- راحة واجهة برمجة التطبيقات: يمكنك الحصول على نقاط نهاية REST تحاكي OpenAI. أحضر العملاء والقوالب والمُسجلين الحاليين.
- التكوينات: الإعدادات الافتراضية المعقولة، مع الكثير من العلامات لأحجام الدُفعات والتوازي الموتري والتكميم ومقابض الجدولة.
- إمكانية المراقبة: نقاط نهاية المقاييس والسجلات وخطافات Prometheus موجودة، على الرغم من أنك ستضيف على الأرجح التتبع الخاص بك.
- إمكانية التوسيع: دعم المكونات الإضافية لوحدات الترميز والمحولات والخلفيات يتحسن. إذا كنت تحب قراءة التعليمات البرمجية في منتصف الليل، فإن المستودع نشط وودود.
حساب التكلفة: كيف يغير vLLM فاتورة وحدة معالجة الرسوميات
- تحسين الاستخدام = عدد أقل من الدورات الخاملة. إذا كنت تدفع بالساعة (السحابة) أو تستهلك (في أماكن العمل)، فإن زيادة إنتاجية vLLM تترجم إلى المزيد من الرموز المميزة لكل دولار.
- مكاسب التكميم: يمكن أن يؤدي تشغيل AWQ/GPTQ/INT8 حيثما كان مدعومًا إلى تقليل آثار VRAM والسماح لك بتقليل مستوى وحدة معالجة الرسوميات - أو احتواء المزيد من الوظائف المتزامنة لكل بطاقة.
- مقياس أفقي: عندما تحتاج إلى المزيد من القوة، يعمل vLLM عبر وحدات معالجة رسوميات وعقد متعددة. يمكنك النمو خطيًا دون إلقاء الهندسة المعمارية الخاصة بك في الخلاط.
قاعدة التجربة: إذا كانت خدمتك تحتوي على أكثر من عدد قليل من المستخدمين المتزامنين أو كنت تدير وظائف مجمعة على شكل موجات، فإن كفاءة vLLM تؤتي ثمارها بسرعة. إذا كنت تختبر المطالبات فقط، فهذا أمر لطيف.
سيناريوهات واقعية: أين يكسب vLLM رزقه
- مساعدو الدردشة مع الكثير من المستخدمين المتزامنين: دعم العملاء أو مساعدة تكنولوجيا المعلومات الداخلية أو هذا التطبيق الذي يساعد الطلاب على تبادل الأفكار في المقالات قبل خمس دقائق من منتصف الليل.
- خطوط أنابيب إنشاء المحتوى: مخططات تفصيلية للمدونات ومسودات رسائل البريد الإلكتروني وتعليقات التعليمات البرمجية - يتم إنشاؤها بالتوازي بدون قائمة انتظار تبدو وكأنها DMV.
- وكلاء مدعومون بالأدوات: عندما يتوقف نموذجك مؤقتًا لمكالمات الأدوات، فإن تجميع vLLM يبقي وحدة معالجة الرسوميات مشغولة بطلبات أخرى.
- أنظمة RAG: يعمل vLLM بشكل جيد كطبقة توليد بينما يقوم المسترجع الخاص بك بأشياء الدودة الكتبية في مكان آخر.
نصائح إعداد vLLM (تم تعلمها بالطريقة الممتعة)
- ابدأ بالنموذج الذي تخطط لتقديمه بالفعل. لا تقم بتقييم 3B صغير ثم قم بنشر 70B وتساءل لماذا تصرخ وحدة معالجة الرسوميات الخاصة بك.
- اضبط الحد الأقصى لطول السياق. يؤدي تضخيم السياق إلى تفجير VRAM؛ الحجم المناسب يحافظ على التزامن مرتفعًا.
- تمكين البث. يشعر المستخدمون باستجابات أسرع، ويمكنك مسح رموز واجهة المستخدم مبكرًا.
- اختبر بأنماط حركة المرور الحقيقية. متقطع؟ ثابت؟ مختلط؟ تتألق جدولة vLLM بشكل مختلف حسب الشكل.
- سجل كل شيء. يخبرك زمن الوصول p50 و p95 وإنتاجية الرمز المميز وأحداث OOM بمكان الضغط بعد ذلك.
الأمن والحوكمة: أحضر سروالك الخاص بالكبار
vLLM هو محرك خدمة، وليس بوصلة أخلاقية. إذا كنت بحاجة إلى إشراف أو تنظيف PII أو حدود المعدل أو عزل المستأجر أو مسارات التدقيق - فقم بتثبيت هذه الأشياء في البوابة أو طبقة التطبيق. الخبر السار: تجعل الواجهة المتوافقة مع OpenAI من السهل تبديل السياسات والبرامج الوسيطة المفضلة لديك.
الطباعة الدقيقة: التوافق والمحاذير في مراجعة vLLM هذه
- لن يكون كل بنية نموذج أو وزن كمي توصيل وتشغيل. تحقق من المستندات ومشكلات المجتمع. وتيرة الدعم سريعة، لكن الجدة تتجاوز الاستقرار دائمًا.
- الرجوع إلى وحدة المعالجة المركزية؟ vLLM هو الأسعد على وحدات معالجة الرسوميات. يمكنك التجربة على وحدة المعالجة المركزية، لكن الأمر يشبه محاولة الركض في سباق الماراثون بأحذية التزلج.
- تجزئة وحدات معالجة الرسوميات المتعددة قوية، ولكنها تتطلب تكوينًا دقيقًا. اختبر تجاوز الفشل والبدايات الدافئة، خاصةً لاتفاقيات مستوى الخدمة للإنتاج.
بداية سريعة: قائمة تحقق ذهنية
- الأجهزة: وحدات معالجة رسوميات مع VRAM كافية للنموذج المستهدف + حيز للتزامن.
- النموذج: اختر عائلة مدعومة جيدًا (Llama، Mistral، Mixtral، Qwen، Gemma) وتأكد من توافق وحدة الترميز/التكميم.
- الخدمة: قم بتشغيل vLLM مع تشغيل OpenAI API، وقم ببث الاستجابات، واضبط السياق و max_tokens بشكل معقول.
- المقياس: أضف وحدات معالجة رسوميات أو عقد. استخدم بوابة للتوجيه وحدود المعدل والمصادقة. ضع في اعتبارك التحجيم التلقائي إذا كانت السحابة.
- التكاليف: قم بقياس الرموز المميزة في الثانية والتزامن ومتوسط طول الإخراج. أعد التشغيل بعد كل تغيير.
تجدر الإشارة إلى: أين تتناسب Sider.AI مع هذه الصورة
تنبيه، أيها البناؤون: إذا كنت تحاول اختيار النماذج ومقارنة السرعة عبر المطالبات وعدم فقدان عقلك بشكل عام أثناء التكرار، فيمكن أن يكون Sider.AI فحصًا ممتازًا للعقل. يمكنك صياغة المطالبات واختبارها وتحسينها عبر خلفيات مختلفة، ثم الانتقال إلى vLLM عندما يحين وقت الاستضافة الذاتية للتكلفة أو التحكم. فكر في Sider.AI على أنه طاقم الحفرة الخاص بك - ثم vLLM كالسيارة التي تقودها عندما يفتح المسار. من يجب أن يختار vLLM الآن؟
- نعم: الشركات الناشئة التي لديها قواعد مستخدمين متزايدة، ومنصات داخلية تخدم العديد من الفرق، والفرق الإنتاجية التي تنتقل من واجهة برمجة تطبيقات مدفوعة إلى استضافة ذاتية.
- ربما: مطورو Solo يستكشفون الخيارات. إذا كانت حركة المرور الخاصة بك صغيرة جدًا، فقد تكون واجهات برمجة التطبيقات المُدارة أبسط (وأرخص) في الوقت الحالي.
- ليس بعد: المؤسسات المنظمة للغاية التي تحتاج إلى توافق وعزل جاهزين في طبقة الخدمة. ستحتاج إلى المزيد من الحواجز الواقية حوله أولاً.
إيجابيات وسلبيات vLLM (بدون تزيين)
الإيجابيات
- إنتاجية ممتازة في ظل التزامن
- واجهة برمجة تطبيقات متوافقة مع OpenAI تجعل عمليات الترحيل بسيطة
- كفاءة قوية في الذاكرة مع PagedAttention
- دعم جيد للنماذج المفتوحة الشائعة والتكميم
- مجتمع نشط وتيرة تطوير سريعة
السلبيات
- ليس دعمًا عالميًا للنموذج/الكمية؛ بعض العبث مطلوب
- الأفضل على وحدات معالجة الرسوميات؛ استخدام وحدة المعالجة المركزية هو في الغالب للتجارب العلمية
- يتطلب تعدد المستأجرين والحوكمة من الدرجة الإنتاجية إضافات
- يمكن أن تعني التغييرات السريعة حدوث صدمات عرضية في الترقية
الحكم في مراجعة vLLM هذه
vLLM هو مشروع مفتوح المصدر نادر يبدو ذكيًا أكاديميًا وعمليًا للإنتاج. إذا كنت جادًا بشأن تشغيل LLMs على نطاق واسع دون تدوير مزرعة GPU تتضاعف كساونا، فإنه ينتمي إلى قائمتك المختصرة - ربما في الأعلى. إنها ليست الطريقة الوحيدة لخدمة النماذج، ولكنها في الوقت الحالي واحدة من أسرع الطرق وأكثرها مرونة وأكثرها ملاءمة للمطورين.
بعبارة أخرى: إذا كان الإعداد الحالي الخاص بك يجعل المستخدمين ينتظرون وقتًا كافيًا لإعادة النظر في خيارات حياتهم، فسيساعدك vLLM على إرسال الإجابات قبل أن يتمكنوا من ذلك. وهذا هو الهدف كله، أليس كذلك؟
خطة العمل: اجعل LLM الخاص بك أسرع هذا الأسبوع
- اليوم الأول: قم بإعداد vLLM مع النموذج المستهدف الخاص بك. قم بتشغيل البث. اضربه بمطالباتك الحقيقية.
- اليوم الثاني: اضبط نافذة السياق وإعدادات الدُفعة. جرب تكميمًا مدعومًا لاحتواء المزيد من الطلبات.
- اليوم الثالث: أضف بوابة وسجلات. قم بقياس زمن الوصول p95 والرموز المميزة لكل دولار.
- اليوم الرابع والخامس: ادفع الكناري إلى المستخدمين الحقيقيين. قم بالتوسع إذا لزم الأمر. احتفل بشيء فوار (يعتبر سيلتزر).
وعندما يسأل رئيسك كيف ضاعفت الإنتاجية دون مضاعفة التكلفة، فقل كلمتين فقط: "الاهتمام المرحل". ثم سلمهم مراجعة vLLM هذه واستمتع بالإيماءات كما لو كنت قد خططت لكل شيء على طول الطريق.
أسئلة مكررة
س1: هل vLLM جيد للفرق الصغيرة أم للمؤسسات الكبيرة فقط؟
كلاهما. إذا كنت تنتقل من واجهات برمجة تطبيقات مُدارة إلى واجهة برمجة تطبيقات مستضافة ذاتيًا لخفض التكاليف، فإن نقاط نهاية vLLM المتوافقة مع OpenAI تجعل التبديل سهلاً. بالنسبة للفرق الكبيرة، تتألق مكاسب الإنتاجية والتزامن عندما ترتفع حركة المرور.
س2: ما هي النماذج التي تعمل بشكل أفضل على vLLM؟
النماذج المفتوحة الشائعة مثل Llama و Mistral و Mixtral و Qwen و Gemma و Phi هي مسارات مطروقة جيدًا. تحقق من ملاحظات التوافق للمتغيرات الكمية - معظم التنسيقات الشائعة تعمل، ولكن المجموعات الغريبة قد تحتاج إلى تعديل.
س3: ما مقدار وحدة معالجة الرسوميات التي أحتاجها لتشغيل vLLM؟
طابق VRAM مع حجم النموذج الخاص بك ونافذة السياق، ثم أضف حيزًا للتزامن. يمكن لوحدة معالجة رسوميات واحدة عالية الذاكرة أن تخدم نموذج 7B-13B جيدًا؛ تستفيد النماذج الأكبر أو حركة المرور الكثيفة من إعدادات وحدات معالجة الرسوميات المتعددة.
س4: هل يقلل vLLM من زمن الوصول أم يزيد من الإنتاجية فقط؟
كلاهما، حسب حجم العمل. يعمل التجميع المستمر على تحسين استخدام وحدة معالجة الرسوميات لتحسين الإنتاجية، بينما يساعد البث والجدولة الفعالة في الوقت المستغرق للوصول إلى الرمز المميز الأول وزمن الوصول في الذيل في تطبيقات الدردشة.
س5: كيف يقارن vLLM باستنتاج إنشاء النص (TGI)؟
غالبًا ما يتفوق vLLM على TGI في الإنتاجية مع PagedAttention والتجميع الديناميكي، خاصةً للدردشة التفاعلية. يميل TGI إلى تكامل Hugging Face وتلميع المؤسسات - يجب أن يقرر المكدس والأولويات الخاصة بك.