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

Fall Back

خب بچه‌ها، بیاید با هم یه موضوع جالب درباره مدل‌های بزرگ زبانی (که همون LLMها—یعنی Large Language Models—هستن) رو بشکافیم. اگه تا حالا با این مدل‌ها سرو کله زدین، احتمالاً شنیدین که توی این مدل‌ها کلی نورون وجود داره که وقتی یه ورودی (مثلاً یه جمله) رو می‌گیرن، فقط یه بخشی از نورون‌ها فعال می‌شن و مابقیش در واقع تو حالت خاموش می‌مونن. این اتفاق رو اصطلاحاً activation sparsity می‌گن. یعنی فعال بودن فقط تعداد کمی نورون و خاموش بودن بقیه.

حالا چرا این مهمه؟ چون اگه فقط بخشی از نورون‌ها روشن باشن، می‌تونیم هزینه‌ی محاسباتی رو خیلی پایین بیاریم؛ لازم نیست بریم سراغ همه نورون‌ها، بلکه روی اونایی تمرکز می‌کنیم که واقعاً کار انجام می‌دن. اما یه مشکل این وسط هست: اینکه بفهمیم دقیقاً کدوم نورون‌ها برای هر ورودی فعال می‌شن، خودش یه کار سنگین و هزینه‌بره؛ چون مدل‌های الان ممکنه میلیون‌ها نورون داشته باشن. پس پیش‌بینی اینکه نورون به نورون چه اتفاقی می‌افته واقعاً کار آسونی نیست.

حالا تیم این مقاله یه راه‌حل خفن پیشنهاد دادن! بجای این‌که برای هر نورون جدا جدا فعال بودنش رو پیش‌بینی کنیم، اومدن الگوهای فعال شدن نورون‌ها رو خوشه‌بندی کردن. یعنی چی؟ یعنی مشاهده کردن که برای ورودی‌های مختلف، معمولاً یه سری نورون‌ها با هم دوست شدن! (تقریباً مثل آدم‌ها که گروه‌های دوستی دارن…) خب اون‌ها هم اومدن این الگوهای تکراری رو تو گروه‌بندی‌هایی که بهشون «خوشه» یا cluster می‌گن ریختن. اینجوری تعداد ترکیب‌ها و حالت‌ها خیلی کمتر می‌شه و راحت‌تر می‌شه پیش‌بینی کرد.

یه توضیح کوتاه: Clustering یعنی ما داده‌هایی داریم (اینجا الگوهای فعال شدن نورون‌ها) و سعی می‌کنیم گروه‌هایی بسازیم که داده‌های تو هر گروه به هم شبیه باشن. مثلاً اگه چند مدل آدم داریم که همه‌شون اهل کتاب خوندن هستن، اونا رو تو یه دسته می‌ذاریم.

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

طبق نتایجی که گرفتن، این روش خوشه‌بندی تونسته تا حدود 79.34% دقت در تشخیص صحیح خوشه‌ها داشته باشه! این در مقایسه با روش‌های کلاسیک مثل binary clustering (یعنی تقسیم‌بندی دودویی که ساده‌تره)، عدد خیلی خوبیه.

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

خلاصه چی شد؟ این مقاله نشون داده که به کمک خوشه‌بندی الگوهای فعال شدن نورون‌ها، می‌تونیم پیش‌بینی کنیم مدل قراره دقیقاً روی کدوم خوشه کار کنه و لازم نیست تک‌به‌تک چک کنیم. این باعث کاهش شدید هزینه محاسباتی و سریع‌تر شدن مدل‌ها می‌شه، بدون اینکه کیفیت خیلی افت کنه. تازه، اگه تعداد خوشه‌ها رو زیاد کنین، کیفیت هم بالاتر می‌ره.

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

در کل، این روش خوشه‌بندی می‌تونه یه پایه محکم برای تحقیقات بعدی تو زمینه پیش‌بینی الگوهای فعال شدن نورون باشه و کمک کنه inference (یعنی پیش‌بینی مدل روی داده‌های جدید) توی مدل‌های زبان خیلی بزرگ راحت‌تر و ارزون‌تر انجام بشه.

اگه یه جورایی می‌خواین مدلا رو سریع‌تر و کم‌خرج‌تر کنین، خوشه‌بندی الگوهای فعال شدن نورون‌ها یکی از اون راه‌حلای باحاله که آینده مدل‌های زبانی رو می‌تونه شکل بده!

منبع: +