شاپیفای روش جدیدی به نام Gisting معرفی کرده که پرامپت‌های طولانی مدل‌های زبانی بزرگ را به «توکن‌های gist» یادگرفته‌شده فشرده می‌کند. این فشرده‌سازی پرامپت تأخیر و هزینهٔ استنتاج را کاهش می‌دهد و توان پردازشی (QPS) را افزایش می‌دهد.

اهمیت Gisting

به‌جای فرستادن هزاران توکن متنی به مدل، Gisting دنبالهٔ طولانی پرامپت را با یک دنبالهٔ کوتاه از توکن‌های فشرده جایگزین می‌کند. این کار بدون تغییر وزن‌های اصلی مدل انجام می‌شود و نیازی به ماژول‌های اضافی در زمان اجرا نیست؛ مدل همانند گذشته بارگذاری و اجرا می‌شود و فقط توکن‌های جدید در توکنایزر ثبت شده‌اند.

نتایج عملی در مقیاس

شاپیفای گزارش داده که پرامپت سیستمی عامل Sidekick GraphQL از حدود 6000 توکن به 1500 توکن gist کاهش یافته است، یعنی کاهش زمینه به نسبت تقریباً 4:1، بدون افت محسوس در کیفیت پیش‌بینی‌ها.

شاخص‌های عملکرد

  • در نرخ 350 درخواست در دقیقه، میانهٔ زمان تا اولین توکن (TTFT) از 438 میلی‌ثانیه به 354 میلی‌ثانیه بهبود یافت.
  • میانهٔ تأخیر انتها-به-انتها از 6.8 ثانیه به 4.2 ثانیه کاهش یافت.
  • توان پردازش از 20.2 به 23.4 پرس‌وجو در ثانیه (QPS) افزایش پیدا کرد، که امکان کاهش تخصیص GPU را برای تیم‌های مهندسی فراهم ساخت.

مرور فنی

Gisting بر فرایند دو مرحله‌ای معلم-دانش‌آموز مبتنی است و عناصر مرتبط با distillation و فشرده‌سازی پرامپت را ترکیب می‌کند. روند کلی شامل مراحل زیر است:

  1. عبور معلم (teacher pass): مدل با پرامپت کامل اجرا می‌شود تا لاجیت‌های معلم به‌دست آید.
  2. عبور دانش‌آموز (student pass): مدل با توکن‌های gist اجرا می‌شود و لاجیت‌های دانش‌آموز محاسبه می‌گردد.
  3. به‌روزرسانی امبدینگ‌ها: امبدینگ‌های gist طوری آموزش می‌بینند که واگرایی KL بین لاجیت‌های معلم و دانش‌آموز مینیمم شود، یعنی خروجی مدل با توکن‌های gist تا حد ممکن به خروجی با پرامپت کامل نزدیک شود.
  4. یکپارچه‌سازی در توکنایزر: پس از آموزش، امبدینگ‌ها در ماتریس امبدینگ مدل نوشته شده و توکن‌های جدید در توکنایزر ثبت می‌شوند؛ در نتیجه زمان استنتاج نیازی به مسیر یا ماژول اضافه ندارد.
نمایش تصویری مفهوم Gisting و فشرده‌سازی پرامپت در مدل‌های زبانی

چرا این روش بهتر از خلاصه‌سازی متنی است؟

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

ترکیب با دیگر بهینه‌سازی‌ها

Gisting می‌تواند با تکنیک‌هایی مانند prefix caching هم‌افزایی داشته باشد. کش پیشوند از محاسبهٔ مجدد تانسورهای KV جلوگیری می‌کند؛ با این حال مدل هنوز باید آن تانسورها را در فاز دیکدینگ پردازش کند. جایگزینی پرامپت طولانی با دنبالهٔ کوتاه‌تر از توکن‌های gist بار پردازشی دیکدینگ را کمتر می‌کند و ترکیب این دو روش منجر به کاهش بیشتر تأخیر و هزینهٔ زیرساخت می‌شود.

ریشه‌ها و منابع علمی

ایدهٔ Gisting از پژوهش‌های فشرده‌سازی پرامپت و knowledge distillation الهام گرفته است. برای مطالعهٔ مبانی می‌توان به مفاهیم مربوط به مدل‌های زبان و مقالات مرتبط با distillation و فشرده‌سازی پرامپت مراجعه کرد.

کاربردها و چشم‌انداز

این روش برای سرویس‌های چت‌باتی با پرامپت‌های طولانی، سیستم‌های پاسخگویی مبتنی بر قوانین و هر سامانه‌ای که بار پیش‌متنی بزرگی دارد مفید است. ترکیب Gisting با کش پیشوند و بهینه‌سازی‌های دیگر می‌تواند هزینه‌های زیرساخت را کاهش داده و پاسخ‌دهی سریع‌تری ارائه کند. انتظار می‌رود پیاده‌سازی‌ها و ابزارهای متن‌باز بیشتری حول این ایده شکل بگیرند و پذیرش آن در اکوسیستم مدل‌های زبانی گسترش یابد.

منابع: گزارش مهندسی شاپیفای و پژوهش‌های مرتبط با فشرده‌سازی پرامپت و knowledge distillation.