تاینی‌سِرو؛ روشی باحال برای سرو کردن مدل‌های زبانی بزرگ بدون این همه دردسر!

Fall Back

اگه اهل هوش مصنوعی و مدل‌های زبانی بزرگ باشی، حتماً می‌دونی که سرو کردن یا همون اجرای سریع این مدل‌ها، مخصوصاً مدل‌هایی مثل TinyLLaMA یا GPT2-345M، همیشه کلی داستان داره! مثلاً حافظه زیاد می‌خواد و زمان پاسخ‌دهی بالاست. تازه وقتی صحبت از KV Cache وسط میاد، یعنی همون حافظه موقتی که مدل برای پیش‌بینی کلمه‌های بعدی استفاده می‌کنه، ماجرا سخت‌تر هم میشه. KV Cache همون جایی هست که مدل اطلاعات قبلی رو ذخیره می‌کنه تا لازم نباشه هر بار از اول محاسبه کنه.

اینجاست که یه ابزار جذاب به اسم “TinyServe” وارد میشه! تاینی‌سرو قرار نیست مدل‌های غول‌پیکر رو اجرا کنه، بلکه برای مدل‌هایی که نسبتاً کوچک‌ترن (همون tiny LLMها) ساخته شده. توش کلی ایده باحال پیاده شده، مثلاً:

  • Structured KV Sparsity یعنی حافظه‌ی موقت مدل رو هوشمندانه خالی می‌کنه و فقط چیزای لازم رو نگه می‌داره، نه اینکه همه‌چیز رو تو حافظه بزنه!
  • Plugin-based Token Selection یعنی می‌تونی براساس نیاز خودت، انتخاب شیوه انتخاب توکن‌ها رو عوض کنی. حالا توکن هم همون قطعه‌های کلمه یا عددیه که مدل‌ها بهشون کار دارن.
  • Hardware-Efficient Attention Kernels، یه جور برنامه‌نویسی خیلی بهینه‌ست که باعث میشه مدل روی سخت‌افزارهای مختلف، مخصوصاً کارت گرافیکی‌ها (GPUها) سریع‌تر و با مصرف کمتر اجرا بشه.

حالا یه قابلیت خیلی باحال که تاینی‌سرو داره، بحث “Query-Aware Page Selection” هست. بذار راحت بگم: مدل، موقع پیش‌بینی، با استفاده از یه تکنیک به اسم bounding-box metadata (یه جور داده‌ی خلاصه‌سازی شده واسه هر بخش حافظه)، قبل اینکه کل حافظه رو مرور کنه، سریعاً بخش‌های مهم و مرتبط رو تشخیص میده و فقط اونا رو بارگذاری می‌کنه! نتیجش اینه که دیگه مجبور نیست همه‌ی KV Cache رو یک‌جا بخونه و کلی تو زمان صرفه‌جویی میشه.

برای اینکه این عملیات سریع انجام بشه، تاینی‌سرو از یه کِرنل CUDA مخصوص کمک می‌گیره. CUDA رو اگه ندیدی، همون زبان/فریم‌ورکیه که باهاش برنامه رو روی کارت گرافیک‌ها اجرا می‌کنن. اینجا این کرنل همزمان چند تا کار رو تو یه گذر انجام میده: امتیازدهی به صفحات مختلف حافظه، دسترسی هوشمند به بخشای خاص، و اجرای masked attention یا همون توجه با ماسک (یعنی فقط اطلاعات مرتبط رو در نظر می‌گیره).

خُب، این حرفا فقط ادعا نیست. در تستا نشون دادن که با TinyServe سرعت اجرای مدل‌ها تا ۳.۴ برابر بیشتر میشه و مصرف حافظه هم بیش از دو برابر کمتر میشه! تازه این بهبودا بدون اینکه کارایی مدل به شکل محسوسی پایین بیاد اتفاق میافته.

یه عالمه بررسی هم روی اینکه حافظه چقدر بهینه استفاده میشه، نرخ برخورد صفحات (Page Hit Rate یعنی اینکه مدل می‌تونه همون دیتای قبلی رو دوباره استفاده کنه یا نه)، و حتی پشتیبانی از چند تا GPU هم انجام دادن. همه‌ی اینا نشون می‌ده که این سیستم هم در مرحله آموزش مدل و هم زمانی که داریم مدل رو استفاده می‌کنیم (یا همون inference)، می‌تونه روی سخت‌افزارهای ارزون‌تر و محدودتر واقعاً مؤثر باشه.

در یک کلام: تاینی‌سرو اومده تا اجرای مدل‌های زبانی کوچیک رو بدون هیاهو، سریع‌تر و با مصرف کمتر حافظه ممکن کنه. همیشه برای اجرای LLMها نیاز به غول‌ترین سخت‌افزارها نیست؛ گاهی با همین ترفندای باهوشانه، میشه کلی هزینه و زمان رو کم کرد!

منبع: +