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

چگونه کش KV مشکل تاخیر در مدل‌های زبانی بزرگ را حل می‌کند

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

به قلم آزاده ابراهیمی

مهندسان استنتاج 40%سازندگان سخت‌افزار 30%توسعه‌دهندگان برنامه‌ها 30%
مهندسان استنتاج
تمرکز بر پهنای باند حافظه، ظرفیت VRAM و تکنیک‌های بهینه‌سازی کش.
سازندگان سخت‌افزار
اولویت دادن به قدرت محاسباتی خام و سرعت ضرب ماتریس.
توسعه‌دهندگان برنامه‌ها
اولویت دادن به اندازه پنجره زمینه، تاخیر در تولید اولین توکن و هزینه به ازای هر درخواست.

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

  • توسعه‌دهندگان مدل‌های متن‌باز
  • مصرف‌کنندگان نهایی برنامه‌های کاربردی

چرا مهم است

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

سازندگان سخت‌افزار و تابلوهای امتیازات بنچمارک اغلب ادعا می‌کنند که سرعت خام پردازش گرافیکی (GPU) - که با ترافلاپس اندازه‌گیری می‌شود - گلوگاه اصلی برای تولید سریع‌تر متن است. اما داده‌های پروفایلینگ از سرورهای استنتاج در محیط‌های عملیاتی این فرض را رد می‌کند. برای مدل‌های زبانی بزرگ مدرن، پهنای باند حافظه است که زمان تولید را تعیین می‌کند، نه محاسبات ریاضی خام. محدودیت واقعی سرعت، زمان صرف شده برای واکشی کلیدها (Keys) و مقادیر (Values) از پیش محاسبه شده از مکانیزمی به نام کش KV است؛ مکانیزمی که از محاسبه مجدد کل تاریخچه مکالمه برای هر کلمه‌ای که مدل می‌نویسد، جلوگیری می‌کند.[1][4][5]

با گسترش مدل‌های زبانی برای پشتیبانی از پنجره‌های زمینه ۱۲۸ هزار توکنی یا بیشتر، حافظه مورد نیاز برای ذخیره این تاریخچه مکالمه به صورت خطی رشد می‌کند و اغلب از اندازه خود مدل فراتر می‌رود. هنگام تولید هر توکن، معماری‌های مدرن ضرب‌های ماتریس-بردار نسبتاً سبکی را انجام می‌دهند، اما این عملیات نیازمند بارگذاری مکرر مقادیر عظیمی از داده‌ها از حافظه است. این پویایی، چالش اساسی استقرار هوش مصنوعی را از یک مشکل پردازشی به یک مشکل ظرفیت حافظه تبدیل می‌کند.[1][3][4][5]

برای درک چرایی وجود این کش، باید به نحوه عملکرد مکانیزم توجه (Attention) نگاه کرد. وقتی یک مدل هوش مصنوعی جمله‌ای را تولید می‌کند، در یک حلقه خودهمبسته (Autoregressive) هر بار یک توکن را پیش‌بینی می‌کند. برای هر توکن جدید، مدل باید یک امتیاز توجه در برابر تمام توکن‌های قبلی محاسبه کند تا زمینه را درک کرده و انسجام متن را حفظ کند.[1][4]

بدون مکانیزم کش، تولید یک پاسخ ۱۰۰۰ کلمه‌ای مستلزم آن است که مدل روابط ریاضی را برای کلمه اول ۱۰۰۰ بار، برای کلمه دوم ۹۹۹ بار و به همین ترتیب دوباره محاسبه کند. این محاسبات اضافی به صورت نمایی (درجه دوم) افزایش می‌یابد، که باعث می‌شود چت‌بات‌های بلادرنگ و جریان‌های کاری عامل‌محور (Agentic) به طرز غیرممکنی کند و به شدت پرهزینه شوند.[1]

کش KV هزینه محاسباتی درجه دوم (Quadratic) در تولید خودهمبسته را به یک هزینه خطی تبدیل می‌کند.

کش KV با عمل کردن به عنوان یک بانک حافظه اختصاصی این مشکل را حل می‌کند. هنگامی که بردارهای کلید (Key) و مقدار (Value) یک توکن در یک لایه محاسبه می‌شوند، به جای دور ریخته شدن، در حافظه GPU ذخیره می‌شوند. وقتی مدل نیاز به تولید توکن بعدی دارد، به سادگی این بردارهای از پیش محاسبه شده را بازیابی کرده و تنها محاسبات جدیدترین توکن را به کش اضافه می‌کند.[1][2]

کش KV با عمل کردن به عنوان یک بانک حافظه اختصاصی این مشکل را حل می‌کند.

این بهینه‌سازی با موفقیت تولید متن را از یک مشکل محاسباتی درجه دوم به یک مشکل خطی تبدیل می‌کند. با این حال، این روش یک گلوگاه پردازشی را با یک گلوگاه ظرفیت حافظه معاوضه می‌کند. حجم عظیم داده‌های تولید شده توسط کش KV، به ویژه برای استقرارهای در مقیاس سازمانی، حیرت‌انگیز است.[1][2][4]

برای یک مدل ۷۰ میلیارد پارامتری مانند Llama 3.3، هر توکن در پنجره زمینه به حدود ۰٫۳۲ مگابایت فضای ذخیره‌سازی کش KV با دقت ۱۶ بیتی نیاز دارد. یک جلسه منفرد با ۱۲۸ هزار توکن زمینه، تقریباً ۴۰ گیگابایت از فضای ذخیره‌سازی کش KV را مصرف می‌کند.[1]

برای یک مدل ۷۰ میلیارد پارامتری، یک پنجره زمینه ۱۲۸ هزار توکنی صرفاً برای کش KV به ۴۰ گیگابایت VRAM نیاز دارد.

در یک محیط عملیاتی با ۱۰۰ کاربر همزمان که هر کدام یک سند ۳۲ هزار توکنی را ارسال می‌کنند، کش KV به تنهایی حدود یک ترابایت VRAM مصرف می‌کند. این مقدار بسیار بیشتر از ظرفیت ۸۰ گیگابایتی یک پردازنده گرافیکی پیشرفته H100 است و صرفاً برای نگهداری تاریخچه مکالمه به خوشه‌های سرور عظیمی نیاز دارد، حتی اگر پردازنده‌های محاسباتی بیکار بمانند.[2][5]

ناکارآمدی پیاده‌سازی‌های اولیه این مشکل را تشدید کرد. همان‌طور که مهندسان GMI Cloud در آگوست ۲۰۲۶ اشاره کردند: «کش KV بزرگ‌ترین هزینه متغیر در استنتاج LLM است که اکثر تیم‌ها آن را به طور صریح مدیریت نمی‌کنند.» سیستم‌های استنتاج سنتی بین ۶۰ تا ۸۰ درصد از حافظه تخصیص‌یافته کش KV را از طریق تکه‌تکه شدن (Fragmentation) و تخصیص بیش از حد هدر می‌دادند. از آنجا که حافظه در بلوک‌های پیوسته رزرو می‌شد، طول متغیر درخواست‌ها شکاف‌های عظیمی از VRAM غیرقابل استفاده به جا می‌گذاشت که به طور مصنوعی طول زمینه و توان عملیاتی را محدود می‌کرد.[1][6]

برای کاهش این مشکل، مهندسان تکنیک‌هایی مانند PagedAttention را توسعه داده‌اند که کش را به بلوک‌های غیرپیوسته تقسیم می‌کند و هدررفت حافظه را به زیر ۴ درصد کاهش می‌دهد. بهینه‌سازی حیاتی دیگر، کش کردن پیشوند (Prefix Caching) است که کش KV را برای پرامپت‌های سیستمی مشترک یا اسناد بازیابی شده یک بار ذخیره کرده و آن را در بین چندین کاربر مجدداً استفاده می‌کند، که این امر هزینه‌های ورودی موثر را برای زمینه‌های مشترک تا ۹۰ درصد کاهش می‌دهد.[1][5][6]

تکنیک‌هایی مانند PagedAttention کش را به بلوک‌های غیرپیوسته تقسیم کرده و هدررفت حافظه را به شدت کاهش می‌دهند.

با وجود این بهینه‌سازی‌های نرم‌افزاری، محدودیت‌های فیزیکی سخت‌افزار همچنان پابرجاست. یک مدل ۷۰ میلیارد پارامتری که به دقت ۴ بیتی کوانتیزه شده است، برای وزن‌های استاتیک خود به حدود ۳۵ گیگابایت VRAM نیاز دارد. با نرخ تخصیص ۰٫۳۲ مگابایت به ازای هر توکن، کش KV در دقیقاً ۱۱۲ هزار توکن از وزن‌های مدل به عنوان مصرف‌کننده اصلی حافظه پیشی می‌گیرد. پس از این آستانه، ردپای حافظه مدل کاملاً تحت سلطه حافظه کوتاه‌مدت خودش قرار می‌گیرد.[1][3][7]

تا سال ۲۰۲۶، با حرکت مدل‌ها به سمت پنجره‌های زمینه یک میلیون توکنی، صنعت در حال تغییر مسیر از بهینه‌سازی صرفاً محاسباتی به سمت مدیریت پیشرفته حافظه است. نسل بعدی سخت‌افزارهای استنتاج احتمالاً نه با تعداد ضرب‌های ماتریسی که می‌توانند در ثانیه انجام دهند، بلکه با میزان کارایی آن‌ها در مسیریابی، فشرده‌سازی و بازیابی جداول عظیم کلیدها و مقادیری تعریف می‌شود که به یک هوش مصنوعی اجازه می‌دهد رشته افکار منسجمی را حفظ کند.[4][5]

نکات کلیدی

  • کش KV محاسبات قبلی توکن‌ها را ذخیره می‌کند تا هوش مصنوعی مجبور نباشد تاریخچه کل مکالمه را برای هر کلمه جدید دوباره محاسبه کند.
  • اگرچه این روش مشکل گلوگاه پردازشی را حل می‌کند، اما خود باعث ایجاد یک گلوگاه عظیم در حافظه می‌شود که به صورت خطی با طول زمینه رشد می‌کند.
  • یک پنجره زمینه ۱۲۸ هزار توکنی در یک مدل ۷۰ میلیارد پارامتری، صرفاً برای کش خود به ۴۰ گیگابایت حافظه اختصاصی VRAM نیاز دارد.
  • تکنیک‌هایی مانند PagedAttention و کش کردن پیشوند (Prefix Caching) اکنون به الزامات استانداردی برای جلوگیری از تکه‌تکه شدن حافظه و کاهش هزینه‌های استنتاج تبدیل شده‌اند.

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

کش KV
یک بانک حافظه که بردارهای کلید و مقدار از پیش محاسبه شده را در طول تولید متن ذخیره می‌کند و از محاسبه مجدد کل زمینه برای هر کلمه جدید توسط مدل جلوگیری می‌کند.
تولید خودهمبسته
فرآیندی که طی آن یک مدل هوش مصنوعی کلمه بعدی در یک دنباله را بر اساس تمام کلمات تولید شده قبلی پیش‌بینی می‌کند.
حافظه ویدیویی (VRAM)
حافظه پرسرعتی که به صورت فیزیکی به یک پردازنده گرافیکی متصل است و برای ذخیره وزن‌های مدل و کش KV در طول استنتاج استفاده می‌شود.
PagedAttention
یک الگوریتم مدیریت حافظه که کش KV را به بلوک‌های کوچک‌تر و غیرپیوسته تقسیم می‌کند تا تکه‌تکه شدن حافظه را از بین برده و اندازه دسته‌ها (Batch Sizes) را افزایش دهد.
کوانتیزاسیون
تکنیکی که دقت وزن‌های مدل یا کش KV را (مثلاً از ۱۶ بیت به ۴ بیت) کاهش می‌دهد تا حافظه را به قیمت افت جزئی در دقت ذخیره کند.

منابع

پوشش منابع

7 منبع

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

مهندسان استنتاج 40%سازندگان سخت‌افزار 30%توسعه‌دهندگان برنامه‌ها 30%
  1. [1]GMI Cloudمهندسان استنتاج

    KV Cache Optimization for LLM Inference: How Cache-Aware Serving Reduces Cost and Latency

    مطالعه در GMI Cloud
  2. [2]CloudSwitchمهندسان استنتاج

    KV Cache Is Growing Rapidly

    مطالعه در CloudSwitch
  3. [3]Spheron Networkتوسعه‌دهندگان برنامه‌ها

    How Context Length Multiplies Memory

    مطالعه در Spheron Network
  4. [4]Wekaمهندسان استنتاج

    KV Cache is the Bottleneck Nobody Talks About

    مطالعه در Weka
  5. [5]BentoMLمهندسان استنتاج

    KV cache is often the real memory bottleneck

    مطالعه در BentoML
  6. [6]Introlمهندسان استنتاج

    Traditional inference wasting 60-80% of KV cache memory

    مطالعه در Introl
  7. [7]تیم سردبیری کوهستانمهندسان استنتاج

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

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

نظرات

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

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

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