چند توکن بهظاهر بیفایده در ابتدای یک پرامپت میتوانند مانع از فروپاشی کامل یک مدل زبانی بزرگ در مواجهه با جریانهای عظیم داده شوند. این سازوکار که «چاهک توجه» (Attention Sink) نامیده میشود، به مدلهایی مانند Llama-2 اجازه میدهد میلیونها توکن را بدون شکستهای فاجعهباری که معمولاً در استنتاج با پنجره لغزنده رخ میدهد، پردازش کنند.
همانطور که در تحلیل قبلی ما دربارهی افت کیفیت مدلها پیش از رسیدن به سقف پنجره متنی اشاره کردیم، کشف چاهکهای توجه تضاد بنیادین میان اهمیت معنایی و ضرورت محاسباتی را روشن میکند. در حالی که ما معمولاً به توجه (Attention) — شبیه به یک جستوجوگر که در متن دنبال کلمات کلیدی میگردد — به عنوان ابزاری برای بازیابی اطلاعات مینگریم، این سازوکار در واقع یک سیستم مسیریابی حیاتی برای ریاضیات داخلی مدل است.
مسئله سافتمکس
برای درک چاهکهای توجه، باید به تابع سافتمکس (Softmax) نگاه کنیم. در یک معماری ترنسفورمر (Transformer)، معادله پایه توجه به این صورت است: Attention(Q, K, V) = softmax(Q K^T / sqrt(d_k)) V.
سافتمکس امتیازات خام توجه را به احتمالاتی تبدیل میکند که مجموع آنها باید دقیقاً ۱.۰ شود. برای مثال، اگر یک توکن پرسوجو (Query)، پنج توکن قبلی با امتیازات ۲.۱، ۱.۷، ۴.۰-، ۰.۲ و ۱.۱ داشته باشد، سافتمکس این اعداد را به احتمالاتی مانند ۰.۴۰، ۰.۲۷، ۰.۰۳، ۰.۰۷ و ۰.۲۳ تبدیل میکند.
اگر مدل توکنی تولید کند که هیچکدام از زمینههای قبلی با آن مرتبط نباشند، نمیتواند به سادگی احتمال ۰٪ را به همه اختصاص دهد. مدل نمیتواند نتیجهای مانند [۰, ۰, ۰, ۰, ۰] تولید کند. جرم احتمالی (Probability Mass) باید جایی تخلیه شود. حتی اگر تمام امتیازها صفر باشند، سافتمکس این جرم را بهطور مساوی توزیع میکند (مثلاً [۰.۲۵, ۰.۲۵, ۰.۲۵, ۰.۲۵] برای چهار توکن).
ظهور «راه تخلیه»
پژوهشگران MIT، Meta AI، CMU و NVIDIA دریافتند که مدلها بهطور طبیعی از چند توکن اول به عنوان «راه تخلیه» برای این توجه ناخواسته استفاده میکنند.
این اتفاق به دلیل عدم تقارنی ایجاد شده توسط آموزش خودبازگشتی (Autoregressive) رخ میدهد. در جملهای مانند «گربه روی فرش نشست چون خسته بود»، توکن اول برای تمام موقعیتهای بعدی قابل مشاهده است. توکن ۱ برای توکن ۲، ۳، ۴ و تا توکن N دیده میشود، اما توکن آخر چنین ویژگیای ندارد.
بر اساس مستندات این پژوهش، مدل در طول آموزش عادت میکند که اگر هیچ چیز مفیدی پیدا نکرد، توجه را روی توکن اول پارک کند. این یک عادت محاسباتی است، نه معنایی. توکن اول نیازی به داشتن اطلاعات مهم ندارد؛ فقط باید در دسترس باشد تا به عنوان یک جایگاه موقت عمل کند. این دقیقاً شبیه به یک راه تخلیه در سیستم لولهکشی است؛ راه تخلیه معنای خاصی درباره آب ندارد، فقط جایی است که آب به آن میریزد.

گلوگاه حافظه KV Cache
برای توسعهدهندگان، چالش اصلی حافظه KV (KV Cache) است. در طول تولید خودبازگشتی، محاسبه مجدد توجه روی کل گفتگو برای هر توکن جدید بهشدت هزینهبر و غیرمنطقی است. بنابراین، موتورهای استنتاج (Inference) — لحظهای که مدل واقعاً جواب تولید میکند، شبیه به خودِ آشپزی و نه دورهی آموزش آشپز — مقادیر کلید (Key) و مقدار (Value) را ذخیره میکنند.
هزینههای حافظه بهصورت خطی رشد میکنند. یک محاسبه سریع برای تخمین بایتهای KV به ازای هر توکن به این صورت است: 2 * layers * KV_heads * head_dim * bytes_per_element (عدد ۲ برای ذخیره هر دو مقدار K و V است).
یک مدل فرضی را با مشخصات زیر در نظر بگیرید:
- لایهها: ۳۲
- سرهای KV: ۳۲
- بعد سر (Head Dimension): ۱۲۸
- دقت: FP16 (۲ بایت)
در این حالت، محاسبه به این شکل است: 2 * 32 * 32 * 128 * 2 = 524,288 bytes یا تقریباً ۰.۵ مگابایت به ازای هر توکن. با این نرخ:
- ۴,۰۰۰ توکن ≈ ۲ گیگابایت
- ۳۲,۰۰۰ توکن ≈ ۱۶ گیگابایت
- ۱۰۰,۰۰۰ توکن ≈ ۵۰ گیگابایت
این حجم از مصرف حافظه، بستر نامحدود را برای اکثر سختافزارهای تولیدی غیرممکن میکند. به همین دلیل صنعت بر روی روشهایی مانند MQA/GQA، کوانتش حافظه KV، حافظههای صفحهبندی شده (Paged KV Caches) و کش پیشوند (Prefix Caching) تمرکز کرده است. در این راستا، بهینهسازیهای پیشرفتهای در مدیریت حافظه مجازی معرفی شدهاند که تلاش میکنند از فضای VRAM بهطور بهینهتری استفاده کنند.
چرا پنجرههای لغزنده شکست میخورند؟
راهکار بصری و شهودی، استفاده از یک پنجره لغزنده است؛ یعنی فقط حفظ N توکن آخر (مثلاً ۴,۰۹۶ توکن). از نظر عملیاتی این روش عالی است چون حافظه ثابت میماند: پیچیدگی حافظه به جای O(context_length) به O(window_size) تبدیل میشود.
اما طبق گزارش پژوهشگران، وقتی توکن اول از حافظه حذف میشود، محیط توجه مدل بهطور ناگهانی تغییر میکند. اگر مدل روی توکنهای [۱ ... ۴۰۹۶] آموزش دیده باشد و شما شروع به حذف توکنهای قدیمی کنید، در نهایت توکن ۱ حذف میشود.
بدون این «چاهک» آموختهشده، مدل اغلب فرو میپاشد و خروجیهای نامفهوم تولید میکند. دلیلش این است که توزیع سافتمکس پارکینگ اصلی خود برای احتمالات بلااستفاده را از دست میدهد. مدل یاد گرفته است توجه بلااستفاده را در توکن اول پارک کند؛ حذف آن توکن، در واقع حذف پارکینگ توجه است.
راهکار StreamingLLM
سیستم StreamingLLM این مشکل را با ایجاد یک حافظه ترکیبی حل میکند: چند توکن ابتدایی «چاهک» بهعلاوه یک پنجره لغزنده از توکنهای اخیر.
بهجای حفظ صرفاً ۴,۰۹۶ توکن آخر، سیستم ساختار [۴ توکن اول] + [۴,۰۹۲ توکن اخیر] را حفظ میکند. این چهار توکن اول به عنوان لنگر عمل میکنند.
این تغییر کوچک، پایداری را بازمیگرداند. طبق اعلام تیم تحقیق، مدلهایی مانند Llama-2، MPT، Falcon و Pythia توانستند رفتار مدلسازی زبان را تا ۴ میلیون توکن بهطور پایدار حفظ کنند. نیاز حافظه در این حالت تقریباً برابر است با: KV_memory ~= (sink_tokens + window_tokens) * KV_bytes/token.
دستاوردهای عملکردی
تأثیر عملیاتی این روش عظیم است. StreamingLLM تا ۲۲.۲ برابر افزایش سرعت را نسبت به روشهای پایه که نیاز به محاسبه مجدد دارند، گزارش کرده است.
با ثابت نگه داشتن ردپای حافظه، توسعهدهندگان میتوانند همزمانی (Concurrency) را بهشدت افزایش دهند. اگر حافظه KV از ۸ گیگابایت به ۲ گیگابایت کاهش یابد، یک GPU ۸۰ گیگابایتی بهجای ۱۰ توالی همزمان، میتواند از ۴۰ توالی پشتیبانی کند (پیش از در نظر گرفتن وزنهای مدل، فعالسازها و تکهتکه شدن حافظه). این یک جهش ۴ برابری در ظرفیت سرویسدهی است. این نوع مدیریت بهینه منابع، یادآور رویکردهای نوین در حذف تأخیرهای Cold Start است که با مدیریت هوشمندانه وزنها در حافظه GPU، بهرهوری سیستم را افزایش میدهند.
محدودیتهای حیاتی
بسیار مهم است که بین «پایداری» و «حافظه» تفاوت قائل شویم. StreamingLLM به مدل حافظهای ۴ میلیون توکنی نمیدهد.
اگر حقیقتی حیاتی در توکن ۱۰۰ ذکر شده باشد و پنجره به توکن ۳,۰۰۰,۰۰۰ رسیده باشد، مدل نمیتواند آن حقیقت را بازیابی کند. چاهکها «دینامیک» مدل — یعنی نحوه پیشبینی توکن بعدی — را حفظ میکنند، نه «محتوای» گفتگو را. این راهکار مشکل پایداری استنتاج را در حین حذف تهاجمی KV حل میکند، نه مشکل بازیابی اطلاعات بلندمدت را.
بازاندیشی در مفهوم توجه
این یافته نشان میدهد که توجه دو نقش متمایز دارد:
- بازیابی اطلاعات: «توکنی را پیدا کن که حاوی اطلاعات مورد نیاز من است».
- نرمالسازی/مسیریابی محاسباتی: «توزیع توجه باید جایی برای قرار دادن جرم احتمالی داشته باشد».
وقتی میبینید مدل ۷۰٪ توجه را به توکن اول میدهد، لزوماً به این معنا نیست که آن کلمه مهمترین بخش جمله است؛ بلکه احتمالاً مدل صرفاً از آن به عنوان یک چاهک محاسباتی استفاده میکند. کارهای تجربی اخیر نشان میدهد که چاهکها مانند بایاسهای کلید (Key Biases) اضافی عمل میکنند و جرم امتیاز توجه را ذخیره میکنند، بدون اینکه لزوماً از طریق بردار مقدار (Value) اطلاعات معنایی ارائه دهند.
برای مهندسان سیستم، این موضوع مسئله بهینهسازی را تغییر میدهد. هدف دیگر فقط حفظ توکنهای مهم از نظر معنایی نیست، بلکه حفظ توکنهای ضروری از نظر محاسباتی است. این دو، مسائل بهینهسازی متفاوتی هستند و دومی بهطور شگفتانگیزی ارزانتر تمام میشود.
پیامدهای زیرساختی
چاهکهای توجه، یک کنجکاوی پژوهشی را به یک ابزار زیرساختی تبدیل میکنند. برای یک دستیار صوتی که ۶۰۰ دقیقه فعال است، حفظ تمام ورودیهای KV غیرممکن است. در نرخ ۰.۲۵ مگابایت بر توکن، یک گفتگوی میلیونی به ۲۵۰ گیگابایت حافظه KV برای تنها یک کاربر نیاز دارد.
یک حافظه محدود، اقتصاد سرویسدهی را تغییر میدهد:
- بستر نامحدود: حافظه با رشد گفتگو افزایش مییابد.
- پنجره لغزنده: حافظه محدود است، اما مدل فرو میپاشد.
- پنجره لغزنده + چاهکها: حافظه محدود + رفتار توجه پایدار.
این زنجیره — از رفتار سافتمکس تا سیاست حذف حافظه KV و در نهایت اقتصاد سرویسدهی — نشان میدهد که چگونه یک نکته ریاضی کوچک به صرفهجوییهای زیرساختی معنادار تبدیل میشود.
مدل ذهنی برای توسعهدهندگان
اگر در حال پیادهسازی یا عیبیابی یک سیستم استنتاج LLM هستید، سه لایه را در نظر بگیرید:
۱. توجه معنایی: «به چه اطلاعات قبلی نیاز دارم؟»
۲. مکانیک توجه: «سافتمکس چگونه جرم احتمالی را توزیع میکند؟»
۳. رفتار سیستم: «کدام حالتهای K/V باید فیزیکی در حافظه GPU باقی بمانند؟»
پدیدهای که در ابتدا شبیه به یک خطای بصری در نمودارهای توجه به نظر میرسید، پاسخی به یک سؤال عملی سیستم است: کدام توکنهای قدیمی را میتوانم با خیال راحت دور بریزم؟ پاسخ شگفتانگیز این است: تقریباً همه آنها، بهجز چند توکن اول که به عنوان چاهک محاسباتی عمل میکنند.
در نهایت، توکنی که تقریباً هیچ کاری نمیکند، مهمترین است. چاهکهای توجه به ما یادآوری میکنند که شبکههای عصبی قراردادهای محاسباتی داخلی ایجاد میکنند که با شهود معنایی ما همراستا نیست. برای مهندسان LLM، این یعنی رفتارهای عجیب مدلها نباید به عنوان نویز دیده شوند، بلکه ممکن است رابطهای مستندنشدهای میان ریاضیات و سختافزار باشند.
گام بعدی شما
- اگر از سیستمهای استنتاج با پنجره لغزنده (Sliding Window) استفاده میکنید، استراتژی حذف توکنها را به مدل ترکیبی (Sinks + Window) تغییر دهید تا از فروپاشی مدل در توالیهای طولانی جلوگیری کنید.
- در تحلیلهای بصری توجه (Attention Maps)، وزن بالای توکنهای ابتدایی را به جای اهمیت معنایی، به عنوان اثر چاهک محاسباتی تفسیر کنید.
- برای کاهش هزینههای VRAM در سرویسدهی مدلهای بازمتن، از تکنیکهای مدیریت حافظه KV متکی بر چاهکها برای افزایش تعداد کاربران همزمان استفاده کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو