قابلیت RadixAttention در SGLang زمان گرمشدن تا اولین توکن (TTFT) را در یک سیستم مجهز به دو کارت RTX 3090 به 68 میلیثانیه کاهش داد، در حالی که PagedAttention در vLLM روی 184 میلیثانیه باقی ماند؛ این شکاف 82.9 درصدی در تأخیر باعث میشود تعاملات چندمرحلهای عاملها (agents) بهطور محسوسی روانتر به نظر برسند.
هر دو پروژه تلاش میکنند سرعت استنتاج مدلهای زبانی بزرگ (LLM) را افزایش دهند، اما این بنچمارک حجم کاریهایی را هدف قرار میدهد که دستیارهای خودکار را تغذیه میکنند: پرامپتهای سیستمی طولانی، طرحهای فراخوانی ابزار (tool-calling) و تاریخچه متغیر از تبادلات کاربر و دستیار. این توکنهای تکراری در حافظه GPU قرار میگیرند؛ اگر حافظه پنهان (cache) بهطور کارآمد مدیریت نشود، آنها به یک گلوگاه محاسباتی تبدیل میشوند که باعث توقف مکالمه میگردد.
حجم کاری که کفه ترازو را سنگین کرد
سرورهای سنتی LLM برای یک تبادل واحد بهینهسازی شدهاند: پرامپت کاربر، پاسخ مدل، و تمام. با این حال، عاملهای مدرن یک «وضعیت مکالمه» (conversation state) را حفظ میکنند که میتواند شامل دهها مرحله باشد و هر مرحله صدها توکن به حافظه پنهان اضافه میکند. مجموعه تست، چنین حلقه چندمرحلهای را روی دو کارت RTX 3090 بازسازی کرد و موارد زیر را اندازهگیری نمود:
- زمان گرمشدن تا اولین توکن (TTFT) – تأخیر قبل از ظاهر شدن اولین توکن پس از شروع یک مرحله جدید.
- تأخیر کلی – میانگین زمان برای هر توکن در کل حلقه.
- توان عملیاتی پایدار – تعداد توکنهای پردازششده در ثانیه زمانی که حلقه بهطور مداوم اجرا میشود.
- نسبت برخورد با حافظه پنهان (Cache-hit ratio) – نسبت توکنهایی که بهجای محاسبه مجدد، از حافظه پنهان کلید-مقدار (KV cache) مجدداً استفاده شدهاند.
SGLang در تمام معیارها از vLLM پیشی گرفت: TTFT برابر با 68 میلیثانیه در مقابل 184 میلیثانیه، کاهش 82.9 درصدی تأخیر، 39.8 درصد توان عملیاتی بالاتر و نسبت برخورد با حافظه پنهان 96.8 درصدی در مقایسه با 84.2 درصد در vLLM.
PagedAttention در مقابل RadixAttention
هر دو موتور، جفتهای KV میانی را در حافظه GPU ذخیره میکنند، اما سازماندهی حافظه آنها متفاوت است.
- PagedAttention (vLLM) حافظه پنهان را به بلوکهایی با اندازه ثابت تقسیم میکند. اگر یک پرامپت در میانه یک بلوک تمام شود، توکنهای انتهایی باید در هر مرحله دوباره محاسبه شوند، زیرا بلوک را نمیتوان بهصورت جزئی مجدداً استفاده کرد. این رویکرد ساده است و زمانی که پرامپتها با مرزهای بلوک همتراز باشند بهخوبی عمل میکند، اما باعث هدر رفتن چرخه پردازشی برای توکنهای «لبه» میشود که در حلقههای عاملها بیش از همه تغییر میکنند.
- RadixAttention (SGLang) با حافظه پنهان مانند یک درخت برخورد میکند. این روش، بدون توجه به محدودیتهای بلوک، طولانیترین پیشوند مشترک بین پرامپت فعلی و آنچه قبلاً در حافظه ذخیره شده را پیدا کرده و برگهای استفادهنشده را هرس میکند. این امر اجازه میدهد یک پرامپت سیستمی عظیم در حافظه GPU ثابت بماند و تنها جدیدترین مرحله پردازش شود، که باعث افزایش نسبت برخورد با حافظه پنهان و کاهش کارهای تکراری میشود.
زمان درخشش هر موتور
| سناریو | موتور پیشنهادی |
|---|---|
| عاملهای خودکار چندمرحلهای، فراخوانی ابزار سنگین، استدلال درختِ فکر (tree-of-thought) | SGLang (RadixAttention) |
| پشتیبانی گسترده از سختافزار (از جمله شتابدهندههای AMD و Gaudi)، رمزگشایی حدسی (speculative decoding)، مدلهای بینایی-زبانی | vLLM (PagedAttention) |
تفاوت تنها در عملکرد نیست؛ بلکه در اکوسیستم نیز هست. سازگاری گستردهتر vLLM با سختافزارهای مختلف، آن را به یک گزینه پیشفرض امنتر برای سازمانهایی با خوشههای محاسباتی ناهمگون تبدیل میکند. ویژگی رمزگشایی حدسی آن — تولید موازی چندین کاندیدای توکن — میتواند تولید تکمرحلهای را تسریع کند؛ حوزهای که در آن حافظه پنهان مبتنی بر درخت RadixAttention مزیت کمتری ارائه میدهد.
خلاصه کلام
برای توسعهدهندگانی که در حال ساخت عاملهای چندمرحلهای هستند که با پرامپتهای طولانی و بهروزرسانیهای تدریجی سر و کار دارند، RadixAttention در SGLang تجربهای بهمراتب سریعتر و از نظر استفاده از حافظه پنهان کارآمدتر را روی GPUهای مصرفکننده ارائه میدهد. تیمهایی که به پوشش گسترده سختافزاری نیاز دارند یا در تولید تکمرحلهای تخصص دارند، ممکن است همچنان به vLLM تکیه کنند. انتخاب اکنون به این بستگی دارد که حجم کاری «عاملمحور» (agent-heavy) است یا «با تنوع سختافزاری» (hardware-diverse).
