چگونه «پیجاتنشن» حافظه جیپییو را برای حل گلوگاه زمینه (Context) در مدلهای زبان بزرگ تقسیمبندی میکند؟
مدلهای زبان بزرگ با ذخیره توکنهای قبلی در یک بانک حافظه موقت به نام حافظه نهان KV، متن تولید میکنند. با تقسیم این حافظه به بلوکهای غیرمتوالی، موتورهای استنتاج میتوانند قطعهقطعه شدن (Fragmentation) را از بین ببرند و تعداد کاربرانی را که یک سرور میتواند پشتیبانی کند، تا چهار برابر افزایش دهند.
به قلم اِلا فرجاد
این خبر را به اشتراک بگذارید
بهطور خلاصه
- حافظه نهان KV توکنهای گذشته را در طول تولید ذخیره میکند، اما به طور سنتی به دلیل قطعهقطعه شدن، تا ۸۰٪ از حافظه را هدر میدهد.
- پیجاتنشن این حافظه را به بلوکهای کوچک و پویا تقسیم میکند و فضا را تنها در صورت نیاز تخصیص میدهد.
- این بهینهسازی به سرورهای استنتاج اجازه میدهد تا چهار برابر کاربران همزمان بیشتری را روی همان سختافزار مدیریت کنند.
زمانبندی استنتاج که بین مدل زبان بزرگ و سختافزار آن قرار دارد، دقیقاً تصمیم میگیرد که چه مقدار حافظه به درخواست کاربر اختصاص یابد. این زمانبند میتواند حافظه رم ویدیویی (VRAM) جیپییو را به قطعات سخت و متوالی تقسیم کند، یا آن را به صفحات پویا و غیرمتوالی تقسیمبندی نماید. این انتخاب در لحظه رسیدن یک درخواست جدید انجام میشود و تعیین میکند که آیا سرور میتواند ده کاربر همزمان را مدیریت کند یا صد کاربر را.
هنگامی که مدلی مانند لاما ۳ یا جیپیتی-۴ پاسخی تولید میکند، تاریخچه کامل مکالمه را برای هر کلمه جدید دوباره محاسبه نمیکند. در عوض، نمایشهای ریاضی کلمات گذشته را در یک ناحیه ذخیرهسازی موقت که به عنوان حافظه نهان Key-Value یا (KV) شناخته میشود، ذخیره میکند.
با تولید متن بیشتر توسط مدل، این حافظه نهان به صورت خطی رشد میکند. در سال ۲۰۲۳، محققان دانشگاه یوسی برکلی (UC Berkeley) تشخیص دادند که حافظه نهان KV تا ۳۰٪ از کل حافظه جیپییو را در طول استنتاج مصرف میکند و یک گلوگاه جدی ایجاد میکند که ظرفیت کاربران همزمان را محدود میسازد.[1]
روش سنتی مدیریت این حافظه بسیار ناکارآمد بود. زمانبندها یک بلوک بزرگ و متوالی از حافظه را برای حداکثر طول ممکن یک مکالمه اختصاص میدادند. اگر کاربر فقط یک سوال کوتاه میپرسید، بقیه حافظه تخصیصیافته خالی میماند و برای درخواستهای دیگر قابل استفاده نبود.
این پدیده، که به عنوان قطعهقطعه شدن داخلی حافظه (Internal Memory Fragmentation) شناخته میشود، مقادیر زیادی از ظرفیت سختافزاری گرانقیمت را هدر میداد. به گفته تیم یوسی برکلی، «سیستمهای موجود ۶۰٪ تا ۸۰٪ حافظه را به دلیل قطعهقطعه شدن و رزرو بیش از حد هدر میدهند.»[1]
برای حل این مشکل، توسعهدهندگان الگوریتم «پیجاتنشن» (PagedAttention) را معرفی کردند؛ الگوریتمی که از نحوه مدیریت رم توسط سیستمعاملهای سنتی کامپیوتر الهام گرفته شده است. پیجاتنشن به جای رزرو یک بلوک عظیم، حافظه نهان KV را به صفحات کوچک و با اندازه ثابت تقسیم میکند.
هر صفحه معمولاً کلیدها و مقادیر توجه (Attention Keys and Values) را برای تعداد مشخصی از توکنها در خود جای میدهد—اغلب ۱۶ یا ۳۲ توکن. نکته حیاتی این است که این صفحات نیازی ندارند که در سیلیکون فیزیکی کنار یکدیگر قرار گیرند.[1]
یک جدول بلوک مرکزی مکان هر صفحه را ردیابی میکند. هنگامی که مدل نیاز به ارجاع به یک توکن گذشته دارد، زمانبند آدرس مجازی را در جدول بلوک جستجو کرده و آن را به مکان فیزیکی روی جیپییو ترجمه میکند.
این سازوکار عملاً قطعهقطعه شدن داخلی را از بین میبرد. حافظه به صورت پویا، صفحه به صفحه، تنها زمانی تخصیص داده میشود که مدل واقعاً یک توکن جدید تولید کند که نیاز به ذخیرهسازی دارد.
دستاوردهای کارایی قابل اندازهگیری و فوری هستند. با پیادهسازی پیجاتنشن در موتور متنباز vLLM، توسعهدهندگان اتلاف حافظه را به زیر ۴٪ کاهش دادند.[1]
آزاد شدن آن حافظه هدر رفته به سرور اجازه میدهد تا درخواستهای کاربران همزمان بیشتری را در همان جیپییو بارگذاری کند. در تستهای معیار روی جیپییوهای NVIDIA A100، موتور vLLM توان عملیاتی (Throughput) ۲ تا ۴ برابر بالاتری نسبت به ترنسفورمرهای استاندارد Hugging Face به دست آورد.[1]
از آن زمان، انویدیا (NVIDIA) تکنیکهای صفحهبندی مشابهی را در پشته نرمافزاری TensorRT-LLM خود ادغام کرده است. در یک تحلیل فنی در آگوست ۲۰۲۳، مهندسان انویدیا اشاره کردند که بهینهسازی حافظه نهان KV حیاتی است، زیرا «پهنای باند حافظه، گلوگاه اصلی برای استنتاج مدلهای زبان بزرگ است.»[2]
با این حال، سازوکار صفحهبندی سربار محاسباتی خاص خود را به همراه دارد. زمانبند باید به طور مداوم جدول بلوک را بهروزرسانی کند و ترجمه آدرسها را در طول فاز تولید که به شدت به تأخیر حساس است، انجام دهد.
آنچه هنوز اثبات نشده، این است که پیجاتنشن تا چه حد با گسترش پنجرههای زمینه از ۱۲۸٬۰۰۰ توکن به بیش از یک میلیون توکن، مقیاسپذیر خواهد بود. در این شرایط شدید، خود جدول بلوک به یک ساختار داده عظیم تبدیل میشود که نیاز به بهینهسازی دارد.
نسل بعدی موتورهای استنتاج باید تصمیم بگیرند که چگونه خود حافظه نهان را فشردهسازی کنند. تا زمانی که پهنای باند سختافزار با اندازه مدلها هماهنگ شود، توانایی زمانبند نرمافزاری در فشردهسازی محکم بلوکهای حافظه، تعیینکننده دوام تجاری استقرار هوش مصنوعی پیشرو خواهد بود.
اصطلاحات کلیدی
- KV Cache
- یک بانک حافظه موقت که در آن مدل زبان، نمایشهای ریاضی کلمات گذشته را ذخیره میکند تا از محاسبه مجدد آنها جلوگیری شود.
- Inference
- فازی که در آن یک مدل هوش مصنوعی آموزشدیده، پاسخهایی را به درخواستهای کاربر تولید میکند (استنتاج).
- Internal Fragmentation
- حافظه هدر رفتهای که زمانی رخ میدهد که یک سیستم یک بلوک بزرگ فضا را رزرو میکند اما تنها بخش کوچکی از آن را استفاده مینماید (قطعهقطعه شدن داخلی).
- Throughput
- تعداد کل درخواستها یا توکنهایی که یک سرور میتواند در یک بازه زمانی مشخص پردازش کند (توان عملیاتی).
پرسشهای متداول
چرا مدلهای زبان به حافظه نهان نیاز دارند؟
بدون حافظه نهان، مدل مجبور است هر بار که یک کلمه جدید تولید میکند، کل تاریخچه مکالمه را دوباره بخواند و پردازش کند، که از نظر محاسباتی بسیار پرهزینه است.
پیجاتنشن چگونه باعث صرفهجویی در حافظه میشود؟
این الگوریتم حافظه را به بلوکهای کوچک تقسیم میکند و تنها در صورت نیاز آنها را تخصیص میدهد، به جای اینکه یک تکه عظیم حافظه را برای هر کاربر رزرو کند، فقط به این دلیل که ممکن است یک درخواست طولانی بنویسد.
آیا این کار هوش مصنوعی را باهوشتر میکند؟
خیر. پیجاتنشن یک بهینهسازی مهندسی است که اجرای هوش مصنوعی را ارزانتر و سریعتر میکند، اما کیفیت پاسخهای مدل را تغییر نمیدهد.
بررسی عمیق دیدگاهها
توسعهدهندگان موتور استنتاج
تمرکز بر به حداکثر رساندن بهرهوری سختافزار و توان عملیاتی.
مهندسانی که فریمورکهای سرویسدهی مانند vLLM و TensorRT-LLM را میسازند، کارایی حافظه را در اولویت قرار میدهند. آنها استدلال میکنند که چون VRAM جیپییو به شدت محدود و بسیار گران است، حذف قطعهقطعه شدن از طریق صفحهبندی تنها راهکار ریاضیاتی ممکن برای سرویسدهی به میلیونها کاربر است. شواهد آنها بر اساس افزایش ۴ برابری توان عملیاتی است که با فشردهسازی محکم درخواستها در حافظه موجود به دست آمده است.
معماران سختافزار
تمرکز بر پهنای باند حافظه و محدودیتهای سیلیکون فیزیکی.
طراحان سیلیکون اشاره میکنند که در حالی که صفحهبندی نرمافزاری مشکلات ظرفیت را حل میکند، دیوار پهنای باند اساسی را حل نمیکند. آنها تأکید میکنند که انتقال داده بین حافظه جیپییو و هستههای محاسباتی آن همچنان کندترین مرحله در تولید است. از دیدگاه آنها، ترفندهای نرمافزاری مانند پیجاتنشن راهحلهای موقتی ضروری هستند، اما راهحلهای بلندمدت نیازمند انباشت فیزیکی حافظه نزدیکتر به پردازنده است.
- توسعهدهندگان موتور استنتاج
- تمرکز بر به حداکثر رساندن بهرهوری سختافزار و توان عملیاتی.
- معماران سختافزار
- تمرکز بر پهنای باند حافظه و محدودیتهای سیلیکون فیزیکی.
دیدگاههایی که این گزارش پوشش نداده
- ارائهدهندگان زیرساخت ابری
- توسعهدهندگان مدلهای متنباز
منابع
[1]UC Berkeley vLLM Teamتوسعهدهندگان موتور استنتاجEfficient Memory Management for Large Language Model Serving with PagedAttention
مطالعه در UC Berkeley vLLM Team →
[2]NVIDIAمعماران سختافزارMastering LLM Techniques: Inference Optimization
مطالعه در NVIDIA →
[3]تیم سردبیری کوهستانتوسعهدهندگان موتور استنتاجتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
بیشتر در هوش مصنوعی
مشاهده همه →زیرساخت هوش مصنوعی
چگونه کش KV مشکل تاخیر در مدلهای زبانی بزرگ را حل میکند
7 منبع
هوش مصنوعی ژنومیک
دیپمایند اطلس آلفاژنوم را برای پیشبینی اثرات ۹ میلیارد جهش دیانای رونمایی کرد
3 منبع
بنچمارکهای هوش مصنوعی
مدل Nemotron-3-Ultra-CC انویدیا رکورد برترین امتیاز انسانی را در المپیاد بینالمللی کامپیوتر شکست
5 منبع
هوش مصنوعی خودکار
مسدودسازی درخواستهای اکسپلویت توسط OpenAI پس از کشف خودکار آسیبپذیریهای روز صفر توسط GPT-6 Astra
7 منبع
نظرات
هر زاویه. هر روز.
اخبار هوش مصنوعی با پوشش کامل منابع و تحلیل دیدگاهها، هر روز و رایگان.





