الفصل 2 — تحدي ذاكرة KV
المقالة الثانية من الجولة الفصلية لـ LLM Primer VI: توسيع أنظمة الذكاء الاصطناعي. الفصل الذي يُسمِّي بنية البيانات التي تلتهم VRAM كل نظام تخديم قبل أن تتاح الفرصة للأوزان أصلاً.
لماذا يوجد هذا الفصل
تتجنَّب الحلقة الانحدارية الذاتية في الفصل 1 العملَ التربيعي بالتذكُّر. عند كل خطوة فك تشفير، يحتاج النموذج إلى الاهتمام بكل رمز سابق، وفعل ذلك من الصفر يعني إعادة تشغيل التعبئة الأمامية بأكملها في كل تكرار — أي مضاعف N على طول الإكمال. ذاكرة المفتاح والقيمة KV هي مساحة العمل التي تُوفِّر هذه الحسابيات. تُخزِّن إسقاطات K وV لكل رمز في كل طبقة، بحيث تحسب الرموز اللاحقة K وV الخاصة بها فقط وتقرأ السابقة. الذاكرة سبب بقاء فك التشفير عند O(N) تقريباً بدلاً من O(N²). وهي أيضاً في كل نظام إنتاجي رأيتُه أكبر مُستهلك مفرد لـ VRAM. يمشي الفصل 2 على الصيغة التي تحكم حجمها، والمُتغيِّرات المعمارية التي تُقلِّصها، ومشكلة التجزئة التي تُدمِّر الطريقة الساذجة لتخصيصها.
2.1 الصيغة التي تحكم حجم الذاكرة
ذاكرة KV لتسلسل واحد هي 2 × L × H_kv × D × S × bytes: موتِّرَان (K وV)، وL طبقات، وH_kv رأس مفتاح/قيمة، وبُعد رأس D، وطول تسلسل S، وبايتات دقة لكل عنصر. اضرب في حجم الدُّفعة لرقم مستوى الأسطول. كل محور مضاعف. Llama-3-70B بـ L=80 وH_kv=8 (GQA) وD=128، عند S=8,192 وBF16، يحمل نحو 40 GB من الذاكرة لكل تسلسل — قبل الدُّفعة. عند دُفعة 32، تقترب الذاكرة وحدها من 1.3 TB، أي أضعافاً من الأوزان نفسها وأضعافاً من VRAM في H100. Llama-2-70B، آخر نموذج MHA رئيسي، له H_kv=64 بدلاً من 8، وذاكرته أكبر بثمانية أضعاف للتكوين نفسه. الصيغة ليست فضولاً؛ إنها الرقم الذي يُحدِّد كم مستخدماً متزامناً تستطيع الرقاقة أن تحمل. كل ميزانية ذاكرة أخرى على الصندوق — التنشيطات، ونفقات إطار العمل، ومخازن مؤقتة — يجب أن تنسجم حولها.
2.2 MHA وGQA وMQA خيارات تصميم لحجم الذاكرة
مصطلح H_kv هو المصطلح الذي هندست العماراتُ الحديثة على تصغيره. الاهتمام مُتعدِّد الرؤوس (MHA) يستخدم رأس K وV واحداً لكل رأس استعلام؛ الذاكرة سمينة، والجودة أعلى، ويستطيع كل رأس تخصيصَ فكرته عمَّا يهتم به. الاهتمام مُتعدِّد الاستعلامات (MQA) ينهار إلى رأس K وV مشترك واحد؛ تتقلَّص الذاكرة بمعامل H، لكن الرؤوس تفقد التخصص وتفقد جودة قابلة للقياس في السياقات الأطول. الاهتمام مُجمَّع الاستعلامات (GQA)، الذي قُدِّم في 2023 وصار الآن الخيار المهيمن لـ Llama-3 وMistral وMixtral وQwen وDeepSeek، يُقسِّم رؤوس الاستعلام إلى G مجموعات تتشارك K وV؛ G = H/8 نموذجي يمنح تقليصاً ثمانياً في الذاكرة بكلفة جودة صغيرة جداً بحيث لا تستطيع أطقم التقييم رؤيتها بصورة موثوقة. GQA ليس مجاناً — يُقلِّل عدد معاملات إسقاط K/V كذلك، وتُوزَّع تلك الميزانية في مواضع أخرى من النموذج — لكن التوزيع تجريبياً نادراً ما يضر. MLA (الاهتمام مُتعدِّد الكوامن، DeepSeek-V2) يدفع أبعد بذاكرة كامنة منخفضة الرتبة؛ إنه اتجاه البحث، لكن نشرات الإنتاج في 2026 تهيمن عليها GQA.
2.3 التخصيص الساذج يهدر معظم الميزانية
الطريقة البديهية لتخصيص ذاكرة KV — حجز شريحة متجاورة لكل تسلسل بحجم أقصى طول ممكن — تفشل عند التماس مع حركة المرور الحقيقية. أغلب الطلبات تنتهي قبل الحد الأقصى بكثير؛ الذيل المحجوز ذاكرةٌ ميتة. على Llama-3-70B بحد 32K، إكمالٌ من 1,000 رمز يهدر 31 شريحة من ذاكرة KV. الدُّفعة 32 بحد 8K ومتوسط طول 800 تترك نحو 90 بالمئة من ذاكرة KV المحجوزة غير مُستخدَمة في أي لحظة. الأسوأ أن الترتيب غير مرن: الوافد الجديد لا يستطيع استخدام ذيل تسلسل آخر غير المستخدَم، لأن الذيل مُلتزَم فعلاً. ينهار التزامن إلى ما تُتيحه ميزانية الحالة الأسوأ، لا إلى ما يستطيع متوسط حركة المرور دعمه. المشكلة تجزئة داخلية — نفس نمط الفشل الذي حلَّته أنظمة التشغيل بالتصفيح في الستينيات. يُوضِّح الفصل 8 كيف يُعبر PagedAttention بهذا الحل.
ما يُمهِّد له الفصل 2
ستعود صيغة الذاكرة ومحاورها للظهور كلما احتاج فصل لاحق للتفكير في كم مستخدماً يسع GPU واحد. يستخدمها الفصل 3 لتوضيح لماذا تفوق سعة VRAM أهمية FLOP عند اختيار GPU للتخديم. يستخدمها الفصل 7 لتوضيح لماذا يُقيَّد التجميع المستمر بذاكرة KV لا بالنموذج. يستخدمها الفصل 8 لتبرير PagedAttention وإخلاء H2O والتخزين المؤقت للبادئات — ثلاث تقنيات غرضها بأكمله جعلُ الذاكرة تسلك سلوك ذاكرة افتراضية مُصفَّحة أكثر منها شريحة بايتات محجوزة. الصيغة هي قواعد بقية حجج الذاكرة في الكتاب.
التالي — الفصل 3: وحدات GPU لمراكز البيانات للذكاء الاصطناعي التوليدي. السيليكون الذي يجب أن يحمل الأوزانَ وذاكرة KV معاً، مقروءاً بالآلية لا بورقة المواصفات.