ترنسفورمر و اندازهی مدل، به زبان ساده
لازم نیست بلد باشید مدل بسازید تا از آن استفاده کنید، ولی باید بدانید درونش چه شکلی است. این درس ترنسفورمر را بدون فرمول ترسناک باز میکند و نشان میدهد عددی که آخر اسم مدلها میبینید — 7B، 70B — دقیقاً دربارهٔ هزینه و توانایی چه میگوید.
پیش از آموزش هر مدل، سازندهاش دو تصمیم بزرگ میگیرد: معماری (مدل چه شکلی باشد) و اندازه (چند پارامتر داشته باشد). این دو تصمیم فقط توانایی مدل را تعیین نمیکنند؛ تعیین میکنند شما با آن چه دردسری دارید. مدل ۷ میلیارد پارامتری را روی یک کارت گرافیک معمولی راه میاندازید؛ مدل ۱۷۵ میلیاردی را نه.
ترنسفورمر برای حل چه مشکلی آمد؟
پیش از ترنسفورمر، معماری غالب برای کار با متن seq2seq بود (از ۲۰۱۴). گوگل در ۲۰۱۶ آن را به مترجمش اضافه کرد و گفت «بزرگترین پیشرفت تاکنون» در کیفیت ترجمه را گرفته است. seq2seq دو بخش داشت: یک رمزگذار که ورودی را میخواند و یک رمزگشا که خروجی را تولید میکرد — هر دو از نوع RNN، یعنی کلمهبهکلمه و به ترتیب.
دو ایراد اساسی داشت:
- رمزگشا فقط خلاصهٔ ورودی را میدید. رمزگذار کل ورودی را در یک «حالت نهایی» فشرده میکرد و رمزگشا فقط همان را داشت. مثل این است که بخواهید دربارهٔ یک کتاب به پرسشها جواب بدهید ولی فقط خلاصهٔ کتاب در دستتان باشد.
- همهچیز پشتسرهم بود. اگر ورودی ۲۰۰ توکن داشت، باید صبر میکردید تا توکنها یکییکی پردازش شوند. برای متن بلند، کُند بود.
ترنسفورمر (Vaswani و همکاران، ۲۰۱۷) هر دو را با یک ایده حل کرد: سازوکار توجه (attention). بهجای خلاصهٔ کتاب، مدل موقع تولید هر توکن میتواند به هر صفحهای از کتاب مراجعه کند و خودش تصمیم بگیرد کدام صفحهها مهمترند. و چون دیگر RNN در کار نیست، توکنهای ورودی همزمان پردازش میشوند.
دو مرحلهٔ هر پاسخ: پیشپر کردن و رمزگشایی
ترنسفورمر گلوگاه ورودی را برداشت، ولی گلوگاه خروجی هنوز هست: مدل هنوز یک توکن در هر گام تولید میکند. برای همین هر پاسخ مدل دو مرحله دارد:
| مرحله | چه اتفاقی میافتد | موازی؟ | کاربر چه حس میکند |
|---|---|---|---|
| پیشپر کردن (prefill) | همهٔ توکنهای ورودی با هم پردازش میشوند و حالت لازم برای اولین توکن خروجی ساخته میشود | بله | مکث پیش از شروع پاسخ — همان TTFT |
| رمزگشایی (decode) | توکنهای خروجی یکییکی تولید میشوند | نه | سرعت «تایپ شدن» پاسخ |
این تفکیک را به خاطر بسپارید؛ در فصل ۹ تقریباً همهٔ ترفندهای سریعتر و ارزانتر کردن مدل از همینجا شروع میشوند. بخش موازی را میشود با سختافزار بیشتر تندتر کرد؛ بخش پشتسرهم را نه به همان راحتی.
سازوکار توجه، با تشبیه کتاب
در دل توجه سه بردار هست. همان تشبیه کتاب را ادامه بدهیم:
| بردار | در مدل چیست | در تشبیه کتاب |
|---|---|---|
| پرسش (Query — Q) | حالت فعلی مدل در گامی که دارد توکن بعدی را میسازد | کسی که دنبال اطلاعات است تا جملهٔ بعدی را بنویسد |
| کلید (Key — K) | یک بردار برای هر توکن قبلی (ورودی و خروجیهای تا اینجا) | شمارهٔ صفحه |
| مقدار (Value — V) | محتوایی که مدل از هر توکن قبلی یاد گرفته | متن خود صفحه |
مدل برای هر توکن قبلی حساب میکند که «پرسش» فعلی چقدر با «کلید» آن جور است. هرچه امتیاز بالاتر، سهم بیشتری از «مقدار» آن صفحه در ساختن توکن بعدی به کار میرود. همین. بقیهاش جزئیات محاسبه است.
دو جزئیات دیگر هم ارزش دانستن دارند. اول، توجه تقریباً همیشه چندسَر است: بردارها به چند تکهٔ کوچکتر شکسته میشوند تا مدل بتواند همزمان به چند گروه از توکنها توجه کند. در Llama 2-7B، بعد مدل ۴۰۹۶ است و ۳۲ سَر توجه دارد؛ پس هر سَر با بردارهایی به طول ۱۲۸ کار میکند (۴۰۹۶ ÷ ۳۲). دوم، خروجی همهٔ سَرها کنار هم گذاشته و یک بار دیگر تبدیل میشود تا به مرحلهٔ بعد برود.
ترنسفورمر از چه ساخته شده
هر مدل ترنسفورمری از سه بخش ساخته شده:
- لایهٔ تعبیه در ورودی: هر توکن و جایگاهش در متن را به بردار تبدیل میکند. در سادهترین حالت، تعداد جایگاههایی که مدل میشناسد، حداکثر طول زمینهاش را تعیین میکند — مدلی که ۲۰۴۸ جایگاه دارد، زمینهاش ۲۰۴۸ توکن است (البته ترفندهایی برای فراتر رفتن از آن هست).
- بلوکهای ترنسفورمر، چندین بار پشتسرهم. هر بلوک دو بخش دارد: توجه (چهار ماتریس Q، K، V و خروجی) و MLP (لایههای خطی که با یک تابع غیرخطی ساده از هم جدا شدهاند — مثلاً ReLU که فقط عددهای منفی را صفر میکند).
- لایهٔ خروجی: بردار نهایی را به احتمال هر توکن ممکن تبدیل میکند. از این احتمالها، توکن بعدی انتخاب میشود — موضوع درس نمونهبرداری.
اندازهٔ مدل از ابعاد همین قطعهها درمیآید: بُعد مدل، تعداد بلوکها، بُعد لایهٔ پیشخور و اندازهٔ واژگان. خانوادهٔ Llama نمونهٔ خوبی است:
| مدل | تعداد بلوک | بُعد مدل | اندازهٔ واژگان |
|---|---|---|---|
| Llama 2-7B | ۳۲ | ۴٬۰۹۶ | ۳۲ هزار |
| Llama 2-70B | ۸۰ | ۸٬۱۹۲ | ۳۲ هزار |
| Llama 3-70B | ۸۰ | ۸٬۱۹۲ | ۱۲۸ هزار |
| Llama 3-405B | ۱۲۶ | ۱۶٬۳۸۴ | ۱۲۸ هزار |
آیا ترنسفورمر همیشه میماند؟
معماریها معمولاً عمر کوتاهی دارند: seq2seq حدود چهار سال در صدر ماند. ترنسفورمر از ۲۰۱۷ مانده و بهشدت بهینه شده؛ جایگزینش باید در همان مقیاس و روی همان سختافزار بهتر باشد، که کار آسانی نیست. ولی رقبای جدی پیدا شدهاند: RWKV (یک RNN که آموزشش موازی میشود) و خانوادهٔ SSM. مثلاً Mamba با ۳ میلیارد پارامتر از ترنسفورمرهای هماندازه بهتر بود و به ترنسفورمرهای دو برابر بزرگتر رسید، و هزینهاش با طول متن خطی رشد میکند، نه درجهٔ دو. Jamba هم لایههای ترنسفورمر و Mamba را ترکیب کرد.
اندازهٔ مدل: عدد آخر اسمها
Llama-13B یعنی نسخهای از Llama با ۱۳ میلیارد پارامتر. در یک خانوادهٔ مدل، بیشتر بودن پارامتر معمولاً یعنی ظرفیت یادگیری بیشتر و مدل بهتر. ولی بین نسلها این قاعده نمیماند: Llama 3-8B (۲۰۲۴) در MMLU حتی از Llama 2-70B (۲۰۲۳) بهتر است، چون جامعه یاد گرفته مدلها را بهتر آموزش دهد.
وقتی عدد پارامتر گول میزند: مدلهای پراکنده
در مدل پراکنده (sparse) بخش بزرگی از پارامترها صفر است یا همزمان به کار نمیآید. رایجترین نوعش ترکیب متخصصها (MoE) است: مدل به چند گروه پارامتر — «متخصص» — تقسیم میشود و برای هر توکن فقط چند تا از آنها فعال میشوند.
نتیجه: Mixtral 8x7B با ۴۶٫۷ میلیارد پارامتر، هزینه و سرعتی مثل یک مدل ۱۲٫۹ میلیاردی دارد. ولی حافظهای که برای بار کردنش لازم است، از روی کل پارامترهاست. این همان تفاوتی است که موقع انتخاب مدل برای سرور خودتان باید حواستان به آن باشد.
اندازه بدون داده هیچ است
مدلی با ۱۳ میلیارد پارامتر را تصور کنید که فقط روی یک جمله آموزش دیده: «من آناناس دوست دارم.» از یک مدل خیلی کوچکتر که دادهٔ فراوان دیده، بدتر است. پس اندازهٔ مدل را همیشه کنار اندازهٔ داده بسنجید — و اندازهٔ داده را با توکن میشمارند، نه با تعداد نمونه، چون یک کتاب خیلی بیشتر از یک جمله میارزد.
| مدل | توکنهای دادهٔ آموزشی |
|---|---|
| Llama 1 | ۱٫۴ تریلیون |
| Llama 2 | ۲ تریلیون |
| Llama 3 | ۱۵ تریلیون |
یک ظرافت: «توکنهای مجموعهٔ داده» با «توکنهای آموزشی» فرق دارد. اگر مجموعهای یک تریلیون توکن داشته باشد و مدل دو بار از رویش رد شود (دو دوره یا epoch)، مدل روی دو تریلیون توکن آموزش دیده است.
سه عدد که مقیاس یک مدل را نشان میدهند
| عدد | نشانهٔ چیست |
|---|---|
| تعداد پارامتر | ظرفیت یادگیری مدل |
| تعداد توکنهای آموزشی | اینکه مدل چقدر یاد گرفته |
| تعداد FLOPها | هزینهٔ آموزش |
سومی نیاز به توضیح دارد. FLOP یعنی یک عملیات ریاضی روی عدد اعشاری. FLOPs (با s کوچک) یعنی یک کار چند عملیات لازم دارد؛ FLOP/s یعنی یک دستگاه در هر ثانیه چند عملیات انجام میدهد. این دو مدام با هم قاطی میشوند، مخصوصاً وقتی FLOP/s را FLOPS بنویسند.
قانون مقیاس: با بودجهٔ ثابت، چه اندازهای؟
هیچ تیمی با «یک مدل بزرگ بسازیم ببینیم چقدر میشود» شروع نمیکند. با بودجه شروع میکنند و میپرسند: با این مقدار محاسبه، چه اندازه مدل و چه مقدار داده بهترین نتیجه را میدهد؟
جوابش قانون مقیاس Chinchilla است. پژوهشگران DeepMind (۲۰۲۲) ۴۰۰ مدل — از ۷۰ میلیون تا بیش از ۱۶ میلیارد پارامتر — را روی ۵ تا ۵۰۰ میلیارد توکن آموزش دادند و به یک قاعدهٔ ساده رسیدند:
ولی برای محصول، کیفیت همهچیز نیست. سازندگان Llama با بودجهشان میتوانستند مدل بزرگتر و قویتری بسازند، ولی عمداً مدل کوچکتر ساختند — روی دادهٔ بیشتر از آنچه Chinchilla میگوید. مدل کوچکتر برای استفاده ارزانتر و راحتتر است، و همین به محبوبیتش کمک کرد. وقتی مدل میلیونها بار استفاده میشود، هزینهٔ استنتاج از هزینهٔ یکبارهٔ آموزش مهمتر میشود.
یک پدیدهٔ غافلگیرکننده هم هست: مقیاس معکوس. در مسابقهای که در ۲۰۲۳ برای پیدا کردن کارهایی برگزار شد که مدل بزرگتر در آنها بدتر است، معلوم شد مدلهای بزرگتر گاهی — فقط گاهی — در کارهای مبتنی بر حفظ کردن یا کارهایی با پیشفرضهای قوی بدتر عمل میکنند. ولی هیچکدام در دنیای واقعی شکست جدی نشان ندادند.
پارامتر در برابر ابرپارامتر
پارامتر را مدل در طول آموزش یاد میگیرد. ابرپارامتر را انسان تعیین میکند: تعداد لایهها، بُعد مدل، اندازهٔ واژگان، نرخ یادگیری، اندازهٔ دسته. برای مدل کوچک میشود ده بار با ابرپارامترهای مختلف آموزش داد و بهترین را برداشت. برای مدل بزرگ، معمولاً فقط یک شانس دارید. برای همین پژوهشگران ابرپارامترها را روی مدلهای کوچک میآزمایند و به مدل بزرگ تعمیم میدهند — مایکروسافت و OpenAI نشان دادند میشود از مدل ۴۰ میلیونی به ۶٫۷ میلیاردی رسید.
دو دیوار پیش روی بزرگتر شدن
تا امروز هر ده برابر شدن اندازه، مدل بهتری داده: GPT-2 ده برابر GPT-1 پارامتر داشت و GPT-3 صد برابر GPT-2. ولی دو گلوگاه دیده میشود:
- داده تمام میشود. سرعت رشد دادههای آموزشی از سرعت تولید متن تازه در اینترنت بیشتر است. هرچه تا امروز در اینترنت نوشتهاید، احتمالاً در دادهٔ آموزشی مدلی هست — با رضایت شما یا بیآن. و اینترنت دارد از متن تولیدشده با هوش مصنوعی پر میشود؛ مدلی که روی آن آموزش ببیند، از خروجی مدلهای دیگر یاد میگیرد. در همین حال سایتها درشان را میبندند: بین ۲۰۲۳ و ۲۰۲۴، ۴۵٪ از C4 برای استفاده محدود شد. دادهٔ اختصاصی — کتاب، قرارداد، پروندهٔ پزشکی — به مزیت رقابتی تبدیل میشود.
- برق. مراکز داده امروز ۱ تا ۲ درصد برق دنیا را مصرف میکنند و برآورد میشود تا ۲۰۳۰ به ۴ تا ۲۰ درصد برسد. تا راهی برای تولید انرژی بیشتر پیدا نشود، مراکز داده حداکثر حدود ۵۰ برابر میتوانند بزرگ شوند — کمتر از دو مرتبهٔ بزرگی.
خودآزمایی
مهمترین نوآوری ترنسفورمر نسبت به seq2seq چه بود؟
در تشبیه کتاب، بردار «کلید» (Key) چه نقشی دارد؟
Mixtral 8x7B حدود ۴۶٫۷ میلیارد پارامتر دارد ولی برای هر توکن فقط ۱۲٫۹ میلیارد فعال است. کدام گزاره درست است؟
طبق قانون Chinchilla، برای آموزش بهینهٔ یک مدل ۱۰ میلیارد پارامتری حدوداً چند توکن آموزشی لازم است؟
مرور فلشکارتهای این درس
۱۰ کارت · ۰ مروروارد شوید تا پیشرفتتان ذخیره شود و از همینجا ادامه دهید.