پارامتر چیست و چند میلیارد یعنی چه
جواب کوتاه
پارامترها عددهای قابل تنظیم داخل یه مدلان؛ مثل پیچهایی که موقع آموزش اونقدر چرخونده میشن تا مدل خوب حدس بزنه. وقتی میگن یه مدل ۷۰ میلیارد پارامتر داره، یعنی فایلش ۷۰ میلیارد تا عدد داره. بیشترشون توی لایههای توجه و شبکهی کوچیک هر بلوکان. دانش مدل هم توی همین عددهاست، نه توی یه فایل متن. ولی بزرگتر همیشه بهتر نیست؛ دادهی آموزش هم به همون اندازه مهمه.
پارامتر یعنی چی
وقتی میگن یه مدل «۷۰ میلیارد پارامتر» داره، یعنی ۷۰ میلیارد تا پیچ تنظیم داره. بیاید ببینیم این پیچها چیان.
سادهترین مدل دنیا یه خطه. توی درس مدل، پارامتر و پیشبینی دیدیم یه خط فقط دو تا عدد داره: شیبش، و جایی که محور رو قطع میکنه، یعنی عرض از مبدا. این دو تا عدد پارامترهای خطن. موقع آموزش، این دو تا پیچ اونقدر چرخونده میشن تا خط از وسط نقطهها رد بشه.
یه مدل زبانی هم دقیقا همینه، فقط بهجای دو تا پیچ، میلیاردها پیچ داره. هر پارامتر یه عدده، معمولا یه چیزی مثل ۰٫۰۱۳ یا منفی ۰٫۴۸۷. موقع آموزش همهی این عددها کمکم تنظیم میشن تا مدل تکهی بعد رو بهتر حدس بزنه. بعد از آموزش، دیگه ثابت میمونن.
کجای مدلان
توی درس مسیر داخل مدل دیدیم مدل یه جدول امبدینگ داره و یه سری بلوک پشت هم. پارامترها توی همینها نشستن:
توی هر لایه. فرض کنید طول هر بردار رو «د» بگیم. بخش توجه چهار تا جدول داره که هر کدوم د ضرب در د عدده. شبکهی کوچیک دو تا جدول داره، ولی چون پهنای وسطش چهار برابر طول برداره، هر کدوم چهار تا د ضرب در د حساب میشه؛ یعنی هشت تا. پس هر لایه حدودا ۱۲ تا د ضرب در د پارامتر داره.
توی جدول امبدینگ. برای هر توکن واژهنامه یه ردیف به طول د. یه جدول کوچیکتر هم برای جای کلمهها هست.
فرقشون اینه که لایهها دهها بار تکرار میشن، ولی جدول فقط یه باره. برای همین توی مدلهای بزرگ، تقریبا همهی پارامترها توی لایههان.
بشمریم
یه پژوهش ۲۰۲۰ همین حساب رو یه فرمول ساده کرد: پارامترهای لایهها تقریبا میشه ۱۲، ضرب در تعداد لایهها، ضرب در د به توان دو. بیاید با دو تا مدل واقعی امتحانش کنیم؛ یه مدل کوچیک و یه مدل بزرگ از یه خانواده که همون سال معرفی شد. واژهنامهشون ۵۰۲۵۷ توکن داشت و پنجرهی متنشون ۲۰۴۸ توکن.
مدل کوچیک: ۱۲ لایه و د برابر ۷۶۸. لایهها میشه ۱۲ ضرب در ۱۲ ضرب در ۷۶۸ ضرب در ۷۶۸، یعنی حدود ۸۴٫۹ میلیون. جدول امبدینگ ۵۰۲۵۷ ضرب در ۷۶۸، حدود ۳۸٫۶ میلیون. جای کلمه ۲۰۴۸ ضرب در ۷۶۸، حدود ۱٫۶ میلیون. جمعش ۱۲۵٫۱ میلیون. مقاله گفته بود ۱۲۵ میلیون.
مدل بزرگ: ۹۶ لایه و د برابر ۱۲۲۸۸. لایهها حدود ۱۷۳٫۹ میلیارد، جدول فقط ۰٫۶ میلیارد. جمعش ۱۷۴٫۶ میلیارد. مقاله گفته بود ۱۷۵ میلیارد. با یه ضرب ساده، رسیدیم به همون عدد.
یه چیز جالب هم هست: توی مدل کوچیک، جدول امبدینگ حدود یه سوم کل پارامترها بود؛ توی مدل بزرگ، کمتر از نیم درصد. چون د به توان دو میرسه، و لایهها با بزرگ شدن د خیلی سریعتر از جدول بزرگ میشن. درس شمردن پارامترهای ترنسفورمر همین حساب رو جزءبهجزء باز میکنه.
چقدر جا
هر پارامتر یه عدده، و هر عدد توی کامپیوتر جا میگیره. فرض کنید هر پارامتر با ۱۶ بیت نگه داشته بشه، یعنی ۲ بایت؛ یا با ۳۲ بیت، یعنی ۴ بایت.
پس مدل ۱۷۵ میلیاردی با ۱۶ بیت، ۱۷۵ میلیارد ضرب در ۲، یعنی حدود ۳۵۰ گیگابایت، فقط برای نگه داشتن عددهاش لازم داره. با ۳۲ بیت، دو برابر. اون مدل کوچیک ۱۲۵ میلیونی، حدود ۲۵۰ مگابایت.
برای همین مدلهای بزرگ روی یه کامپیوتر معمولی اجرا نمیشن. یه راه کوچیک کردنشون اینه که هر عدد با بیتهای کمتری نگه داشته بشه؛ درس کوانتیزه کردن مدل دربارهی همینه، و درس حساب حافظه حسابش رو کامل میکنه.
دانش کجاست
خیلیها فکر میکنن داخل مدل یه فایل بزرگ از متنها هست که مدل ازش جواب پیدا میکنه. اینطوری نیست.
فایل مدل فقط همین عددهاست. هیچ جملهای، هیچ کتابی، هیچ صفحهای داخلش نیست. دانش مدل، مثلا اینکه پایتخت فرانسه پاریسه، یه جایی توی طرز تنظیم همین میلیاردها عدد پخش شده. یه پژوهش ۲۰۱۹ نشون داد مدلهای زبانی، بی هیچ آموزش اضافهای، به خیلی از سوالهای جایخالی مثل «پایتخت فرانسه شهر ...» درست جواب میدن؛ یعنی این دانش واقعا توی عددها نشسته. البته بعضی جور دانشها خیلی راحتتر از بقیه یاد گرفته میشن.
ولی یه استثنای مهم هم هست. یه پژوهش ۲۰۲۰ نشون داد از یه مدل میلیاردی میشه صدها تکه متن رو عینا از دادهی آموزشش بیرون کشید، حتی متنی که فقط یه بار توی داده بوده؛ و مدلهای بزرگتر بیشتر اینطوریان. یعنی مدل گاهی بعضی تکهها رو کلمهبهکلمه حفظ میکنه. برای همین چیزی که نباید جایی بمونه، نباید توی دادهی آموزش بره.
دفترچهی کلید و جواب
گفتیم دانش توی عددها پخش شده. ولی پژوهشگرها یه کم دقیقتر هم دیدن کجاست.
یه پژوهش ۲۰۲۰ نشون داد شبکهی کوچیک هر بلوک، همون بخشی که دو سوم عددها رو داره، مثل یه دفترچهی کلید و جواب کار میکنه. هر «کلید» با یه الگوی متنی از دادهی آموزش جور میشه، و «جواب»ش تکههایی رو محتملتر میکنه که معمولا بعد از اون الگو میان. توی لایههای پایین، الگوها سادهان، مثلا یه کلمهی خاص؛ توی لایههای بالا، معناییتر. پس وقتی مدل «پایتخت فرانسه» رو میبینه، یه جایی از این دفترچهها «پاریس» رو جلو میاره.
عوض کردن یه واقعیت
اگه دانش یه جای مشخص داره، میشه عوضش کرد؟
یه پژوهش ۲۰۲۲ دقیقا همین رو امتحان کرد. اول با یه آزمایش، نشون داد دانستههایی مثل «فلان برج توی فلان شهره» بیشتر توی شبکهی کوچیک لایههای وسط ذخیره شدن. بعد روشی ساخت که فقط چند عدد از همونجا رو عوض میکنه و یه واقعیت رو تغییر میده، بی اینکه مدل از نو آموزش ببینه؛ و گفت این تغییر هم فقط همون واقعیت رو عوض میکنه، هم توی جملهبندیهای مختلف همون واقعیت کار میکنه. این کارها شاخهای به اسم توضیحپذیری رو جلو بردن: فهمیدن اینکه داخل این میلیاردها عدد چه خبره.
بزرگتر، بهتر؟
معمولا آره، ولی نه همیشه. یه پژوهش ۲۰۲۰ دید با بزرگتر شدن مدل، داده و محاسبه، خطای مدل با یه الگوی منظم کم میشه. ولی یه پژوهش ۲۰۲۲ یه چیز مهمتر پیدا کرد:
اونها دیدن بیشتر مدلهای بزرگ اون موقع کمآموزش بودن؛ یعنی پارامترشون زیاد بود، ولی به اندازهی کافی متن ندیده بودن. پس یه مدل ۷۰ میلیاردی ساختن و با همون مقدار محاسبهای که یه مدل ۲۸۰ میلیاردی خرج کرده بود، ولی با چهار برابر داده، آموزشش دادن. نتیجه؟ مدل ۷۰ میلیاردی توی خیلی از آزمونها از مدلهای ۱۷۵، ۲۸۰ و حتی ۵۳۰ میلیاردی بهتر شد.
پیشنهادشون این بود که با دو برابر شدن اندازهی مدل، دادهی آموزش هم دو برابر بشه. یه مزیت دیگه هم داشت: مدل کوچیکتر، موقع جواب دادن محاسبهی خیلی کمتری میخواد. پس عدد پارامتر بهتنهایی نمیگه یه مدل چقدر خوبه. درس قانونهای مقیاس همین رو دقیقتر نشون میده.
چند نکته
- B یعنی میلیارد، M یعنی میلیون. مدل «7B» یعنی ۷ میلیارد پارامتر.
- پارامتر یعنی عدد. فایل مدل جز عدد چیزی نداره.
- حجم رو خودتون حساب کنید. تعداد پارامتر ضرب در ۲ بایت، برای ۱۶ بیت.
- بیشترشون توی لایههان. نه توی جدول امبدینگ.
- بزرگتر همیشه بهتر نیست. مقدار دادهی آموزش هم به همون اندازه مهمه.
با این درس ایستگاه «درون مدل» تموم شد. ایستگاه بعد میره سراغ اینکه مدل چطور تکهبهتکه متن میسازه: حلقهی ساختن متن.
جمعبندی. آنچه از این درس با خودتان میبرید.
- پارامتر: یه عدد قابل تنظیم داخل مدل.
- بیشترشون توی لایهها، یه بخش توی جدول امبدینگ.
- تعداد ≈ ۱۲ × لایهها × طول بردار به توان دو.
- هر پارامتر ۱۶ بیتی، ۲ بایت جا.
- بزرگتر لزوما بهتر نیست؛ داده هم مهمه.
خودتون رو بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو میبینید: چند تا درست، چند تا نادرست.