KV Cache
اكتشف كيف يعمل KV Cache على تحسين نماذج المحولات مثل LLMs. تعلم كيف تقلل هذه التقنية من وقت استجابة الاستنتاج وتعزز كفاءة Ultralytics YOLO26.
يُعد التخزين المؤقت لقيم المفاتيح KV Cache (Key-Value Cache) تقنية تحسين بالغة الأهمية تُستخدم بشكل أساسي في Large Language Models (LLMs) وغيرها من البنى القائمة على Transformer لتسريع inference latency وتقليل التكاليف الحسابية. في جوهره، يخزن تخزين KV المؤقت مصفوفتي المفتاح والقيمة اللتين تم إنشاؤهما بواسطة attention mechanism للرموز السابقة في تسلسل ما. ومن خلال حفظ هذه العمليات الحسابية الوسيطة، يتجنب النموذج إعادة حساب حالات الانتباه لسجل المحادثة بأكمله في كل مرة يُنشئ فيها رمزاً جديداً. وتعمل هذه العملية على تحويل سير عمل text generation من عملية ذات تعقيد تربيعي إلى عملية خطية، مما يجعل التفاعلات في الوقت الفعلي مع برامج الدردشة الآلية و**AI agents** أمراً قابلاً للتنفيذ.
الآلية والفوائد#
في نموذج Transformer القياسي، يتطلب إنشاء الكلمة التالية الانتباه إلى جميع الكلمات السابقة لفهم السياق. وبدون التخزين المؤقت، سيحتاج النموذج إلى إعادة حساب العلاقات الرياضية للتسلسل بأكمله في كل خطوة. ويحل التخزين المؤقت لقيم المفاتيح KV هذه المشكلة من خلال العمل كبنك ذاكرة.
- تحسين السرعة: من خلال استرجاع المفاتيح والقيم المحسوبة مسبقاً من الذاكرة، يعمل النظام على تسريع inference engine بشكل كبير. وهذا أمر ضروري للتطبيقات التي تتطلب زمن انتقال منخفضاً، مثل real-time inference في روبوتات خدمة العملاء.
- كفاءة الموارد: على الرغم من أنه يزيد من استخدام الذاكرة (VRAM)، إلا أنه يقلل بشكل كبير من عمليات الحساب (FLOPs) المطلوبة لكل رمز. وغالباً ما تتم إدارة هذه المقايضة من خلال تقنيات مثل model quantization أو الترحيل، على غرار كيفية إدارة أنظمة التشغيل لذاكرة الوصول العشوائي (RAM).
- السياق الممتد: تتيح الإدارة الفعالة لتخزين KV المؤقت للنماذج التعامل مع context window أكبر، مما يمكنها من معالجة المستندات الطويلة أو الحفاظ على محادثات متماسكة لفترات طويلة.
تطبيقات العالم الحقيقي#
يُعد التخزين المؤقت لقيم المفاتيح KV مكوناً أساسياً في نشر الذكاء الاصطناعي التوليدي الحديث، ولكن مبادئه تمتد أيضاً إلى مجال computer vision (CV).
-
روبوتات الدردشة التوليدية: تعتمد خدمات مثل ChatGPT أو Claude بشكل كبير على التخزين المؤقت لقيم المفاتيح KV. وعندما يطرح المستخدم سؤالاً متابعاً، لا يعيد النموذج قراءة سجل الدردشة بأكمله من الصفر. وبدلاً من ذلك، يقوم بإلحاق الإدخال الجديد بالحالات المخزنة مؤقتاً للجولة السابقة، مما يسمح باستجابات شبه فورية.
-
فهم الفيديو: في مهام video understanding، تعالج النماذج الإطارات بشكل تسلسلي. على غرار رموز النصوص، يمكن تخزين الميزات المرئية من الإطارات السابقة مؤقتاً لمساعدة النموذج على تتبع الكائنات أو التعرف على الحركات دون إعادة معالجة سجل الفيديو بأكمله. وهذا أمر ذو صلة خاصة بـ action recognition حيث يكون السياق الزمني بالغ الأهمية.
إدارة الذاكرة الفعالة#
مع نمو النماذج، يمكن أن يصبح حجم KV Cache عنق زجاجة، حيث يستهلك غيغابايت من ذاكرة GPU. تركز التطورات الأخيرة على تحسين هذا التخزين.
- انتباه الصفحات (PagedAttention): مستوحى من الذاكرة الافتراضية في أنظمة التشغيل، يسمح PagedAttention (الذي قدمه vLLM) بتخزين ذاكرة KV المؤقتة في كتل ذاكرة غير متجاورة. وهذا يقلل من التجزئة ويسمح بأحجام دفعات أكبر أثناء model serving.
- تكميم ذاكرة KV المؤقتة (KV Cache Quantization): لتوفير المساحة، غالباً ما يطبق المطورون mixed precision أو التكميم بتنسيق int8 خصيصاً على القيم المخزنة مؤقتاً. وهذا يقلل من بصمة الذاكرة، مما يتيح لأجهزة edge AI ذات الذاكرة المحدودة تشغيل نماذج قوية.
- التخزين المؤقت للموجه (Prompt Caching): تقنية ذات صلة يتم فيها حساب حالات KV الخاصة بموجه نظام ثابت (مثل: "أنت مساعد برمجة مفيد") مرة واحدة وإعادة استخدامها عبر العديد من جلسات المستخدمين المختلفة. وتُعد هذه ميزة أساسية لتحسين سير عمل prompt engineering على نطاق واسع.
التمييز بين المفاهيم ذات الصلة#
من المفيد التمييز بين KV Cache ومصطلحات التخزين المؤقت والتحسين الأخرى:
- ذاكرة KV المؤقتة مقابل Prompt Caching: يشير التخزين المؤقت لقيم المفاتيح KV عادةً إلى الذاكرة الديناميكية التي تعتمد على الرمز تلو الآخر والتي تُستخدم أثناء تدفق توليد واحد. بينما يشير التخزين المؤقت للموجه على وجهحديد إلى تخزين الحالة المعالجة لتعليمات إدخال ثابتة ليتم إعادة استخدامها عبر استدعاءات استدلال مستقلة متعددة.
- ذاكرة KV المؤقتة مقابل Embeddings: التضمينات هي تمثيلات متجهة لبيانات الإدخال (النصوص أو الصور) التي تلتقط المعنى الدلالي. بينما يخزن تخزين KV المؤقت التنشيطات (المفاتيح والقيم) المستمدة من هذه التضمينات داخل طبقات الانتباه، وتحديداً لغرض توليد التسلسل.
- ذاكرة KV المؤقتة مقابل Model Weights: أوزان النموذج هي المعلمات الثابتة والمتعلمة للشبكة العصبية. أما تخزين KV المؤقت فيتكون من بيانات ديناميكية مؤقتة يتم إنشاؤها أثناء عملية المرور الأمامي لتسلسل إدخال معين.
مثال: السياق في نماذج الرؤية#
على الرغم من أن التخزين المؤقت لقيم المفاتيح KV يُعد الأكثر شهرة في مجال معالجة اللغات الطبيعية (NLP)، إلا أن مفهوم الحفاظ على الحالة ينطبق على نماذج الرؤية المتقدمة. في المثال أدناه، نقوم بمحاكاة فكرة تمرير الحالة (السياق) في سيناريو تتبع الفيديو باستخدام Ultralytics YOLO26. وهنا، يحافظ المتعقب على هُوية الكائنات عبر الإطارات، بشكل مشابه من الناحية المفاهيمية لكيفية الحفاظ على السياق عبر الرموز في التخزين المؤقت.
from ultralytics import YOLO
# Load the Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Track objects in a video, maintaining identity state across frames
# The 'track' mode effectively caches object features to link detections
results = model.track(source="https://ultralytics.com/images/bus.jpg", show=False)
# Print the ID of the tracked objects
if results[0].boxes.id is not None:
print(f"Tracked IDs: {results[0].boxes.id.numpy()}")يمكن للمطورين الذين يتطلعون إلى إدارة مجموعات البيانات ونشر النماذج المُحسّنة الاستفادة من Ultralytics Platform، والتي تبسط خط الأنابيب من تعليقات البيانات إلى model deployment الفعال. وبالنسبة للمهتمين الآليات العميقة للانتباه، توفر مكتبات مثل PyTorch اللبنات الأساسية التي يتم من خلالها تنفيذ آليات التخزين المؤقت هذه.






