اگر امروز در حال توسعه برنامههایی هستید که با متون بسیار طولانی سر و کار دارند، باید بدانید که دیوار حافظه در مدلهای زبانی در حال فروپاشی است. جایگزینی محاسبات سنگین با یک «پنجره متحرک»، اجازه میدهد مدلها بدون مصرف بیرویه منابع، ورودیهای عظیم را پردازش کنند.
در معماریهای استاندارد، هر توکن باید با تمام توکنهای قبلی ارتباط برقرار کند که باعث میشود با دو برابر شدن طول متن، هزینه محاسباتی چهار برابر شود. اما مدلهایی مثل Mistral و Longformer با استفاده از توجه پنجرهای (Sliding-Window Attention) — که شبیه به یک چراغ قوه است که فقط بخشی از صفحه را روشن میکند و مدل را مجبور میکند بهجای حفظ کل کتاب، فقط پاراگراف جاری را ببیند — این مشکل را حل کردهاند. طبق تحلیل فنی منتشر شده در ۲۹ ژوئیه ۲۰۲۶، این متد باعث میشود هر توکن فقط به تعداد محدودی از توکنهای قبلی توجه کند.
همانطور که در تحلیلهای پیشین ما درباره بهینهسازیهای لایه استنتاج اشاره کردیم، مدیریت حافظه کلید دسترسی به مدلهای بزرگتر در سختافزارهای محدود است. در مدلهای سنتی، ماتریس توجه مانند یک مربع بزرگ است که تمام سلولهای آن پر شده است؛ اما در روش پنجرهای، این مربع به یک نوار باریک مورب تبدیل میشود و اکثر جفتهای توکنی که فاصله زیادی از هم دارند و معمولاً بیفایدهاند، حذف میشوند.
مکانیسم عملیاتی پنجره
این فرآیند با اعمال یک ماسک بولی (Boolean Mask) روی ماتریس توجه اجرا میشود. در این ساختار، سطرها نماینده پرسوجوها (Queries) و ستونها نماینده کلیدها (Keys) هستند. یک سلول تنها زمانی مقدار میگیرد که کلید در محدوده پنجره باشد. به نقل از مستندات فنی، اگر فاصله بین پرسوجو و کلید از مقدار W-1 بیشتر شود، اتصال مسدود میگردد.
در صورتی که یک کلید خارج از پنجره تعیینشده (W) قرار بگیرد، امتیاز آن قبل از عملیات سافتمکس (Softmax) روی منفی بینهایت تنظیم میشود. این کار باعث میشود مدل وزنها را فقط بین همسایگان نزدیک خود توزیع کند، بهجای آنکه تمام توکنهای رشته متن را زیر نظر بگیرد.
تأثیرات فنی و کاهش هزینهها
بر اساس بررسی منابع متعدد، مزایای کلیدی این روش عبارتاند از:
- بهرهوری محاسباتی: در یک توالی با طول ۱۰۰ هزار توکن و پنجرهای ۴ هزارتایی، سیستم تنها حدود ۴٪ از جفتهایی را محاسبه میکند که در توجه کامل لازم بود.
- صرفهجویی در حافظه: در طول ۳۲ هزار توکن، تعداد جفتها از یک میلیارد به ۱۳۱ میلیون کاهش مییابد که یعنی کاهش ۸ برابری بار حافظه.
- بهینهسازی KV-Cache: حافظه موقت رمزگشایی به یک بافر چرخشی با اندازه ثابت تبدیل میشود که نیاز به حافظه را به مقدار O(W) میرساند و اجازه میدهد طول استریم بدون محدودیت افزایش یابد.
- تست صحت: اگر اندازه پنجره (W) با طول توالی (N) برابر شود، سیستم دوباره به حالت توجه کامل بازگشته و تمام مزایای بهینهسازی از بین میرود.
گسترش برد از طریق عمق لایهها
منتقدان میگویند اگر مدل فقط W توکن عقب را ببیند، نمیتواند اطلاعات دوردست را درک کند. اما این معماری با روی هم قرار دادن لایهها، این مشکل را حل میکند؛ دقیقاً شبیه به لایههای متوالی در شبکههای عصبی که میدان دید را گسترش میدهند. هر لایه اطلاعات را یک پنجره به جلو میبرد.
برد کل مدل از طریق عمق لایهها با فرمول Math.min(N, 1 + L * (W - 1)) محاسبه میشود. برای مثال، Mistral با یک پنجره ۴ هزارتایی در ۳۲ لایه، اجازه میدهد اطلاعات در طول توالی «جهش» کنند و بسیار فراتر از محدودیت اولیه ۴ هزار توکن دیده شوند.
گونههای پیشرفته: توجه گسترشیافته و سراسری
دو توسعه تکمیلی دیگر نیز برای افزایش برد بدون افزایش هزینه وجود دارد:
- پنجرههای متفرق (Dilated Windows): این روش کلیدها را با فاصله d قرار میدهد تا بازه بیشتری را پوشش دهد، مشابه آنچه در Longformer دیده میشود.
- توکنهای سراسری (Global Tokens): توکنهای خاصی (مثل [CLS]) با تمام توکنهای دیگر ارتباط دارند و یک سطر و ستون کامل در ماتریس ایجاد میکنند تا هر دو نقطه در توالی بتوانند تنها در دو جهش با هم ارتباط بگیرند.
این چرخش راهبردی، توجه درجهدوم را از یک قانون طبیعت به یک انتخاب پیشفرض تبدیل کرد. ترکیب این الگو با توجه برقآسا (Flash Attention) — که نحوه مدیریت ورودی-خروجی را بهینه میکند — باعث میشود سیستمهای واقعی به هزینه خطی برسند بدون اینکه یادگیری ساختاری از اسناد پیچیده را از دست بدهند. در حالی که این متدها بر بهینهسازی حافظه متمرکز هستند، درک دقیقتر اینکه مدلها چگونه در لایههای پنهان خود دادهها را سازماندهی میکنند را میتوان در تحلیل ما پیرامون نقشهبرداری از فضای تفکر پنهان در مدل Claude مشاهده کرد.
برای مشاهده این پویایی در عمل، میتوانید از محیط بصری نمایش رشد میدان دید در لینک زیر استفاده کنید: https://dev48v.infy.uk/ai/days/day48-sliding-window-attention.html
گام بعدی شما
- اگر از مدلهای متنباز استفاده میکنید، بررسی کنید آیا مدل شما از KV-Cache با اندازه ثابت پشتیبانی میکند یا خیر.
- برای کاهش هزینه استنتاج در پروژههای خود، لایههای توجه را با متدهای Sparse یا Windowed جایگزین کنید.
- مستندات Flash Attention را مطالعه کنید تا بفهمید چگونه بهینهسازی سختافزاری مکمل بهینهسازی الگوریتمی است.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما درباره تراشههای Blackwell مراجعه کنید.




گفتگو