یک راه‌حل باحال برای سریع‌تر کردن مدل‌های زبانی عظیم روی سخت‌افزارهای مختلف: Opt4GPTQ!

Fall Back

تا حالا به این فکر کردی که مدل‌های زبان خیلی بزرگ (LLMها) چطور باید روی انواع سیستم‌ها و سخت‌افزارها کار کنن؟ مثلاً یه شرکت ممکنه سرورهای خیلی قوی داشته باشه اما یکی دیگه کامپیوترهای ارزون‌تر و ضعیف‌تر رو استفاده کنه… مشکل اینه که این مدل‌ها خیلی سنگین هستن و اجرا کردنشون (یا همون inference، یعنی وقتی مدل می‌خوای جواب بده) روی همه جور دستگاهی راحت نیست و همیشه بهینه و سریع انجام نمیشه.

یه تیم باهوش اومده دست به کار شده و یه روش خیلی خفن رو معرفی کرده به نام Opt4GPTQ. حالا اسمش شیکه ولی تهش یعنی اومدن سریع‌تر کردن جواب‌دهی مدل‌های زبان بزرگ رو حتی وقتی روی سخت‌افزارهای مختلف اجرا می‌شن.

یه نکته اینجاست که این روش مخصوص مدل‌هایی هست که به صورت ۴ بیتی با تکنیک GPTQ کوانتایز شدن. گفتم کوانتایز؟ یعنی مدل رو فشرده‌تر و سبک‌تر کردن که با مصرف حافظه کمتر و سرعت بیشتر اجرا بشه. GPTQ هم یه روش خاص برای همین کاره.

حالا این تیم تو مقاله‌شون سه تا ترفند خیلی کار راه‌انداز برای اجرای بهتر روی سیستم‌های متنوع پیشنهاد داده:

۱. بهینه‌سازی بافر حافظه به اشتراک‌گذاری شده (SMB-Opt): ببین، این یعنی داده‌هایی که مدل لازم داره رو تو یه قسمتی از حافظه نگه می‌دارن که چند تا هسته یا توان پردازشی همزمان بتونن بهش دسترسی پیدا کنن. همین قضیه باعث میشه عملیات نوشتن داده فقط با یه thread (رشته اجرایی) انجام بشه و بقیه هم راحت بخونن. باعث صرفه‌جویی تو زمان و منابع میشه.

۲. بارگذاری برداری حافظه (VML-Opt): این‌جا منظورش اینه که به جای خوندن داده قطعه‌قطعه، با عملیات برداری (یعنی یه عالمه داده رو با هم بخونه) استفاده کنن که خب خیلی سریع‌تر میشه. بردار تو علوم کامپیوتر یعنی مجموعه‌ای از داده‌ها رو یکجا پردازش کنی.

۳. بهینه‌سازی اسمبلی خطی (ILAOpt): این اسم خفن یعنی کدهایی نوشتن که مستقیماً خود سخت‌افزارهای شتاب‌دهنده رو صدا بزنه، مثلاً با دستوراتی که بتونه جمع‌های مختلط یا همون fused multiply-accumulate (جمع ضربیِ همزمان، که واسه سرعت تو شتاب‌دهنده‌های هوش مصنوعی مهمه) رو مستقیماً انجام بده. این باعث میشه دیگه لازم نباشه کلی وقت صرف تبدیل زبان برنامه‌نویسی به زبان سخت‌افزاری بشه.

خلاصه نتیجه این بهینه‌سازی‌ها چی شده؟ بر اساس آزمایش‌هاشون، تونستن سرعت اجرای مدل‌های GPTQ-شده رو به طرز چشمگیری بالا ببرن! مثلاً تا ۸۴.۴۲٪ throughput (یعنی تعداد جواب‌هایی که تو یه بازه زمانی می‌تونه بده) بیشتر شده و تا ۵۱.۳۵٪ تاخیر (همون latency یا مدت زمانی که باید منتظر بمونی تا جواب مدل رو بگیری) کمتر شده! واقعاً عددای قابل‌توجهیه.

در کل، این کار نشون میده که بهینه‌سازی در سطح پلتفرم (یعنی متناسب‌سازی روش اجرا با امکانات و سخت‌افزار موردنظر) چقدر مهمه تا بتونیم مدل‌های بزرگ رو روی انواع سیستم‌ها، مخصوصاً اون‌هایی که شتاب‌دهنده‌های هوش مصنوعی جدید دارن، عملی و سریع اجرا کنیم. تازه برای کسایی که می‌خوان مدل‌ها رو روی پلتفرم‌های مختلف پیاده کنن، این مقاله یه راهنمای خیلی خوبی هم محسوب میشه؛ چون کلی تجربه واقعی توش هست.

اگر دنبال اینی که مدل‌های زبانی قوی و سبک و بهینه رو روی چند جور پلتفرم اجرا کنی، قطعاً Opt4GPTQ می‌تونه الهام‌بخش راهکارای بهتر باشه!

منبع: +