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

۴. چقدر بزرگ؟ پارامتر، داده و محاسبه

وقتی مدل تازه‌ای منتشر می‌شود، اولین سؤال همه این است: «چند میلیارد پارامتر؟» اینجا یاد می‌گیرید از همین یک عدد چه چیزهایی می‌شود فهمید، چه چیزهایی نمی‌شود، و چرا بزرگ‌تر همیشه بهتر نیست.

زمان مطالعه: ۱۳ دقیقهمرجع در کتاب: فصل ۲، بخش Model Size (تا پیش از Scaling law) — صفحهٔ ۱۵۱

پارامتر: ظرفیت یادگیری

تعداد پارامتر معمولاً ته اسم مدل می‌آید: Llama-13B یعنی نسخه‌ای از خانوادهٔ Llama با ۱۳ میلیارد پارامتر. در یک خانوادهٔ یکسان، نسخهٔ بزرگ‌تر تقریباً همیشه بهتر است، چون ظرفیت یادگیری بیشتری دارد.

تعداد پارامتر کمک می‌کند منابع لازم را تخمین بزنید. اگر هر پارامتر با ۲ بایت (FP1616-bit Floating Pointاعشاری ۱۶ بیتی) ذخیره شود، یک مدل ۷ میلیاردی دست‌کم ۱۴ گیگابایت حافظهٔ GPU فقط برای نگه داشتن وزن‌ها لازم دارد. حافظهٔ واقعی بیشتر است؛ حساب دقیقش در فصل ۷.

مدل تُنُک و «ترکیب خبرگان»

تعداد پارامتر گاهی گمراه‌کننده است. در یک مدل تُنُک (sparse) درصد زیادی از پارامترها صفرند؛ مدل ۷ میلیاردی‌ای که ۹۰٪ آن صفر باشد فقط ۷۰۰ میلیون پارامتر غیرصفر دارد و ارزان‌تر اجرا می‌شود.

محبوب‌ترین نوع مدل تنک، ترکیب خبرگان یا MoEMixture of Expertsترکیب خبرگان است. مدل به چند گروه پارامتر تقسیم می‌شود که هر کدام یک «خبره» است، و برای هر توکن فقط چند خبره فعال می‌شوند.

داده را با توکن بشمارید، نه با نمونه

مدل بزرگ با دادهٔ کم بی‌فایده است. یک مدل ۱۳ میلیاردی را تصور کنید که فقط روی یک جمله آموزش دیده: «من آناناس دوست دارم». هر مدل کوچکی که داده بیشتری دیده باشد از آن بهتر است. پس اندازهٔ مدل را همیشه کنار اندازهٔ داده‌اش بسنجید.

برای مدل‌های تصویر-متن هم داده را با نمونه می‌شمارند: مثلاً Flamingo از گوگل روی چهار مجموعه‌داده آموزش دید که یکی ۱٫۸ میلیارد جفت (تصویر، متن) داشت و دیگری ۳۱۲ میلیون جفت.

برای مدل زبانی، یک «نمونهٔ آموزشی» می‌تواند یک جمله باشد یا یک کتاب کامل — که ارزششان اصلاً یکی نیست. برای همین داده را با تعداد توکن می‌شمارند. Meta برای هر نسل Llama دادهٔ بزرگ‌تری به کار برد: ۱٫۴ تریلیون توکن برای Llama 1، ۲ تریلیون برای Llama 2 و ۱۵ تریلیون برای Llama 3. مجموعه‌دادهٔ باز RedPajama-v2 سی تریلیون توکن دارد — معادل ۴۵۰ میلیون کتاب یا ۵۴۰۰ برابر کل ویکی‌پدیا.

چرا تعداد کلمه یا حرف نه؟ چون توکن همان واحدی است که مدل با آن کار می‌کند؛ پس تعداد توکن نشان می‌دهد مدل از این داده چقدر می‌تواند یاد بگیرد. البته این معیار هم بی‌نقص نیست: یک داده با توکنایزرهای مختلف تعداد توکن متفاوتی دارد. و یادتان باشد RedPajama-v2 محتوای بی‌گزینشی دارد؛ حجم دادهٔ باکیفیتش خیلی کمتر است. کمیت، کیفیت و تنوع، سه هدف طلایی دادهٔ آموزشی‌اند (فصل ۸).

FLOP: واحد هزینه

آموزش مدل محاسبه می‌خواهد. شمردن تعداد GPU معیار خوبی نیست چون GPUها با هم خیلی فرق دارند. واحد استاندارد FLOPFloating Point Operationعملیات ممیز شناور است: تعداد عملیات اعشاری لازم برای یک کار. مثلاً آموزش GPT-3 با ۱۷۵ میلیارد پارامتر حدود 3.14 × 10²³ FLOP خرج برداشت.

برای کم کردن این ابهام، بعضی شرکت‌ها مثل OpenAI از واحد FLOP/s-day استفاده می‌کنند: یک FLOP/s-day یعنی ۶۰ × ۶۰ × ۲۴ = ۸۶٬۴۰۰ FLOP. در این دوره FLOPs یعنی شمار عملیات و FLOP/s یعنی عملیات در ثانیه. نمونه: بزرگ‌ترین PaLM-2 گوگل با حدود 10²² FLOP آموزش دید.

یک GPU از نوع H100 حداکثر حدود ۶۰ ترافلاپ بر ثانیه کار می‌کند، یعنی روزی حدود 5.2 × 10¹⁸ FLOP. با ۲۵۶ عدد H100 که با تمام ظرفیت و بدون هیچ اشتباهی کار کنند، آموزش GPT-3 حدود ۲۳۶ روز طول می‌کشد. ولی هیچ دستگاهی همیشه با تمام ظرفیت کار نمی‌کند. اگر به ۵۰٪ ظرفیت برسید کارتان خوب است؛ بالای ۷۰٪ عالی. با ۷۰٪ بهره‌وری و ساعتی ۲ دلار برای هر H100، هزینهٔ آموزش GPT-3 از ۴ میلیون دلار بیشتر می‌شود.

خودآزمایی

یک مدل ۱۳ میلیاردی را با دقت FP16 (دو بایت برای هر پارامتر) اجرا می‌کنید. دست‌کم چقدر حافظه برای وزن‌ها لازم است؟
مدل Mixtral 8x7B در کل ۴۶٫۷ میلیارد پارامتر دارد، ولی برای هر توکن فقط ۱۲٫۹ میلیارد فعال است. هزینه و سرعت اجرایش به کدام نزدیک‌تر است؟
«FLOP/s» چه چیزی را اندازه می‌گیرد؟

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

جای خالی

مدل ۷ میلیاردی با دقت FP16 دست‌کم ؟ گیگابایت حافظه برای وزن‌ها لازم دارد.

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

کارت ۱ از ۷

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