PagedAttention یعنی حافظهی مجازی برای هوش مصنوعی
خلاصهٔ کاملتر
نویسنده این پست از یه ایدهی قدیمی تو علوم کامپیوتر شروع میکنه: حافظهی مجازی، همون چیزی که سیستمعاملها از دههی ۶۰ میلادی استفاده میکنن. PagedAttention دقیقاً همین ایده رو رو کش KV (کش کلید-مقدار) مدلهای زبانی پیاده کرده. کش KV یعنی جایی که مدل کلیدها و مقدارهای توجه رو برای هر درخواست نگه میداره تا مجبور نشه هر بار از اول محاسبهشون کنه؛ هرچی متن طولانیتر بشه، این کش هم بزرگتر میشه و میتونه از خود وزنهای مدل هم حافظهی بیشتری بگیره.
مشکل روش سنتی اینه که چون از قبل معلوم نیست هر درخواست چقدر طول میکشه، سرور از همون اول یه بلوک حافظهی بزرگ (بهاندازهی حداکثر مجاز) براش کنار میذاره؛ اگه فقط ۴۷ تا توکن تولید کنه ولی ۲۰۴۸ تا جا رزرو شده باشه، بقیهش خالی میمونه -هدررفت داخلی. یه مشکل دیگه هم هدررفت خارجیه: چون درخواستها با اندازههای مختلف میان و میرن، حافظهی آزاد تیکهتیکه میشه و حتی اگه رو هم جمعش کنی بهاندازهی کافی باشه، شکلش بهدرد نمیخوره.
راهحل PagedAttention دقیقاً شبیه صفحهبندی حافظه تو سیستمعامله: بهجای یه بلوک بزرگ و پیوسته، حافظهی GPU به بلوکهای کوچیک و ثابت (مثلاً ۱۶ توکنی) تقسیم میشه که تو یه استخر مشترک نگه داشته میشن. هر درخواست یه «جدول بلوک» داره که میگه هر بلوک منطقیش کجای اون استخر مشترک نشسته -دقیقاً مثل جدول صفحهی حافظهی مجازی. این باعث میشه هر درخواست فقط به اندازهی واقعی نیازش (گرد شده به بالای بلوک) حافظه بگیره، نه بیشتر.
یه فایدهی دیگهی این روش، copy-on-write ـه: وقتی چند تا درخواست یه پیشمتن مشترک دارن (مثلاً یه system prompt طولانی که برای همهی کاربرا تکرار میشه)، بلوکهای اون پیشمتن فقط یه بار تو حافظه ذخیره میشن و همهی درخواستها بهش اشاره میکنن؛ فقط وقتی یکیشون بخواد چیزی بنویسه، همون یه بلوک کپی میشه. نویسنده میگه این ترفند دقیقاً همون کپی-موقع-نوشتنیه که سیستمعاملها موقع fork کردن پردازش استفاده میکنن.
طبق دادههای مقالهی اصلی vLLM (Kwon و همکاران، ۲۰۲۳)، این روش نرخ استفاده از حافظهی کش رو از ۲۰-۴۰٪ به حدود ۹۶٪ میرسونه و باعث میشه هر GPU بتونه دو تا چهار برابر کاربر بیشتر رو سرویس بده. اندازهی بلوک ۱۶ توکنی هم نقطهی تعادلیه که موتورهای معروفی مثل vLLM، TGI و TensorRT-LLM روش توافق کردن.
نکات کلیدی:
- ایدهی اصلی PagedAttention از حافظهی مجازی سیستمعامل گرفته شده
- روش سنتی فقط ۲۰ تا ۴۰ درصد حافظهی کش رو واقعاً استفاده میکنه
- PagedAttention این نرخ رو به حدود ۹۶٪ میرسونه
- copy-on-write باعث میشه پیشمتنهای مشترک فقط یه بار تو حافظه بمونن
- اندازهی رایج بلوک ۱۶ توکنه و نتیجهش اینه که هر GPU دو تا چهار برابر ظرفیت بیشتر داره




