۳. بلوک ترنسفورمر و رقیبهایش
«هفت میلیارد پارامتر» دقیقاً کجای مدل نشسته است؟ این درس ترنسفورمر را تا آجرهایش باز میکند، از روی ابعاد آنها اندازهٔ مدلهای Llama را توضیح میدهد، و میپرسد چه معماریای ممکن است جایش را بگیرد.
بردارهای Q و K و V از کجا میآیند؟
در درس قبل Q و K و V را با تشبیه کتابخانه دیدیم. در عمل هر سه از ضرب ورودی x در سه ماتریس وزن به دست میآیند؛ این ماتریسها همان چیزیاند که مدل هنگام آموزش یاد میگیرد:
K = x · W_K
V = x · W_V
Q = x · W_Qاندازهٔ این ماتریسها را بُعد مدل تعیین میکند. در Llama 2-7B بُعد مدل ۴٬۰۹۶ است؛ یعنی هر ماتریس ۴٬۰۹۶ × ۴٬۰۹۶ است و هر بردار K و V و Q، ۴٬۰۹۶ عدد دارد.
در عمل توجه همیشه چندسر (multi-head) است: مدل چند «نگاه» موازی دارد که هر کدام میتواند روی گروه متفاوتی از توکنها تمرکز کند. مثلاً در Llama 2-7B بردارها ۴۰۹۶ بعدیاند و به ۳۲ سر تقسیم میشوند؛ هر سر بردارهایی ۱۲۸ بعدی دارد، چون ۴۰۹۶ تقسیم بر ۳۲ میشود ۱۲۸.
خروجی همهٔ سرها به هم چسبانده میشود و یک ماتریس خروجی تبدیل دیگری روی آن انجام میدهد تا به قدم بعدی مدل برود. این ماتریس هم همان بُعد مدل را دارد.
آجرهای ساختمان: بلوک ترنسفورمر
یک مدل ترنسفورمر از تعداد زیادی بلوک یکسان روی هم ساخته شده است. به تعداد این بلوکها «تعداد لایههای» مدل میگویند. هر بلوک دو بخش دارد و کل پشته هم یک لایهٔ ورودی و یک لایهٔ خروجی:
- ماژول توجه: چهار ماتریس وزن — پرسش، کلید، مقدار و یک ماتریس خروجی.
- ماژول MLPMulti-Layer Perceptronپرسپترون چندلایه: چند لایهٔ خطی که بینشان یک تابع فعالسازی غیرخطی نشسته. این توابع بهطرز عجیبی سادهاند؛ مثلاً ReLURectified Linear Unitواحد خطی یکسوشده فقط اعداد منفی را صفر میکند:
ReLU(x) = max(0, x). - لایهٔ امبدینگ (قبل از بلوکها): هر توکن و جایگاهش را به بردار تبدیل میکند. اگر مدل فقط ۲۰۴۸ جایگاه بشناسد، در سادهترین حالت طول متنش هم ۲۰۴۸ توکن است.
- لایهٔ خروجی (بعد از بلوکها): بردار نهایی را به یک لاجیت برای هر توکن واژگان تبدیل میکند. از این لاجیتها، نمونهبرداری توکن بعدی را انتخاب میکند — موضوع درس ۸.
تابع فعالسازی رایج دیگر GELUGaussian Error Linear Unitواحد خطی خطای گاوسی است که در GPT-2 و GPT-3 به کار رفت. کتاب یادآوری میکند زمانی پژوهشگران برای ساختن تابعهای فعالسازی پیچیده مسابقه داشتند، ولی معلوم شد بهتر کار نمیکنند: مدل فقط یک تابع غیرخطی لازم دارد تا خطی بودن لایهها را بشکند، و تابع سادهتر محاسبه و حافظهٔ کمتری میگیرد.
به لایهٔ خروجی لایهٔ بازامبدینگ (unembedding) هم میگویند و بعضی آن را سر مدل (model head) مینامند، چون آخرین لایه پیش از تولید خروجی است. روشهایی هم هست که طول متن را بی زیاد کردن تعداد جایگاهها بیشتر میکند.
اندازهٔ مدل را ابعاد همین آجرها تعیین میکنند: تعداد بلوکها، بُعد مدل، بُعد لایهٔ MLP و اندازهٔ واژگان. جدول زیر را ببینید:
| مدل | تعداد بلوک | بُعد مدل | بُعد MLP | واژگان |
|---|---|---|---|---|
| Llama 2-7B | ۳۲ | ۴٬۰۹۶ | ۱۱٬۰۰۸ | ۳۲ هزار |
| Llama 2-13B | ۴۰ | ۵٬۱۲۰ | ۱۳٬۸۲۴ | ۳۲ هزار |
| Llama 2-70B | ۸۰ | ۸٬۱۹۲ | ۲۲٬۰۱۶ | ۳۲ هزار |
| Llama 3-8B | ۳۲ | ۴٬۰۹۶ | ۱۴٬۳۳۶ | ۱۲۸ هزار |
| Llama 3-70B | ۸۰ | ۸٬۱۹۲ | ۲۸٬۶۷۲ | ۱۲۸ هزار |
| Llama 3-405B | ۱۲۶ | ۱۶٬۳۸۴ | ۵۳٬۲۴۸ | ۱۲۸ هزار |
آیا ترنسفورمر ابدی است؟
از ۲۰۱۲ تا امروز معماریهای زیادی آمدند و رفتند: seq2seq چهار سال (۲۰۱۴ تا ۲۰۱۸) بر صحنه بود و GANGenerative Adversarial Networkشبکهٔ مولد تخاصمیها کمی بیشتر. ترنسفورمر از ۲۰۱۷ مانده و «چسبنده» از آب درآمده. جایگزین کردنش سخت است، چون از ۲۰۱۷ تا حالا بیوقفه بهینه شده و هر رقیبی باید در مقیاسی که مردم برایشان مهم است و روی سختافزاری که مردم دارند بهتر باشد.
با این حال چند رقیب جدی پیدا شدهاند:
- RWKV: یک مدل مبتنی بر RNN که برخلاف RNNهای قدیمی، آموزشش موازی میشود. در تئوری محدودیت طول متن ندارد — هرچند در عمل «بیمحدودیت بودن» به معنی «خوب بودن در متن طولانی» نیست.
- SSMState Space Modelمدل فضای حالتها (مدلهای فضای حالت): خانوادهای که در حافظهٔ بلندمدت امیدوارکننده بودهاند. پلههای تکاملشان: S4 (کارآمدتر)، H3 (سازوکاری شبیه توجه ولی ارزانتر)، و Mamba که محاسبهاش با طول متن خطی رشد میکند، نه مثل ترنسفورمر درجهٔ دو. Mamba-3B از ترنسفورمر هماندازه بهتر بود و به ترنسفورمر دو برابر بزرگتر رسید.
- Jamba: ترکیبی از لایههای ترنسفورمر و Mamba. نسخهای با ۵۲ میلیارد پارامتر (که فقط ۱۲ میلیاردش همزمان فعال است) در یک GPU هشتاد گیگابایتی جا میشود و تا ۲۵۶ هزار توکن متن را میخواند.
کتاب دو نکتهٔ جانبی هم دارد. Ilya Sutskever، از بنیانگذاران OpenAI، توضیح جالبی برای سختی ساختن معماری تازه دارد: شبکهٔ عصبی میتواند برنامههای زیادی را شبیهسازی کند و گرادیان کاهشی در واقع جستوجو میان همین برنامههاست؛ پس معماری تازه فقط وقتی برنده میشود که برنامهای را شبیهسازی کند که معماریهای قبلی نمیتوانند. و ترنسفورمر را گوگل در اصل برای اجرای سریع روی TPUTensor Processing Unitواحد پردازش تانسور طراحی کرده بود و بعداً برای GPU بهینه شد.
خودآزمایی
مرور فلشکارتهای این درس
هر بلوک ترنسفورمر از چه ساخته شده؟
برای دیدن پاسخ کلیک کنید یا Space بزنید
کارت ۱ از ۷