رفتن به محتوای اصلی
Koohestun
توضیح کوهستانزیرساخت محاسباتیتوضیح فنی· 4 دقیقه مطالعه· در هوش مصنوعی

چگونه «پیج‌اتنشن» حافظه جی‌پی‌یو را برای حل گلوگاه زمینه (Context) در مدل‌های زبان بزرگ تقسیم‌بندی می‌کند؟

مدل‌های زبان بزرگ با ذخیره توکن‌های قبلی در یک بانک حافظه موقت به نام حافظه نهان KV، متن تولید می‌کنند. با تقسیم این حافظه به بلوک‌های غیرمتوالی، موتورهای استنتاج می‌توانند قطعه‌قطعه شدن (Fragmentation) را از بین ببرند و تعداد کاربرانی را که یک سرور می‌تواند پشتیبانی کند، تا چهار برابر افزایش دهند.

به قلم اِلا فرجاد

توسعه‌دهندگان موتور استنتاج 60%معماران سخت‌افزار 40%
توسعه‌دهندگان موتور استنتاج
تمرکز بر به حداکثر رساندن بهره‌وری سخت‌افزار و توان عملیاتی.
معماران سخت‌افزار
تمرکز بر پهنای باند حافظه و محدودیت‌های سیلیکون فیزیکی.

دیدگاه‌هایی که این گزارش پوشش نداده

  • ارائه‌دهندگان زیرساخت ابری
  • توسعه‌دهندگان مدل‌های متن‌باز

زمان‌بندی استنتاج که بین مدل زبان بزرگ و سخت‌افزار آن قرار دارد، دقیقاً تصمیم می‌گیرد که چه مقدار حافظه به درخواست کاربر اختصاص یابد. این زمان‌بند می‌تواند حافظه رم ویدیویی (VRAM) جی‌پی‌یو را به قطعات سخت و متوالی تقسیم کند، یا آن را به صفحات پویا و غیرمتوالی تقسیم‌بندی نماید. این انتخاب در لحظه رسیدن یک درخواست جدید انجام می‌شود و تعیین می‌کند که آیا سرور می‌تواند ده کاربر همزمان را مدیریت کند یا صد کاربر را.

هنگامی که مدلی مانند لاما ۳ یا جی‌پی‌تی-۴ پاسخی تولید می‌کند، تاریخچه کامل مکالمه را برای هر کلمه جدید دوباره محاسبه نمی‌کند. در عوض، نمایش‌های ریاضی کلمات گذشته را در یک ناحیه ذخیره‌سازی موقت که به عنوان حافظه نهان Key-Value یا (KV) شناخته می‌شود، ذخیره می‌کند.

با تولید متن بیشتر توسط مدل، این حافظه نهان به صورت خطی رشد می‌کند. در سال ۲۰۲۳، محققان دانشگاه یو‌سی برکلی (UC Berkeley) تشخیص دادند که حافظه نهان KV تا ۳۰٪ از کل حافظه جی‌پی‌یو را در طول استنتاج مصرف می‌کند و یک گلوگاه جدی ایجاد می‌کند که ظرفیت کاربران همزمان را محدود می‌سازد.[1]

روش سنتی مدیریت این حافظه بسیار ناکارآمد بود. زمان‌بندها یک بلوک بزرگ و متوالی از حافظه را برای حداکثر طول ممکن یک مکالمه اختصاص می‌دادند. اگر کاربر فقط یک سوال کوتاه می‌پرسید، بقیه حافظه تخصیص‌یافته خالی می‌ماند و برای درخواست‌های دیگر قابل استفاده نبود.

این پدیده، که به عنوان قطعه‌قطعه شدن داخلی حافظه (Internal Memory Fragmentation) شناخته می‌شود، مقادیر زیادی از ظرفیت سخت‌افزاری گران‌قیمت را هدر می‌داد. به گفته تیم یو‌سی برکلی، «سیستم‌های موجود ۶۰٪ تا ۸۰٪ حافظه را به دلیل قطعه‌قطعه شدن و رزرو بیش از حد هدر می‌دهند.»[1]

پیج‌اتنشن حافظه نهان KV را به بلوک‌های کوچک تقسیم می‌کند و قطعه‌قطعه شدن ناشی از رزرو حداکثر طول زمینه را از بین می‌برد.

برای حل این مشکل، توسعه‌دهندگان الگوریتم «پیج‌اتنشن» (PagedAttention) را معرفی کردند؛ الگوریتمی که از نحوه مدیریت رم توسط سیستم‌عامل‌های سنتی کامپیوتر الهام گرفته شده است. پیج‌اتنشن به جای رزرو یک بلوک عظیم، حافظه نهان KV را به صفحات کوچک و با اندازه ثابت تقسیم می‌کند.

هر صفحه معمولاً کلیدها و مقادیر توجه (Attention Keys and Values) را برای تعداد مشخصی از توکن‌ها در خود جای می‌دهد—اغلب ۱۶ یا ۳۲ توکن. نکته حیاتی این است که این صفحات نیازی ندارند که در سیلیکون فیزیکی کنار یکدیگر قرار گیرند.[1]

هر صفحه معمولاً کلیدها و مقادیر توجه (Attention Keys and Values) را برای تعداد مشخصی از توکن‌ها در خود جای می‌دهد—اغلب ۱۶ یا ۳۲ توکن.

یک جدول بلوک مرکزی مکان هر صفحه را ردیابی می‌کند. هنگامی که مدل نیاز به ارجاع به یک توکن گذشته دارد، زمان‌بند آدرس مجازی را در جدول بلوک جستجو کرده و آن را به مکان فیزیکی روی جی‌پی‌یو ترجمه می‌کند.

این سازوکار عملاً قطعه‌قطعه شدن داخلی را از بین می‌برد. حافظه به صورت پویا، صفحه به صفحه، تنها زمانی تخصیص داده می‌شود که مدل واقعاً یک توکن جدید تولید کند که نیاز به ذخیره‌سازی دارد.

دستاوردهای کارایی قابل اندازه‌گیری و فوری هستند. با پیاده‌سازی پیج‌اتنشن در موتور متن‌باز vLLM، توسعه‌دهندگان اتلاف حافظه را به زیر ۴٪ کاهش دادند.[1]

آزاد شدن آن حافظه هدر رفته به سرور اجازه می‌دهد تا درخواست‌های کاربران همزمان بیشتری را در همان جی‌پی‌یو بارگذاری کند. در تست‌های معیار روی جی‌پی‌یوهای NVIDIA A100، موتور vLLM توان عملیاتی (Throughput) ۲ تا ۴ برابر بالاتری نسبت به ترنسفورمرهای استاندارد Hugging Face به دست آورد.[1]

با کاهش اتلاف حافظه، موتورهای استنتاج می‌توانند تا چهار برابر درخواست‌های همزمان بیشتری را پردازش کنند.

از آن زمان، انویدیا (NVIDIA) تکنیک‌های صفحه‌بندی مشابهی را در پشته نرم‌افزاری TensorRT-LLM خود ادغام کرده است. در یک تحلیل فنی در آگوست ۲۰۲۳، مهندسان انویدیا اشاره کردند که بهینه‌سازی حافظه نهان KV حیاتی است، زیرا «پهنای باند حافظه، گلوگاه اصلی برای استنتاج مدل‌های زبان بزرگ است.»[2]

با این حال، سازوکار صفحه‌بندی سربار محاسباتی خاص خود را به همراه دارد. زمان‌بند باید به طور مداوم جدول بلوک را به‌روزرسانی کند و ترجمه آدرس‌ها را در طول فاز تولید که به شدت به تأخیر حساس است، انجام دهد.

آنچه هنوز اثبات نشده، این است که پیج‌اتنشن تا چه حد با گسترش پنجره‌های زمینه از ۱۲۸٬۰۰۰ توکن به بیش از یک میلیون توکن، مقیاس‌پذیر خواهد بود. در این شرایط شدید، خود جدول بلوک به یک ساختار داده عظیم تبدیل می‌شود که نیاز به بهینه‌سازی دارد.

نسل بعدی موتورهای استنتاج باید تصمیم بگیرند که چگونه خود حافظه نهان را فشرده‌سازی کنند. تا زمانی که پهنای باند سخت‌افزار با اندازه مدل‌ها هماهنگ شود، توانایی زمان‌بند نرم‌افزاری در فشرده‌سازی محکم بلوک‌های حافظه، تعیین‌کننده دوام تجاری استقرار هوش مصنوعی پیشرو خواهد بود.

نکات کلیدی

  1. حافظه نهان KV توکن‌های گذشته را در طول تولید ذخیره می‌کند، اما به طور سنتی به دلیل قطعه‌قطعه شدن، تا ۸۰٪ از حافظه را هدر می‌دهد.
  2. پیج‌اتنشن این حافظه را به بلوک‌های کوچک و پویا تقسیم می‌کند و فضا را تنها در صورت نیاز تخصیص می‌دهد.
  3. این بهینه‌سازی به سرورهای استنتاج اجازه می‌دهد تا چهار برابر کاربران همزمان بیشتری را روی همان سخت‌افزار مدیریت کنند.

اصطلاحات کلیدی

KV Cache
یک بانک حافظه موقت که در آن مدل زبان، نمایش‌های ریاضی کلمات گذشته را ذخیره می‌کند تا از محاسبه مجدد آن‌ها جلوگیری شود.
Inference
فازی که در آن یک مدل هوش مصنوعی آموزش‌دیده، پاسخ‌هایی را به درخواست‌های کاربر تولید می‌کند (استنتاج).
Internal Fragmentation
حافظه هدر رفته‌ای که زمانی رخ می‌دهد که یک سیستم یک بلوک بزرگ فضا را رزرو می‌کند اما تنها بخش کوچکی از آن را استفاده می‌نماید (قطعه‌قطعه شدن داخلی).
Throughput
تعداد کل درخواست‌ها یا توکن‌هایی که یک سرور می‌تواند در یک بازه زمانی مشخص پردازش کند (توان عملیاتی).

منابع

پوشش منابع

3 منبع

2 دیدگاه شناسایی‌شده

توسعه‌دهندگان موتور استنتاج 60%معماران سخت‌افزار 40%
  1. [1]UC Berkeley vLLM Teamتوسعه‌دهندگان موتور استنتاج

    Efficient Memory Management for Large Language Model Serving with PagedAttention

    مطالعه در UC Berkeley vLLM Team
  2. [2]NVIDIAمعماران سخت‌افزار

    Mastering LLM Techniques: Inference Optimization

    مطالعه در NVIDIA
  3. [3]تیم سردبیری کوهستانتوسعه‌دهندگان موتور استنتاج

    تحلیل تیم سردبیری کوهستان

    مطالعه در تیم سردبیری کوهستان

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

دریافت هوش مصنوعی اخبار همراه با پوشش کامل منابع و تحلیل دیدگاه‌ها، مستقیم در صندوق ورودی شما.