آموزشترنسفورمرها

درس ۳۱ از ۶۲، هوش مصنوعی، حدود ۹ دقیقه خواندن

عمق و پهنا: چند لایه، چند سر

جواب کوتاه

اندازه‌ی یه ترنسفورمر بیشتر با سه عدد مشخص می‌شه: چند بلوک روی هم می‌چینیم (عمق)، بردار هر کلمه چند عدد داره (پهنا)، و هر توجه چند سر داره. مدل پایه‌ی مقاله‌ی ۲۰۱۷ شش بلوک، بردار ۵۱۲ عددی و ۸ سر داشت، با حدود ۶۵ میلیون پارامتر؛ مدل بزرگش بردار ۱۰۲۴ و ۱۶ سر. اندازه‌ی هر سر معمولا بردار تقسیم بر تعداد سرهاست. بعدها مدل‌ها خیلی بزرگ‌تر شدن: یه مدل زبانی ۲۰۲۰، ۹۶ بلوک، بردار ۱۲۲۸۸ و ۹۶ سر داشت، با ۱۷۵ میلیارد پارامتر. یه پژوهش دیگه‌ی همون سال نشون داد که توی یه بازه‌ی بزرگ، کیفیت بیشتر به تعداد کل پارامترها بستگی داره تا به اینکه مدل بلند باشه یا پهن.

یعنی چی

یه ساختمون رو دو جور می‌شه بزرگ کرد: طبقه‌ی بیشتر، یا طبقه‌های پهن‌تر.

توی درس بلوک ترنسفورمر دیدیم مدل از بلوک‌های یکسان روی هم ساخته شده. حالا سوال اینه: چند تا؟ و هر کدوم چقدر بزرگ؟ وقتی می‌شنوید یه مدل «بزرگ‌تره»، معمولا یعنی یکی از همین چند عدد بزرگ‌تر شده. این درس این عددها رو معرفی می‌کنه و نشون می‌ده از ۲۰۱۷ تا چند سال بعد چطور عوض شدن.

سه پیچ

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

بلند یا پهن

هر طبقه یه بلوکه و پهنای طبقه، اندازه‌ی بردار. یه مدل می‌تونه بلند و باریک باشه، با بلوک‌های زیاد و بردار کوتاه؛ یا کوتاه و پهن، با بلوک‌های کم و بردار بلند. کدوم بهتره؟ یه پژوهش ۲۰۲۰ که رشد مدل‌های زبانی رو بررسی کرد، دید توی یه بازه‌ی بزرگ، شکل خیلی مهم نیست؛ چیزی که بیشتر اثر داره تعداد کل پارامترهاست. البته به شرطی که مدل خیلی عجیب نباشه، مثلا فقط یه طبقه‌ی خیلی پهن. درس قانون‌های مقیاس این رو کامل گفته.

مدل‌های ۲۰۱۷

مقاله‌ی ۲۰۱۷ دو اندازه ساخت. مدل پایه شش بلوک رمزگذار و شش بلوک رمزگشا داشت، بردار هر کلمه ۵۱۲ عدد، پیش‌خور ۲۰۴۸ و ۸ سر؛ روی هم حدود ۶۵ میلیون پارامتر. مدل بزرگ همون شش بلوک رو داشت، ولی پهن‌تر: بردار ۱۰۲۴، پیش‌خور ۴۰۹۶ و ۱۶ سر، با حدود ۲۱۳ میلیون پارامتر. مقاله اندازه‌های مختلف رو امتحان کرد و دید مدل‌های بزرگ‌تر بهتر کار می‌کنن.

سرها

تعداد سرها معمولا آزاد نیست؛ به اندازه‌ی بردار گره خورده. چون بردار بین سرها تقسیم می‌شه، اندازه‌ی هر سر می‌شه بردار تقسیم بر تعداد سرها. توی مدل پایه‌ی ۲۰۱۷، ۵۱۲ تقسیم بر ۸ می‌شه ۶۴. توی بزرگ‌ترین مدل اون پژوهش ۲۰۲۰، ۱۲۲۸۸ تقسیم بر ۹۶ می‌شه ۱۲۸. پس وقتی بردار بلندتر می‌شه، معمولا سرها هم بیشتر می‌شن، تا هر سر یه اندازه‌ی معقول داشته باشه.

هر طبقه چی کار می‌کنه

وقتی بلوک‌ها رو روی هم می‌چینیم، همه‌شون یه کار رو تکرار نمی‌کنن؛ انگار هر طبقه یه بخش از فهمیدن رو برمی‌داره.

یه پژوهش ۲۰۱۹ یه مدل رمزگذار معروف ۲۰۱۸ رو باز کرد و دید هر کار زبانی بیشتر توی کدوم لایه‌ها پیدا می‌شه. ترتیبش دقیقا همونی بود که زبان‌شناس‌ها برای فهمیدن جمله می‌چینن: اول این‌که هر کلمه اسمه یا فعل، بعد ساختار جمله که کی به کی وصله، بعد اسم‌های خاص مثل آدم و جا، بعد نقش‌ها که کی کار رو کرد و روی چی، و آخر از همه این‌که «اون» توی جمله به کی برمی‌گرده. یعنی لایه‌های پایین چیزهای ساده‌تر و نزدیک‌تر به خود کلمه رو درمیارن و لایه‌های بالا چیزهایی که فهمیدنشون کل جمله رو لازم داره. کسی این ترتیب رو به مدل نگفته بود؛ خودش توی آموزش این‌طوری شد.

بزرگ‌تر و بزرگ‌تر

یه پژوهش ۲۰۲۰ که یه مدل زبانی خیلی بزرگ ساخت، چند اندازه رو کنار هم گزارش کرد. کوچیک‌ترینش ۱۲ بلوک و بردار ۷۶۸ عددی داشت، با ۱۲۵ میلیون پارامتر؛ تقریبا دو برابر مدل پایه‌ی ۲۰۱۷. بزرگ‌ترینش ۹۶ بلوک و بردار ۱۲۲۸۸ عددی داشت، با ۱۷۵ میلیارد پارامتر. یعنی توی سه سال، هم عمق شونزده برابر شد هم پهنا بیست‌وچهار برابر. ولی بلوک‌ها هنوز همون شکلی بودن که توی این ایستگاه دیدیم.

یه بلوک، چند بار

معمولا هر بلوک وزن‌های خودش رو داره. ولی می‌شه یه بلوک ساخت و همون رو چند بار پشت سر هم اجرا کرد.

یه پژوهش ۲۰۱۸ همین کار رو کرد: یه بلوک، چند بار پشت سر هم. یه پژوهش ۲۰۱۹ هم توی یه مدل رمزگذار، همه‌ی وزن‌ها رو بین لایه‌ها مشترک کرد. این‌طوری عمق مدل همون می‌مونه، ولی تعداد وزن‌ها با عمق زیاد نمی‌شه. اون پژوهش با همین کار و یه ترفند دیگه، مدلی ساخت که ۱۸ برابر کمتر از مدل بزرگ ۲۰۱۸ پارامتر داشت، ۱۸ میلیون در برابر ۳۳۴ میلیون، و حدود ۱٫۷ برابر سریع‌تر آموزش دید، بی این‌که نتیجه خیلی بدتر بشه. ولی حواستون باشه: وزن کمتر یعنی حافظه‌ی کمتر، نه حساب کمتر؛ چون بلوک هنوز همون‌قدر بار اجرا می‌شه.

چند نکته

  • عمق: تعداد بلوک. پهنا: اندازه‌ی بردار.
  • پیش‌خور معمولا چهار برابر بردار.
  • اندازه‌ی هر سر: بردار تقسیم بر سرها.
  • بلوک‌ها همون شکل؛ فقط اندازه بزرگ شده.

اون «۶۵ میلیون» و «۱۷۵ میلیارد» از کجا میان؟ با همین سه عدد می‌شه حسابشون کرد. درس بعد: پارامترهای ترنسفورمر رو بشماریم.

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

  • سه پیچ: بلوک، بردار، سر.
  • ۲۰۱۷: ۶ بلوک، ۵۱۲، ۸ سر.
  • هر سر = بردار ÷ تعداد سر.
  • ۲۰۲۰: ۹۶ بلوک، ۱۲۲۸۸، ۹۶ سر.
  • اندازه‌ی کل مهم‌تر از شکل.

خودتون رو بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو می‌بینید: چند تا درست، چند تا نادرست.

خودتون رو بسنجید

۱۵ پرسش

  • هر بار پرسش‌ها و ترتیب گزینه‌ها عوض می‌شه.
  • تا آخر نمی‌گیم کدوم جواب درست بوده؛ می‌تونید برگردید و جوابتون رو عوض کنید.
  • آخرش کارنامه می‌گیرید: چند تا درست، چند تا نادرست.
  • اگه وسطش بستید، دوباره که باز کنید از همون‌جا ادامه می‌دید.

فصل‌های این درس

درس بعد