چرا نمیشه کش KV رو مستقیم بین GPU و تراشهی ویفری جابهجا کرد؟
خلاصهٔ کاملتر
فرض کن دو فروشندهی هاردور سر چیدمان و فرمت کش KV به توافق برسن؛ نویسنده میگه بازم یه مشکل باقی میمونه: خود بایتها باید از یه دستگاه به دستگاه دیگه منتقل بشن. این بخش که شبیه لولهکشی ساده به نظر میرسه اصلاً بیطرف نیست، چون هر ماشین (CPU، GPU یا تراشهی ویفری) یه سلسلهمراتب حافظهی مخصوص خودشو داره که تا حالا همیشه یه برنامهی واحد کنترلش میکرده. inference توزیعشده -یعنی جدا کردن مرحلهی prefill از decode روی دو دستگاه- اولین باریه که این مالکیت بین دو فروشنده تقسیم میشه.
هر ماشین چند تا لایهی حافظه داره: تو GPU نسل Blackwell از رجیستر شروع میشه، بعد ۱۲۸ کیلوبایت shared memory هر SM، بعد L2، بعد HBM. تو تراشهی ویفری Cerebras هم هر کدوم از ۹۰۰ هزار هسته فقط ۴۸ کیلوبایت SRAM خصوصی داره و بقیه چیزا با پیام (wavelet) رد و بدل میشه. کتابخونههای انتقال شبکه مثل NIXL -که پشت vLLM و Dynamo هستن- فقط میتونن به یه لایهی «عمومی» و پایدار برسن، مثل DRAM یا VRAM، نه shared memory یا SRAM هر هسته:
enum nixl_mem_t {
DRAM_SEG, VRAM_SEG, BLK_SEG, OBJ_SEG, FILE_SEG
};یعنی این لایهها از بیرون تراشه آدرسپذیر نیستن. حتی وقتی هر دو طرف GPU باشن، جابهجایی دو مرحله داره: شبکه بایتها رو تا HBM میبره، بعد TMA و کرنل مصرفکننده اونا رو به shared memory میبرن؛ این مرز رو کسی حس نمیکنه چون هر دو طرف رو یه تیم مینویسه. اما تراشهی ویفری اصلاً حافظهی مشترک آدرسپذیر نداره، پس چیزی برای pin کردن نیست: بایتها باید اول تو DRAM یا MemoryX بشینن و بعد با برنامهریزی خود تراشه (که cslc تولیدش کرده) رو فابریک پخش بشن -یه گام اضافه رو مسیر تأخیر اولین توکن.
دو تا معماری واقعی الان با هزینههای کاملاً متفاوت کار میکنن. تو معماری اول (مثل AWS و AMD) کش KV فقط یه بار جابهجا میشه ولی حجمش زیاده -طبق اندازهگیری Splitwise یه درخواست ۵۱۲ توکنی رو مدل OPT-66B حدود ۱٫۱۳ گیگابایت کش تولید میکنه- پس گلوگاه، پهنای باند و صفبندیه.
تو معماری دوم (چیدمان NVIDIA با شتابدهندهی Groq LPX) attention رو GPU میمونه و فقط فعالسازیهای کوچیک هر لایه رد و بدل میشن، ولی این کار سریاله: صد لایه یعنی دویست بار عبور از مرز که نویسنده تخمین میزنه حدود ۲۰۰ میکروثانیه تأخیر خالص شبکه رو هر توکن اضافه میکنه، یعنی تا ۲۰ درصد بودجهی تأخیر بین توکنها. پهنای باند بین دو GPU هم خودش تا ۷۲ برابر فرق میکنه، از NVLink تا اینترنت بین دیتاسنترها، و NIXL هیچ اطلاعاتی دربارهی این هزینه نمیده.
نویسنده سه راهحل رو بررسی میکنه و هیچکدوم رو کامل نمیدونه: توافق دوجانبهی خصوصی بین دو فروشنده (کار میکنه ولی برای هر جفت فروشنده باید از نو انجام بشه)، یه فرمت میانجی مشترک (پرتابلتره ولی هزینهی تبدیل رو دقیقاً رو مسیر تأخیر اولین توکن میذاره)، یا اینکه تولیدکننده مستقیم تو فرمت مصرفکننده بنویسه (سریعتره ولی یعنی کامپایلر یه طرف باید سلسلهمراتب حافظهی طرف دیگه رو بشناسه، دقیقاً همون مالکیت واحدی که inference توزیعشده از اول کنارش گذاشته بود).
نکات کلیدی:
- کتابخونهی NIXL (پشت vLLM و Dynamo) فقط پنج نوع حافظه رو میشناسه: DRAM_SEG، VRAM_SEG، BLK_SEG، OBJ_SEG، FILE_SEG
- تراشهی ویفری Cerebras WSE-3 حدود ۹۰۰ هزار هسته داره، هر کدوم فقط ۴۸ کیلوبایت SRAM خصوصی و بدون آدرس مشترک
- طبق اندازهگیری Splitwise، یه درخواست ۵۱۲ توکنی رو مدل OPT-66B حدود ۱٫۱۳ گیگابایت کش KV تولید میکنه
- پهنای باند بین دو GPU بسته به مسیر فیزیکی تا ۷۲ برابر فرق میکنه: حدود ۹۰۰ گیگابایت بر ثانیه رو NVLink در برابر ۱۲٫۵ گیگابایت بر ثانیه رو TCP بین دیتاسنترها
- تو معماری Groq LPX هر توکن حدود ۲۰۰ میکروثانیه فقط صرف عبور فعالسازیها از مرز میشه، یعنی تا ۲۰ درصد بودجهی تأخیر بین توکنها
- سه راهحل پیشنهادی (توافق دوجانبه، فرمت میانجی، تولیدکنندهی مسلط) هیچکدوم بدون هزینه نیستن




