الفصل 8 — الجيل التالي من إدارة ذاكرة KV

تم النشر في: 1447-11-13 آخر تحديث في: 1448-01-23 الإصدار: 1
الفصل 8 — الجيل التالي من إدارة ذاكرة KV

الفصل 8 — الجيل التالي من إدارة ذاكرة KV

المقالة الثامنة من الجولة الفصلية لـ LLM Primer VI: توسيع أنظمة الذكاء الاصطناعي. الفصل الذي يُعبِر برؤية تصفيح نظام التشغيل إلى محرك الاستدلال — ويُحوِّل ذاكرة KV من شريحة بايتات محجوزة إلى مورد مُشترَك قابل للإخلاء وقابل للتخزين المؤقت للبادئات.


لماذا يوجد هذا الفصل

ترك الفصل 7 التجميع المستمر يحمل ديناً. تدخل التسلسلات وتخرج في كل تكرار؛ تخطيطٌ ساذج يمنح كل مكان شريحته بالحجم الأقصى، وأغلبها مهدور؛ ربح إنتاجية التجميع يُعاد جزئياً. الدَّين تجزئة داخلية، وهو بالضبط نمط الفشل الذي حلَّته أنظمة التشغيل بالتصفيح في الستينيات. الفصل 8 حول تطبيق ذلك الحل على تخديم LLM: قسِّم ذاكرة KV إلى كتل فيزيائية صغيرة، افصلها عن مواقع الرموز المنطقية بجدول صفحات، ودع سياسات إخلاء وتخزين مؤقت تسترد الكتل أو تُشاركها عبر التسلسلات. PagedAttention هو الحركة التأسيسية؛ وH2O وInfiniGen سياسات الإخلاء؛ والتخزين المؤقت للبادئات هو التقنية التي تدع عنقود إنتاج يخدم ملايين الطلبات الوكيلية على عشرة GPU.

في سطر واحد: عامِل ذاكرةَ KV كذاكرة افتراضية مُصفَّحة — كتل صغيرة، جدول صفحات، مشاركة بعدَّاد مراجع — وتتوقَّف مشكلة الذاكرة في التجميع المستمر عن كونها مشكلة.

8.1 PagedAttention هو ذاكرة افتراضية لذاكرة KV

ورقة PagedAttention من vLLM (2023) ترفع رؤية نظام التشغيل مباشرةً إلى المحرك. تُقسَّم ذاكرة KV إلى كتل ثابتة الحجم — عادةً 16 رمزاً لكلٍّ — مُحتفَظ بها في تجمُّع فيزيائي مسطَّح. يُمثَّل التسلسل بجدول كتل: مصفوفة من المؤشرات تُخطِّط المواقع المنطقية إلى معرِّفات الكتل الفيزيائية. تأخذ نواة الاهتمام جدول الكتل كإدخال إضافي وتجمع المفاتيح والقيم بالإسناد غير المباشر بدل التقطيع المتجاور؛ على Hopper تمتصُّ L2 نمط الوصول العشوائي جيداً بحيث تعمل النواة في نسبة قليلة من نسخة الشريحة. الأرباح كبيرة. تنخفض التجزئة الداخلية من 60–80 بالمئة إلى نحو 4 بالمئة (كتلة ذيل جزئية لكل تسلسل)، مما يرفع التزامن المتاح 2–4×. مشاركة الكتل بعدَّاد مراجع تجعل المعاينات المُعقَّدة شبه مجانية — best-of-8 على مُوجِّه بطول 2,000 رمز ينخفض من 16,800 إلى 2,800 كتلة رموز — وهو الأساس الذي يُبنى عليه التخزين المؤقت للبادئات.

8.2 H2O وInfiniGen يُخليان الرموز التي لا تهم

يحل PagedAttention التجزئة لكنه لا يحل السياقات التي تفوق VRAM على أي تخطيط. سياق 200,000 رمز على Llama-3-70B يحتاج 60 GB من KV بجانب الأوزان. H2O («عرَّاف الضاربين بشدة») يُلاحظ أن أوزان الاهتمام أثناء فك التشفير تتركَّز على مجموعة صغيرة من المواقع المصدرية — رموز الحداثة، ورموز مصرف الاهتمام في البداية، ومجموعة نادرة من الإصابات ذات الصلة بالمحتوى — بينما تحصل معظم المواضع التاريخية على وزن صفر تقريباً. يتتبَّع المحرك نقاطاً تراكمية للاهتمام لكل موضع؛ عندما تقترب ميزانية KV للتسلسل من سقفها، يُخلي أقل المواضع نقاطاً باستثناء نافذة مضمونة الحفظ من الرموز الحديثة ورموز المصرف. التوفير كبير؛ والكلفة الدوام — إن احتاج استعلامٌ لاحق موضعاً أُخلي، فلا يستطيع المحرك الاسترداد. InfiniGen يُصقل المقايضة بالانتقاء الديناميكي القابل للاسترداد: بدل إسقاط الرموز نهائياً، يُنقل KV الخاصة بها إلى ذاكرة CPU وتُصفَّح مرة أخرى إن بدأ الاهتمام يتركَّز عليها. سياسة الإخلاء الصحيحة تعتمد على كم يُعيد عبء العمل الاستعلام عن تاريخه الطويل؛ الأعباء الوكيلية تُعاقِب الإخلاء الدائم وتُكافئ استرداد InfiniGen.

8.3 التخزين المؤقت للبادئات هو أعلى رافعة يفتحها PagedAttention

في حركة المرور الحقيقية، أول آلاف الرموز من أغلب المُوجِّهات متطابقة عبر الطلبات. خدمة الدردشة تُعيد استخدام نفس مُوجِّه النظام لكل محادثة. خدمة RAG تُلصق نفس النصوص المُسترجعة في المُوجِّه لكل مستخدم بحث عنها. الوكيل يحقن نفس أوصاف الأدوات وسقالات الاستدلال في كل خطوة. PagedAttention يجعل المشاركة ميكانيكية: جزِّئ المُوجِّه بأحجام كتل، إن كان الجزء في التخزين المؤقت العالمي للكتل المُعبَّأة بالحوسبة، وجِّه جدول كتل الطلب الجديد إلى الكتلة المُخزَّنة وتخطَّى تعبئة تلك البادئة أصلاً؛ إن لم يكن، تعمل التعبئة وتُسجَّل الكتلة الناتجة. معدلات الإصابة في الإنتاج مذهلة — فوق 99 بالمئة لمُوجِّه نظام خدمة دردشة، و30–60 بالمئة للبادئات المعتمدة على استرجاع RAG، وقرب 1.0 لسقالة وكيلية. RadixAttention من SGLang يأخذ الفكرة أبعد بشجرة radix تُفهرس البادئات المُشتركة بأي طول، لا فقط المُحاذاة للكتل. التخزين المؤقت للبادئات هو التقنية الوحيدة التي في الغالب تُحوِّل عنقود تخديم تجاوز الميزانية إلى عنقود تحت الميزانية.

يجدر بنا تذكُّره: إن كان عبء عملك يحوي مُوجِّه نظام مشتركاً، أو سقالة أدوات مشتركة، أو مجموعة استرجاع مستقرة، فالتخزين المؤقت للبادئات على الأرجح أعلى مفتاح عائد على الاستثمار تستطيع قلبه. قِس معدل الإصابة قبل افتراض أن محركك مُفعِّله؛ الرقم يُخبرك كم من تعبئتك الأمامية تدفع مرَّتَين.

ما يُمهِّد له الفصل 8

قلَّص التصفيحُ والإخلاءُ والتخزينُ المؤقت للبادئات أثرَ KV لكل رمز وجعل سلوك ذاكرة المحرك قابلاً للتناول عند تزامن عالٍ. ما لا تُعالِجه أيٌّ منها هو الاعتماد التسلسلي الجوهري لفك التشفير: رمز مُخرَج واحد لكل تكرار، لكل تسلسل، بغض النظر عن عدد الأماكن النشطة. يتناول الفصل 9 ذلك القيد بفك التشفير التخميني — عائلة تقنيات تُتنبَّأ برموز عدة قُدُماً بمسوَّدة رخيصة وتُتحقَّق من التخمين في تمرير أمامي واحد باهظ، مما يكسر أرضية رمز واحد لكل خطوة للتسلسلات الأهم لزمن الاستجابة الذي يُدركه المستخدم.


التالي — الفصل 9: فك التشفير التخميني. المسوَّدة والتحقق، وحساب متى يُؤتي التخمين ثماره.

هل تريد الصورة الكاملة؟ يشمل فصل الكتاب شيفرة بنية بيانات KV المُصفَّحة القابلة للتشغيل، وأعلام تكوين vLLM وSGLang للتخزين المؤقت للبادئات، ومفاتيح ضبط إخلاء H2O، وآلية النقل والاسترداد لـ InfiniGen، والعمارة المرجعية التي تُركِّب الأربعة في مكدَّس KV إنتاجي. اطّلع على LLM Primer VI على أمازون ←

SHO
SHO
مدير التكنولوجيا والمؤسس لشركة RECEIPTROLLER. يركز على البيانات، مدفوع بالابتكار، دائم الفضول.