پژوهشگران دانشگاه Tsinghua سامانه مدیریت حافظه نهان AKV را برای عاملهای مدلهای زبانی بزرگ (LLM) بهصورت متنباز در GitHub منتشر کردهاند. AKV بهجای کوتاهکردن یا خلاصهکردن گفتوگوی عامل هنگام طولانیشدن آن، اجازه میدهد عامل اطلاعات ذخیرهشدهای را کنار بگذارد و بخشهای باقیمانده را جابهجا کند. این پروژه بر پایه SGLang، نرمافزار اجرای مدلهای زبانی، ساخته شده و هم مؤلفهای برای انتخاب عملیات حافظه نهان دارد و هم سامانهای برای اجرای آنها.
این تفاوت مهم است، چون تاریخچه یک عامل ممکن است شامل مشاهدات، فراخوانی ابزارها و نتایج آنها باشد. نگهداشتن همه این موارد در بافت فعال مدل، به فضای ذخیرهسازی و پردازش نیاز دارد. اما ویرایش پیامهای قبلی میتواند سامانه را وادار کند بافت بعدی را دوباره محاسبه کند؛ فرایندی که «پیشپرکردن دوباره» (re-prefilling) نام دارد. مقاله AKV میگوید این کار میتواند پرهزینه باشد، درحالیکه حذف بخش زیادی از تاریخچه ممکن است دقت انجام وظایف را کاهش دهد. AKV بهجای این کار، تاریخچه گفتوگو را دستنخورده نگه میدارد و بخشهایی از حافظه نهان کلید-مقدار را که مدل به آنها توجه میکند تغییر میدهد.
AKV چگونه کار میکند؟
AKV دو عملیات برای حافظه نهان در اختیار عاملها میگذارد. عملیات «حذف» (drop) اطلاعات انتخابشده را از توجههای بعدی کنار میگذارد و عملیات «جابهجایی» (reposition) جایگاه اطلاعات باقیمانده را فشرده میکند. در نمونه پروژه، آخرین نتیجه ابزار حفظ میشود، نتیجه قدیمیتر پس از رسیدن نتیجه جدید کنار گذاشته میشود و سپس حافظه نهان باقیمانده جابهجا میشود. پیامهای اصلی همچنان در درخواست باقی میمانند و سرور AKV دستورهای مربوط به حافظه نهان را اجرا میکند. بهگفته مقاله، این روش از پیشپرکردن دوباره بافت باقیمانده جلوگیری میکند.
سامانه باید تغییراتی را هم که در حافظه نهان اعمال شده در نظر بگیرد. مقاله اشاره میکند که یک توالی یکسان از توکنهای گفتوگو، بسته به اینکه عامل از چه عملیاتی استفاده کرده باشد، میتواند به وضعیتهای متفاوتی از حافظه نهان منجر شود. بنابراین سرور نمیتواند صرفاً با تطبیق پیشوند گفتوگو، اطلاعات ذخیرهشده را با اطمینان دوباره به کار بگیرد. AKV سیاستی در سمت عامل را با سروری مبتنی بر SGLang ترکیب میکند که استفاده مجدد، حذف و بازیابی حافظه نهان را مدیریت میکند. بهگفته پروژه، سرور از رابطی بدون وضعیت (stateless) و سازگار با APIهای رایج سرویسدهی استفاده میکند و در عین حال وضعیت حافظه نهان را در داخل خود مدیریت میکند.
آزمایشها چه چیزی نشان میدهند؟
در آزمایشهای نویسندگان، سیاست حذف چرخشی برای پاسخ ابزارها، در مقایسه با خلاصهسازیِ فعالشونده با رسیدن به آستانه، میانگین امتیاز بنچمارکها را 1.7 امتیاز افزایش داد و میانگین هزینه را 27.7% کاهش داد. مقاله همچنین از حداکثر 1.2 برابر توان عملیاتی خروجی و افزایش سرعت 1.5 برابری در تأخیر درخواستها در صدک 95 خبر میدهد. روشی جداگانه برای بهبود سیاستهای حافظه نهان نیز با طراحی بازگشتی، هزینه را در مقایسه با سیاستهای طراحیشده توسط متخصصان 7.1% کاهش داد. این نتایج را نویسندگان مقاله گزارش کردهاند و در مطالب ارائهشده گزارشی از تکرار مستقل آزمایشها وجود ندارد.
راهنمای GitHub نصب AKV با Rust، Cargo و Python 3.12 را توضیح میدهد. نمونه شروع سریع آن، GPT-OSS-120B را از طریق AKV ارائه میکند و درخواستها را با قالب تکمیل گفتوگوی سازگار با OpenAI میفرستد. پروژه همچنین توضیح میدهد که میتوان سیاست آن را با پردازش درخواستها پیش از ارسال به سرور، در یک چارچوب موجود برای عاملها ادغام کرد. نتایج گزارششده چهار بنچمارک عامل را پوشش میدهند، اما مطالب ارائهشده نام این بنچمارکها را ذکر نمیکنند یا جزئیات کافی برای سنجش تعمیمپذیری صرفهجوییها به مدلها و بارهای کاری دیگر ارائه نمیدهند.
چرا مهم است
برای تیمهایی که عاملهایی میسازند که مکرراً از ابزارها استفاده میکنند، AKV راهی فراهم میکند تا نتایج قدیمی ابزارها را بدون بازنویسی تاریخچه گفتوگو کنار بگذارند. نویسندگان در آزمایشهای خود از کاهش هزینه خبر میدهند، اما میزان صرفهجویی برای هر تیم به مدل و بار کاری آن بستگی دارد.