شیدهوش
فصل ۲ · درس ۳ از ۱۳

۳. بلوک ترنسفورمر و رقیب‌هایش

«هفت میلیارد پارامتر» دقیقاً کجای مدل نشسته است؟ این درس ترنسفورمر را تا آجرهایش باز می‌کند، از روی ابعاد آن‌ها اندازهٔ مدل‌های Llama را توضیح می‌دهد، و می‌پرسد چه معماری‌ای ممکن است جایش را بگیرد.

زمان مطالعه: ۱۸ دقیقهمرجع در کتاب: فصل ۲، بخش Model Architecture (قسمت‌های Transformer block و Other model architectures) — صفحهٔ ۱۳۵

بردارهای 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 بردارها ۴۰۹۶ بعدی‌اند و به ۳۲ سر تقسیم می‌شوند؛ هر سر بردارهایی ۱۲۸ بعدی دارد، چون ۴۰۹۶ تقسیم بر ۳۲ می‌شود ۱۲۸.

یک بردار با ۴٬۰۹۶ بُعد (Llama 2-7B)تقسیم بر ۳۲ سرهر سر ۱۲۸ بُعد دارد و می‌تواند روی گروه متفاوتی از توکن‌ها تمرکز کندبه هم چسباندن همهٔ سرها و ماتریس خروجی
توجه چندسر در 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 3-405BQ · K · V · Oچهار ماتریس وزنلایهٔ خروجیبردار ← لاجیت برای همهٔ واژگان
ساختار یک مدل ترنسفورمر از پایین به بالا. بلوک وسط (توجه + MLP) ده‌ها بار تکرار می‌شود. پارامترهای مدل در همین ماتریس‌ها نشسته‌اند.

اندازهٔ مدل را ابعاد همین آجرها تعیین می‌کنند: تعداد بلوک‌ها، بُعد مدل، بُعد لایهٔ 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 بهینه شد.

خودآزمایی

در Llama 2-7B با بُعد ۴٬۰۹۶ و ۳۲ سر توجه، هر سر با بردارهایی به چه طولی کار می‌کند؟
کدام عامل تعداد پارامتر مدل را زیاد نمی‌کند، ولی حافظه را چرا؟
چرا توابع فعال‌سازی امروزی این‌قدر ساده‌اند؟

مرور فلش‌کارت‌های این درس

تعریف

هر بلوک ترنسفورمر از چه ساخته شده؟

برای دیدن پاسخ کلیک کنید یا Space بزنید

کارت ۱ از ۷

آکادمی هوش مصنوعی شیدهوش — بخشی از shidhoosh.com