مشکل اصلی روشهایی قبلی اینه که برای کم کردن حجم کش KV، مجبوریم کیفیت مدل رو پایین بیاریم، یعنی یه جورایی معامله میکنیم: حافظه کمتر، کیفیت کمتر در عوض مدل بزرگتر!
اما DeepSeek مدلی رو پیشنهاد میده که حجم کش KV رو کم کنه
بدون اینکه کیفیت مدل کم شه.
به عبارت دیگه، تونستن هم حافظه رو کم کنن و هم کیفیت رو حفظ کنن و هم اندازه مدل رو بزرگ کنن که خیلی مهمه!
روش
Multi-head latent attention با ترکیب فاکتورگیری رتبه پایین(Low-Rank Factorization
) و بردارهای پنهان، هم حجم حافظه را کاهش میده و هم عملکرد مدل رو حفظ میکنه.
فاکتورگیری رتبه پایین یعنی یه ماتریس بزرگ رو به دو تا ماتریس کوچک تر تبدیل میکنیم. این کار تعداد پارامترها رو کم میکنه. البته، یه سری معایب هم داره مثل اینکه محاسبات بیشتر می شه و ممکنه یه مقدار از اطلاعات ماتریس اصلی رو از دست بدیم.
در واقع، یه جورایی داره حافظه رو با محاسبات "معاوضه" می کنه. این روش برای مواردی که محدودیت اصلی حافظه هست مثل fine-tuning و کاهش کش KV خیلی مفیده.
هدف اینجا هم اینه که تا جایی که ممکنه عملکرد مدل حفظ بشه و در عین حال حجم کش KV هم کم شه.
دلیل موثر بودن این روش، همپوشانی اطلاعات بین attention head های مختلفه. attention head های مختلف به اطلاعات مشابهی نیاز دارن. روشهای دیگه مثل GQA هم از این همپوشانی استفاده می کنن، اما به شکل ناکارآمد.
اونها head هایی که با هم گروه بندی شدن رو مجبور می کنن که به پرسش ها جوابهای مشابهی بدن، که کارآمد نیست. اما روش DeepSeek این مشکل رو نداره و اجازه میده که headهای مختلف از یه اطلاعات یکسان به روشهای خیلی متفاوت استفاده کنن.
اگر علاقه مندید توضیحات جامع تر به همراه نمایش بصری رو در لینک زیر مشاهده کنید:
https://planetbanatt.net/articles/mla.html