تکنیک باحالی به اسم SamKV: ذخیره‌ی هوشمند و کم‌هزینه کی‌وی‌ها توی مدل‌های زبانی بزرگ!

Fall Back

اگه اهل مدل‌های زبانی بزرگ (Large Language Models) باشی، حتماً می‌دونی که کار کردن با متن‌های طولانی واسه این مدل‌ها حسابی پرخرج و وقت‌گیر میشه. یکی از حقه‌هایی که مدت‌هاست معمول شده اینه که مدل بیاد حافظه‌ی کلید-مقدار یا همون KV Cache رو که قبلاً تولید کرده، دوباره استفاده کنه؛ اینطوری سرعتش زیاد و هزینه‌هاش کم میشن. (KV Cache یعنی موقع پردازش متن‌ها، مدل یه سری داده ذخیره می‌کنه تا بعداً مجبور نشه از اول محاسبه کنه.)

حالا اخیراً یه ایده‌ی جالب‌تر اومده که بهش Sparse Attention میگن. یعنی مدل، همه‌ی اون داده‌های قبلی رو استفاده نمی‌کنه، فقط اون تیکه‌هایی که مهمه رو برمیداره! اینطوری طول توالی (sequence length) واسه مدل کمتر میشه، چون با تکه‌هایی کوچیک‌تر سر و کار داره و این یعنی سرعت و صرفه‌جویی.

ولی این روش‌ها تا الان فقط توی مدل‌هایی جواب میده که “تک‌زمینه” یا همون single-context بودن؛ یعنی مدل داره یک متن رو دونه‌دونه و پشت‌سرهم (با وابستگی علت و معلولی یا causal attention) پردازش می‌کنه. حالا بیا بریم سراغ حالت خاص‌تر: توی Retrieval-Augmented Generation یا همون RAG— که یعنی مدل علاوه بر اطلاعات خودش، از یه سری متن دیگه که قبلاً بهش رسیده برای جواب دادن کمک می‌گیره— این Sparse Attention خیلی جواب نمیده. چون توی RAG، مدل قبل از اینکه بخواد جواب بده، متن‌هایی که باید بررسی کنه رو نمیشناسه! برای همین KV Cache هر متن جدا حساب میشه و هیچ ارتباطی با بقیه نداره (multi-context KV Cache). دیگه اینجا از cross-attention یا توجه بین متن‌ها خبری نیست.

محقق‌ها قبلاً یه راه حل نصفه نیمه پیداکرده بودن؛ اومده بودن قسمتی از این KVهای چند تکه رو دوباره محاسبه می‌کردن تا دقت مدل کم نشه. ولی خب مشکلش این بود که همچنان باید همه‌ی KV Cacheهای قبلی رو نگه می‌داشتن. پس حجم حافظه یا همون memory usage پایین نمیومد— که اصلاً کل هدف این کار بود!

اینجا بود که مقاله‌ی جدید ما، یعنی SamKV، وارد میشه! این اولین تحقیقیه که میاد Sparse Attention رو با همین چندمتنی بودن KV Cache تلفیق می‌کنه. طرز کارش اینطوریه که وقتی می‌خواد دیتای یه متن رو فشرده کنه (یعنی فقط قسمتای مهمشو نگه داره)، حواسش به متن‌های دیگه هم هست، چون شاید اطلاعات مکمل یا مهمی تو بقیه خوابیده باشه. بعد دوباره همون قسمت‌های فشرده رو محلی (local) محاسبه می‌کنه تا دقت نگه داشته بشه.

از نظر کارایی، نتایج آزمایشی نشون دادن که SamKV می‌تونه اندازه توالی موردنیاز رو تا ۱۵٪ حالت قبلی پایین بیاره، اونم بدون اینکه اصلاً دقت افت کنه! یعنی تقریباً کل مسأله‌ی حافظه تو این ماجرا حل شده و سرعت پاسخ‌دهی حتی تو سناریو‌های RAG چندمتنی هم خیلی بیشتر میشه.

خلاصه اگه عاشق ایده‌های خفن تو دنیای هوش مصنوعی و مدل‌های زبانی هستی یا دوست داری مدل‌هات ارزون‌تر و سریع‌تر پردازش کنن، SamKV واقعاً یه ارائه‌ی باحال، جالب و به‌دردبخور به حساب میاد!

منبع: +