ضغط ذاكرة التخزين المؤقت KV الديناميكي استنادًا إلى إطار vLLM

الدافع

من خلال مراجعة الأوراق الأكاديمية الحديثة من العام الماضي في مجال التخفيف KV (H2O و SnapKV و PyramidKV)، نطبق التخفيف KV على طبقات مختلفة من النموذج. باستخدام استراتيجية التشذيب، نقوم بإزالة أزواج KV ذات الدرجات المنخفضة مع الاحتفاظ بتلك ذات الدرجات الأعلى والأقرب. يقلل هذا الأسلوب من استهلاك الذاكرة، وكذلك الحمل الحسابي و I/O، مما يؤدي في النهاية إلى تسريع الاستدلال.

التجارب

الخطوط الأساسية والإعدادات: قمنا بتشغيل جميع تجارب KV-Compress باستخدام تكاملنا مع vLLM المأخوذ من v0.6.2، مع التشغيل في وضع cuda graph بحجم كتلة 16. بالنسبة لجميع تجارب RTX 4090 / Llama-3.1-8B-Instruct، نستخدم استخدام ذاكرة GPU الافتراضي 0.9 ونضبط maxmodel-length على 32k. نقيم ضغطنا على Llama-3.1-8B-Instruct، ونقارن الأداء مقابل طرق الأساس التالية المقدمة في الأعمال السابقة:

  • vLLM-0.6.2
  • Novita AI، ضغط ذاكرة التخزين المؤقت Pyramid KV استنادًا إلى إطار vLLM

MMLU Pro و LongBench: نتحكم في نسب ضغط ذاكرة التخزين المؤقت KV المختلفة عن طريق تعيين أطوال نافذة منزلقة مختلفة على طبقات مختلفة. في التجربة، حددنا بشكل أساسي ثلاثة أطوال نافذة منزلقة مختلفة: 1024 و 1280 و 1536، وأجرينا اختبارات متقاطعة على أعداد مختلفة من الطبقات.

MMLU Pro: في اختبار MMLU Pro، أظهرت طبقات التخفيف KV المختلفة وأطوال النافذة المنزلقة المختلفة أداءً مختلفًا. مع مراعاة نسبة التسريع، يمكن ضمان دقة إجمالية تزيد عن 98%.

vllm-0.6.2 Novita AI
طبقات التخفيف KV كامل نافذة منزلقة = 1536
22 0.4517 0.4496
26 0.4517 0.4476
31 0.4517 0.4476

LongBench: في اختبار LongBench، اخترنا نافذة منزلقة بحجم 1024 لاختبار الأداء ووجدنا أن خسارة الدقة كانت حوالي 1.03%.

vllm base VS Novita AI

معايير الإنتاجية: في تطبيقات LLM الواقعية، يعد طول الإدخال/الإخراج 5000/500 هو التكوين الأكثر شيوعًا، ويجب أن يكون مؤشر TTFT أقل من 2 ثانية. بناءً على هذه الشروط، أجرينا اختبارات مقارنة الأداء الدفعي، والتي أسفرت عن تسريع استدلال vLLM بمقدار 1.5x.

الإنتاجية vllm-0.6.2 Novita AI
طبقات التخفيف KV كامل نافذة منزلقة = 1536
22 1 1.26
26 1 1.34
31 1 1.44

التغييرات الرئيسية

تتضمن الملفات المعدلة بشكل أساسي:

  • Flash attention، التسجيل المتناثر استنادًا إلى Flash attention مع ضمان أن خسارة أداء kernel أقل من 1%.
  • Paged attention و reshape_and_cache، التسجيل المتناثر استنادًا إلى Paged attention ومزامنة التسجيل المتناثر في مراحل prefill و decode.
  • Block_manager والوظائف الأخرى المتعلقة بإدارة الذاكرة وتحضير tensor.

الخاتمة

تدعم Novita AI أيضًا التوازي tensor لتمكين نماذج مثل Llama3-70B من العمل على عدة وحدات GPU. حاليًا، لا تدعم الكود المفتوح لأسباب معينة، لكننا نأمل في المساهمة ببعض التقنيات والأفكار للمجتمع، ونرحب بالتبادل التقني مع الجميع.

تنبيه مهم: الميزات التالية غير مدعومة بعد في vLLM-0.6.2:

  • Chunked-prefill
  • التخزين المؤقت للبادئة (Prefix caching)
  • FlashInfer و backends أخرى غير FlashAttention
  • فك الترميز التخميني (Speculative Decoding)

Novita AI هي منصة سحابية للذكاء الاصطناعي تقدم للمطورين طريقة سهلة لنشر نماذج الذكاء الاصطناعي باستخدام واجهة API البسيطة لدينا، مع توفير GPU سحابي بأسعار معقولة وموثوق لبناء وتوسيع النماذج.

القراءة الموصى بها

  1. كيف يحقق التخفيف KV تسريعًا بمقدار 1.5x لـ vLLM
  2. افتح قوة الدردشة الصفرية لـ Llama 3–8b: نصائح وتقنيات خبيرة
  3. استخدم Clipboard Conqueror مع مفتاح واجهة Novita AI لزيادة إنتاجية المطور