أساسيات الذكاء الاصطناعي
لا يوجد مشكلة بت في ذاكرة التخزين المؤقت KV. لديها مشكلة هندسية.

عند نفس الدقة 2 بت، يؤدي أحد القرارات حول المحور الذي يتم تقريزه على تغيير درجة الاختبار من 2.88 إلى 63.53. المفاتيح والقيم تحتاجان إلى معاملة متضادة – والسبب في معادلة الانتباه، وليس في الأجهزة.
خذ Llama-2-13B. قم بتقسيم ذاكرة التخزين المؤقت للمفتاح والقيمة إلى مجموعة من الحجم 32 إلى بتين، مع ترك كل شيء آخر في مكانه – نفس النموذج، نفس ميزانية البت، نفس أحجام المجموعة، نفس الاختبارات.
اعتمادًا على عنصر واحد من قرار تنفيذ، تؤدي نتائج دقة CoQA إلى 2.88 أو 63.53. درجة استخدام الدقة الكاملة هي 66.37.
القرار لا يتعلق بكمية البتات الإجمالية المستخدمة. السؤال هو ببساطة ما المحور الذي تختاره لتقسيمه عند حساب كل معامل مقياس؟ عندما تقرر استخدام القناة كبُعد مجموعة (مفاتيح) والرمز كبُعد مجموعة (قيم)، تنتهي بنتيجة ضمن أربعة نقاط من أداء الدقة الكاملة. إذا قلبت أيًا من هذه الخيارات، ستفقد جودة. إذا قلبت كلاهما من هذه الخيارات، لن يعمل النموذج.

أربعة طرق لإنفاق نفس 2 بت على نفس ذاكرة التخزين المؤقت. نتائج من KIVI على Llama-2-13B عند حجم المجموعة 32.
التقريز عادة ما يُعتبر مجرد عنصر تحكم واحد: 8 بت، 4 بت، 2 بت، مع تكلفة دقة سلسة. داخل ذاكرة التخزين المؤقت KV، ليس الأمر كذلك. إنه اختيار أنظمة إحداثيات، وأنظمة مختلفة تنطبق على المفاتيح والقيم. يشرح هذا المقال لماذا. بإيجاز: الخطأ في التقريز يعتمد على مدى القيم داخل المجموعات؛ المفاتيح والقيم لها هيكل مختلف؛ وال人们 غالبًا ما يتعثرون لأنك لا تستطيع استخلاص المحور الصحيح من توزيع القيمة على الإطلاق. يجب عليك النظر إلى كيفية تغيير الخطأ بعد أن يستهلكه الانتباه. هذا يوفر مبدأً عامًا لضغط التنشيطات الوسيطة وجيدًا للاشتباه في خطأ الإعادة بناء كبديل للجودة.
لماذا ذاكرة التخزين المؤقت KV هي المكان الذي يحدث فيه هذا
خلال مرحلة التوليد، يخزن المحول جميع بيانات المشروع للمفتاح والقيمة (KV) للرموز التي تمت معالجتها في السابق في ذاكرة تخزين مؤقت حتى لا يضطر إلى إعادة حساب هذه البيانات مرة أخرى. هذه الذاكرة التخزينية المؤقتة تزداد بشكل خطي مع طول السياق وحجم الدفعة. في النهاية، سيؤدي هذا إلى جعل الذاكرة التخزينية المؤقتة أكبر من النموذج نفسه.
يمكن تحديد هذا النمو بسهولة عند النظر إلى استهلاك الذاكرة لجزء مختلف من النموذج. في تحليل KVQuant ل LLaMA-7B، تمثل الأوزان ما يقرب من 98 في المائة من الذاكرة عند طول تسلسل 512، مع 2 في المائة من التنشيطات. عند 128K سياق، يُقلب النسبة إلى حوالي 16 في المائة أوزان و 84 في المائة ذاكرة تخزين مؤقتة KV. عند النظر إلى تحليل OPT-175B المذكور بواسطة KIVI، وجدوا نتائج مشابهة. على وجه التحديد، عند حجم دفعة 512 مع رمز محفز 512، تصل ذاكرة التخزين المؤقتة KV إلى 1.2 تيرابايت – عدة مرات حجم أوزان النموذج.
然而، السعة هي نصف المشكلة هنا فقط. يجب على وحدة المعالجة المركزية قراءة ذاكرة التخزين المؤقت KV بأكملها من ذاكرة الجهاز لكل رمز يُنشئ. هذا يعني أن وحدة المعالجة المركزية تقرأ ذاكرة التخزين المؤقت KV، ويظل نواة الحساب في حالة عدم نشاط. وبالتالي، فإن تقليل حجم ذاكرة التخزين المؤقت بشكل عام يزيد من رأس المال المتاح للمعالجة ويقلل من الوقت المستغرق في انتظار نقل البيانات.
ما يتكون من خطأ التقريز
التقريز الصحيح للصحيح هو رياضيات بسيطة. لمجموعة من الأرقام، يتم تسجيل أصغر رقم كنقطة الصفر ثم يتم قسمة مدى المجموعة على عدد المستويات التي يمكن تمثيلها للحصول على حجم الخطوة. ثم يتم تقريب كل عنصر إلى أقرب خطوة. هناك نتائج فورية. أولاً، الخطأ لكل عنصر مقيد بنصف خطوة. ثانيًا، حجم الخطوة هو نطاق المجموعة مقسومًا على 2ᴮ − 1. عند 2 بت، لديك فقط 4 مستويات لتغطية أي انتشار موجود داخل المجموعة. لذلك، العنصر الذي يكون أكبر بمئة مرة مقارنةً بجيرانه لا يؤدي أداءً سيئًا فقط. يضخم حجم الخطوة لجميع العناصر الأخرى التي تشترك في نفس المجموعة، وجميعها تصبح أكثر خسة معًا. المجموعة هي وحدة الضرر. اختيار المحور يعني تحديد العناصر التي تعاني معًا. إعادة صياغة السؤال بشكل مختلف، لم يعد السؤال “كم عدد البتات التي يمكنني تحملها؟” ولكن “أين القيم المتطرفة وأستطيع عزلها؟”
المفاتيح: تعيش القيم المتطرفة في قنوات ثابتة
النماذج الكبيرة للغة تحتوي على تنشيطات غير عادية مقارنةً بالتنشيطات الأكثر شيوعًا. قائمة Sun وزميلاؤهم هذه التنشيطات الكبيرة جدًا عبر عائلات مختلفة من النماذج: في Mixtral 8x7B، يقع أكبر حجم بالقرب من 7000 بينما يكون متوسط حجم الميزة حوالي 0.3 – حوالي أربعة أرقام منفصلة. هذه نادرة؛ تظل في أبعاد نادرًا ما تتغير مع الإدخال، وليست عرضية. تعمل كتحيزات ضمنية، وهي ما يركز الانتباه على بضعة رموز فقط: سلوك غرق الانتباه. في ذاكرة التخزين المؤقت للمفتاح، هذا الهيكل واضح جدًا: تحمل قنوات محددة أحجامًا كبيرة باستمرار عبر كل رمز في التسلسل. قم بتقسيم الرمز، وستحتوي كل مجموعة على تلك القنوات المتطرفة، لذلك يتم تحديد حجم الخطوة لكل مجموعة بواسطة القنوات المتطرفة، ويدفع كل القنوات العادية ثمنها. قم بتقسيم القناة، وستشكل القنوات المتطرفة مجموعاتها الخاصة. نطاقها كبير ولكن منعزل؛ تُترك القنوات العادية بمفردها. تتوافق النتائج. تمت الإبلاغ عن متوسط خطأ إعادة بناء المفتاح 13.67 لكل رمز بواسطة KIVI مقابل 4.55 لكل قناة، وأهم من ذلك – خطأ درجة الانتباه 47.00 مقابل 9.60. ينتج التقريز لكل رمز خطأ درجة بنسبة خمس مرات. تتوافق الدرجات مع معايير ذات معنى للمفاتيح؛ التخزين لكل قناة يتفوق في كلا الجانبين.
القيم: حيث ينكسر الفهم
ذاكرة التخزين المؤقت للقيمة لا تظهر نمط قناة-متطرف. يبدو أنها مسطحة بشكل معقول. بمفردها، بحجة النطاق، يمكننا توقع أن أيًا من هذه المحاور سيتسبب في جودة ضغط مماثلة.
لا يحدث ذلك. بغض النظر عن كيفية تنفيذ إدارة المفتاح (النتائج 2.80 و 2.88)، يؤدي ضغط القناة لكل قيمة إلى انهيار النموذج.
وهنا اللحظة الحاسمة: إذا قمت بقياس هذا الخسارة باستخدام خطأ إعادة البناء الخام على التنسور الأصلي الذي تم ضغطه لكل قيمة، يبدو التقريز لكل قناة أفضل قليلاً، عند 3.73 مقابل 4.57. إذا قمت بالتحقق من ضغطك بالطريقة الواضحة، ستختار التكوين الذي يدمر النموذج.

الحل هو أن ذاكرة التخزين المؤقت للقيمة لا تقرأ أبدًا بشكل مباشر. يتم استهلاكها بواسطة منتج مصفوفة: إخراج الانتباه هو مجموع موزون للقيم عبر الرموز، مع درجات انتباه softmax كأوزان. بسبب ذلك، الخطأ ذو الصلة هو الذي يتم إدخاله خلال هذه العملية وليس داخل التنسورات نفسها. تم قياسه من حيث إخراج الانتباه، تم عكس الترتيب تمامًا. تم الإبلاغ عن الخطأ النسبي بواسطة KIVI لناتج الانتباه بسبب تقريز متجه القيمة لكل رمز عند 3.55 مقابل 49.89 لتقريز القناة – أكثر من أربعة عشر مرة أعلى لما يبدو خيارًا أفضل بناءً على كيفية ضغطه.
التوضيح هو انخفاض كثافة الانتباه، والتي قاسوها بنسبة 84.3 في المائة. يمكن أن يُعزى معظم المعلومات الموجودة في الإخراج إلى عدد قليل من الرموز المهمة جدًا. يحدد التقريز لكل رمز خطأ كل رمز إلى ذلك الرمز، لذلك يتم ضرب أخطاء الرموز غير المهمة bằng أوزان انتباه قريبة من الصفر ويتلاشى بشكل فعال. ينتشر التقريز لكل قناة خطأ كل رمز عبر مقياس قناة مشترك، لذلك يلوث الرموز السيئة تمثيل تلك التي تهم. انخفاض كثافة الانتباه الذي يجعل الانتباه فعالًا هو نفس الخاصية التي تجعل التقريز لكل رمز آمنًا.
الدرس المستفاد أوسع من ذاكرة التخزين المؤقت KV: قياس خطأ الضغط حيث يتم استهلاك التنسور، وليس حيث يتم تخزينه. افتراض ضمني يتم إجراؤه بواسطة خطأ إعادة البناء هو أن كل مكون من التنسور له وزن متساوٍ عند المساهمة في الإخراج النهائي. الانتباه صريح لا يفعل ذلك. أي عملية لاحقة توزن أو تحجب أو تفرق مدخلاتها كسر هذا الافتراض. القراء الذين يعرفون مقالي السابق حول نقاط عمياء في معايير التقييم في أنظمة الاسترجاع سيشعرون بأن هذه النتائج مشابهة للنتائج الموضحة سابقًا: يتم حساب معايير سهلة، ولكنها تقارير عن شيء آخر غير ما كان مقصودًا.
تضيف التضمين الدوراني المضاعف تعقيدات للمفاتيح
هناك بعض المشاكل مع استخدام التضمين الدوراني للموضع (RoPE). RoPE يُدير أزواج القنوات بناءً على الموضع النسبي لكل رمز. يُذيب هذا الخلط جزئيًا هيكل القناة الثابت الذي جعل التقريز لكل قناة للمفتاح يعمل في المقام الأول – قناة متطرفة تُدار إلى جيرانها، ويورث الجيران النطاق. إجابة KVQuant هي الترتيب: قم بتقريز المفاتيح قبل تطبيق الدوران، وقم بتطبيق RoPE بعد إلغاء التقريز. إلى جانب تقريز المفتاح لكل قناة، والتنسيقات غير الموحدة، واعزل جزءًا صغيرًا من القيم المتطرفة، وهذا يحصل علىهم تحت تدهور الحيرة 0.1 عند 3 بت، ويمكنه خدمة LLaMA-7B حتى 1 مليون رمز من السياق على جهاز A100-80GB واحد.
من المهم أيضًا فهم مستوى التأثير من RoPE. أبلغ مؤلفو الورقة “RotateKV” عن زيادة بنسبة 145 في المائة في أخطاء التقريز بعد إضافة RoPE، ولاحظوا أن قنوات القيم المتطرفة تختلف عبر رؤوس الانتباه – هذا هو السبب في أن تطبيق مصفوفة دوران مشتركة في كل مكان غير كافٍ، وتدوير الرأس أفضل.
ضريبة النظام، ولماذا لا يعتبر تفصيلًا
التقريز لكل رمز مناسب للفك بشكل جيد. يصل كل رمز؛ تقريزه، ثم إضافته إلى التسلسل (沿ًا بعد الرمز)، لا يتحرك شيء آخر.
然而، لا يتناسب التقريز لكل قناة. نظرًا لأن إحصائيات القناة تمتد إلى رموز لم يتم إنشاؤها بعد، لا يمكنك حساب معامل مقياس عند وصول رمز. حل KIVI هو الحفاظ على الرموز الأكثر حداثة – حتى 128 – في دقة كاملة في حزمة متبقية، وضغط المجموعة بمجرد جمع ما يكفي.
كما يحدث، تصبح الحزمة المتبقية حاملة للحمل، وليس مجرد شيء عرضي. على GSM8K مع Llama-2-7B، تُحقق الدقة الكاملة درجة 13.50. يتم تقريزها بالكامل إلى 2 بت مع المحاور الصحيحة، وتحقق درجة 5.76. نفس المحاور ونفس البتات، بالإضافة إلى حزمة متبقية من الرموز المُنشأة حديثًا بدقة كاملة، تُحقق درجة 12.74. نافذة متحركة من الرموز المُنشأة حديثًا بدقة كاملة سوف تسترجع الكثير مما تم فقده بسبب تقريز حازم على مشاكل متعددة خطوات صعبة – مما سيكون منطقيًا إذا كنا نعتبر أي الرموز التي كانت تُنظر إليها بواسطة سلسلة من العمليات الحسابية.
هناك فائدة كبيرة من القيام بكل هذه الأشياء بشكل صحيح – كما يُبلّغ KIVI، 2.6 مرة أقل استخدام ذاكرة ذروة ل Llama-2-7B، مما يسمح بأحجام دفعة تصل إلى 4 مرات أكبر، بالإضافة إلى 2.35 إلى 3.47 مرة أفضل إنتاجية على مهمة خدمة حقيقية.
ماذا تفعل مع هذا
- لا تستخدم مقريزًا واحدًا لكلاهما. استخدم مقريزات مختلفة للمفاتيح (لكل قناة) وللقيم (لكل رمز). трубة تطبيق مقريز واحد إلى “ذاكرة التخزين المؤقت KV” قد تضحى بالفعل بمعظم الجودة الممكنة عند استخدام عدد صغير من البتات لتمثيل كل قيمة.
- تقريز المفاتيح قبل RoPE. هذا هو вопрос صحة وليس تفضيل.
- احفظ نافذة دقة كاملة من الرموز المُنشأة حديثًا. على الرغم من أن تخزين مثل هذه النافذة يأخذ ذاكرة قليلة مقارنةً بحجم ذاكرة التخزين المؤقت، فإن هذه المنطقة تحدث معظم الدقة لمهام صعبة.
- لا تُحقق على خطأ إعادة البناء. احقق دائمًا بناءً على إخراج الانتباه أو أداء المهمة النهائية. مقياس التخزين ليس مجرد ضوضاء – بالنسبة للقيم، يشير إلى الاتجاه الخطأ.
- لا تُحقق على اختبارات اختيار متعدد السياق القصير. مؤلفو KIVI يتجنبون عمدًا مهام الإغلاق مثل MMLU لهذا التقييم، لأن خطوة فك واحدة تقرأ مخارج الانتباه لا تمارس ذاكرة التخزين المؤقت على الإطلاق. أي تقييم لا يبني ذاكرة تخزين مؤقت مع مرور الوقت ولا يؤدي توليدًا منه لن يكون قادرًا على ملاحظة فشل تصميم نظامك.
أين تتجه العمل
على الرغم من أنه لا يزال هناك بعض العمل المتبقي حول الطبيعة الهندسية للمشكلة، يواصل العديد من الباحثين دراسة كيفية توزيع قنوات القيم المتطرفة بين رؤوس الانتباه المختلفة، وكيف تؤثر قيود الأجهزة على أي مجموعات هي الأرخص: InnerQ ي折 القناة التطبيقي للمفتاح والوزن خلال الحشو. وبالتالي، لا يتم تكبد أي عبء إضافي في وقت التشغيل. علاوة على ذلك، InnerQ يحتفظ بنافذة دقة عالية لكل من الرموز المُنشأة حديثًا ورموز الانتباه. من خلال القيام بذلك، InnerQ يزيل فرصة القيم المتطرفة في قناة الانتباه لتلوث تمثيل تلك التي تهم.
يقترح آخرون أننا بدلاً من تخزين ذاكرة التخزين المؤقت بأكملها، يجب أن نخزن فقط ما يكفي من المعلومات لتكون قادرة على إعادة إنشاء المفتاح وال/أو القيمة عند الطلب من تمثيل ذاكرة التخزين المؤقت الأصغر.
أخيرًا، من المهم أن نتذكر أن الدقة ليست العامل الوحيد الذي يؤثره التقريز. أظهرت الأبحاث المنشورة مؤخرًا انخفاضًا في الانحياز الناتج عن تقريز ذاكرة التخزين المؤقت KV. علاوة على ذلك، وثقت هذه الأبحاث انخفاضًا في الانحياز حتى في بيئات خدمة vLLM الإنتاجية التي تستخدم ذاكرة التخزين المؤقت FP8 جنبًا إلى جنب مع بروتوكول استعادة بدون تدريب أعاد استعادة ما يصل إلى 97٪ مما فقد فيما يتعلق بالانحياز. وبالتالي، في حين أن تكوينًا قد يُحافظ على نتائجه الاختبارية، لا يعني ذلك بالضرورة أن يُحافظ على جميع المعايير الأخرى التي تهتم بها.
المبدأ العام
تم إطار فكرة التقريز كـ “ميزانية الدقة”: كم عدد البتات التي يمكنني التضحية بها؟ يُظهر ذاكرة التخزين المؤقت KV أن السؤال الأكثر فائدة هو هيكلي. يتم تخصيص الدقة في المجموعات؛ المجموعة هي وحدة الضرر، والمحور الذي تجمعه يحدد العناصر التي تشترك في مصيرها. المحور الصحيح هو الذي يتم استهلاك التنسور عليه، أي كيف تستخدم التنسور وليس كيف يظهر التنسور عند تخزينه في الذاكرة. يتم استخدام المفاتيح من خلال حساب النقطة. سيتسبب رمز متضرر في تسميم جميع الدرجات. يتم استهلاك القيم من خلال حساب متوسط موزون عبر الرموز. لذلك، يتم وزن رمز متضرر بشكل đơn. يتم معاملتان من الأبعاد والمتجهات المتطابقة بشكل مختلف. من المفيد سؤال أي تنشيط تخطط لضغطه: ما هي العملية التي تقلل من هذا، وهل تُحترم المجموعة؟
من المفيد سؤال أي تنشيط تخطط لضغطه: ما هي العملية التي تقلل من هذا، وهل تُحترم المجموعة؟












