۲.۲ آموزش در مقیاس بزرگ
بهعنوان نخستین گام در توسعهٔ LLMها، باید این مدلها را با حجم زیادی از داده آموزش داد. خود وظیفهٔ آموزش استاندارد است: هدف بیشینهکردن درستنمایی است که با گرادیانکاهشی قابل دستیابی است. بااینحال، وقتی هم اندازهٔ مدل و هم مقدار داده را افزایش میدهیم، مسئله بسیار چالشبرانگیز میشود؛ برای مثال مدلهای بزرگ معمولاً آموزش را ناپایدارتر میکنند. در این بخش چند موضوع آموزش بزرگمقیاس LLMها، از جمله آمادهسازی داده، اصلاح مدل و آموزش توزیعشده بررسی میشوند. همچنین قوانین مقیاسپذیری (scaling laws) LLMها بررسی خواهند شد که به درک کارایی و اثربخشی آموزش کمک میکنند.
۲.۲.۱ آمادهسازی داده
اهمیت داده در NLP را نمیتوان بیش از حد بیان کرد. با توسعهٔ شبکههای عصبی بزرگتر، تقاضا برای داده نیز پیوسته افزایش مییابد. برای مثال، پیشآموزش LLMها ممکن است به تریلیونها توکن نیاز داشته باشد (جدول ۲.۳)، یعنی چند مرتبهٔ بزرگی بیشتر از دادهای که برای آموزش مدلهای متعارف NLP بهکار میرفت. در حالت کلی ممکن است بخواهیم تا حد ممکن دادهٔ آموزشی گردآوری کنیم، اما مجموعهدادهٔ بزرگتر الزاماً نتیجهٔ آموزشی بهتر نمیدهد و توسعهٔ LLMها مسائل تازهای را در ساخت یا گردآوری این مجموعهها مطرح میکند.
جدول ۲.۳ — مقدار دادهٔ آموزشی چند LLM بر حسب تعداد توکن.| LLM | تعداد توکن | داده |
| GPT3-175B [Brown et al., 2020] | 0.5T | صفحات وب، کتابها، Wikipedia |
| Falcon-180B [Almazrouei et al., 2023] | 3.5T | صفحات وب، کتابها، گفتوگوها، کد، مقالات فنی |
| LLaMA2-65B [Touvron et al., 2023a] | 1.0T تا 1.4T | صفحات وب، کد، Wikipedia، کتابها، مقالات، پرسشوپاسخها |
| PaLM-450B [Chowdhery et al., 2022] | 0.78T | صفحات وب، کتابها، گفتوگوها، کد، Wikipedia، اخبار |
| Gemma-7B [Gemma Team, 2024] | 6T | صفحات وب، ریاضیات، کد |
مسئلهٔ نخست: کیفیت داده. دادهٔ باکیفیت مدتهاست برای آموزش سامانههای دادهمحور NLP حیاتی تلقی میشود. استفادهٔ مستقیم از متن خام منابع مختلف معمولاً مطلوب نیست. بخش مهمی از دادهٔ آموزش LLMهای جدید از خزش وب (web scraping) میآید که ممکن است شامل خطا و محتوای نامناسب، مانند اطلاعات سمی و واقعیتهای ساختگی، باشد. افزون بر این، با گسترش هوش مصنوعی، اینترنت از محتوای تولیدشده توسط ماشین نیز پر شده و این موضوع چالشهای بیشتری برای پردازش و استفاده از دادهٔ خزیدهشده ایجاد کرده است. پژوهشها نشان دادهاند آموزش LLM روی دادهٔ بدون پالایش زیانآور است [Raffel et al., 2020]. بهبود کیفیت داده معمولاً با افزودن گامهای پالایش و پاکسازی به جریان پردازش انجام میشود. برای مثال Penedo et al. [2023] نشان دادند با بهکارگیری چند روش پردازش داده میتوان ۹۰٪ دادهٔ خزیدهشدهٔ وب را برای آموزش LLM حذف کرد. علاوه بر دادهٔ بزرگمقیاس وب، دادهٔ آموزش LLM معمولاً شامل کتاب، مقاله، دادهٔ تولیدشده توسط کاربران در شبکههای اجتماعی و موارد دیگر است. بیشتر LLMهای جدید با چنین مجموعهدادههای ترکیبی آموزش میبینند و این ترکیب برای عملکرد قوی مدلهای حاصل مهم دانسته شده است.
مسئلهٔ دوم: تنوع داده. میخواهیم دادهٔ آموزشی تا حد امکان انواع مختلف داده را پوشش دهد تا مدل آموزشدیده بتواند بهسادگی با وظایف پاییندستی متفاوت سازگار شود. اکنون بهطور گسترده پذیرفته شده است که کیفیت و تنوع داده هر دو نقش بسیار مهمی در LLMها دارند. یک نمونهٔ جالب این است که افزودن کد برنامهنویسی به دادهٔ آموزش برای LLM مفید گزارش شده است؛ نهفقط توان برنامهنویسی مدل را افزایش میدهد، بلکه استدلال در مسائل پیچیده، بهویژه مسائلی که به پرامپت COT نیاز دارند، را نیز بهتر میکند. مفهوم «تنوع» را میتوان به تنوع زبانی نیز گسترش داد. بسیاری از LLMها با دادهٔ چندزبانه آموزش میبینند و بنابراین یک مدل واحد میتواند چند زبان را مدیریت کند. این رویکرد در وظایف چندزبانه و میانزبانی توان قوی نشان میدهد، اما عملکرد روی هر زبان خاص تا حد زیادی به حجم و کیفیت دادهٔ همان زبان وابسته است و در برخی موارد برای زبانهای کممنبع نتایج ضعیفی دارد.
مسئلهٔ سوم: سوگیری داده. این مشکل ویژهٔ LLM نیست و در بسیاری از سامانههای NLP وجود دارد. نمونهٔ رایج، سوگیری جنسیتی است؛ یعنی مدل ترجیح یا ارتباط قویتری برای یک جنس نسبت به جنس دیگر نشان میدهد. بخشی از آن را میتوان به عدم توازن کلاس در دادهٔ آموزش نسبت داد؛ مثلاً واژهٔ nurses در داده بیشتر با زنان همراه است. برای کاهش سوگیری، معمولاً دستههای پدیدههای زبانی مختلف مانند جنسیت، قومیت و گویش متوازن میشوند. سوگیری با تنوع نیز مرتبط است. از آنجا که بسیاری از LLMها با دادههای انگلیسیمحور آموزش و همتراز میشوند، ممکن است به ارزشها و دیدگاههای فرهنگی رایج در جمعیتهای انگلیسیزبان متمایل شوند. افزایش تنوع زبانی دادهٔ آموزش میتواند تا حدی این سوگیری را کاهش دهد.
مسئلهٔ چهارم: حریم خصوصی. گردآوری دادهٔ بزرگمقیاس از منابع گسترده میتواند خطر افشای اطلاعات حساس، مانند مالکیت فکری و دادههای شخصی، را بالا ببرد. این نگرانی با توجه به توان LLM در بازنمایی الگوهای دادهٔ آموزشی مهمتر میشود، زیرا مدل ممکن است ناخواسته جزئیات مشخصی را حفظ و بازتولید کند. یک رویکرد ساده برای حفاظت از حریم خصوصی، حذف یا ناشناسسازی اطلاعات حساس است. برای مثال میتوان اطلاعات شناساییکنندهٔ شخصی را از دادهٔ آموزش حذف کرد تا LLM از آنها یاد نگیرد. بااینحال، در عمل پاککردن همهٔ دادههای حساس دشوار است. به همین دلیل، بسیاری از LLMها، بهویژه مدلهای ارائهشده بهعنوان خدمت عمومی، همراه با سامانههایی کار میکنند که افشای بالقوهٔ دادهٔ حساس را تشخیص میدهند یا مدل برای رد درخواستهایی که میتواند به نشت اطلاعات منجر شود ریزتنظیم میشود.
۲.۲.۲ اصلاحات مدل
آموزش LLM دشوار است. یک مشکل رایج این است که هرچه LLM بزرگتر میشود، فرایند آموزش ناپایدارتر میگردد. برای مثال، برای آموزش پایدار با گرادیانکاهشی ممکن است به نرخ یادگیری کوچکی نیاز باشد، اما این کار زمان آموزش را بسیار طولانی میکند. گاهی حتی با طراحی دقیق تنظیمات آموزش، فرایند در نقاطی از بهینهسازی واگرا میشود. آموزش LLM به عوامل بسیاری مانند مقداردهی اولیهٔ پارامترها، دستهبندی داده و منظمسازی وابسته است. در اینجا بر اصلاحات و بهبودهای رایج معماری استاندارد Transformer تمرکز میکنیم که در ساخت LLMهای قابلآموزش اهمیت دارند.
۲.۲.۲.۱ نرمالسازی لایه همراه با اتصال باقیمانده
نرمالسازی لایه (layer normalization) برای پایدارکردن آموزش شبکههای عصبی عمیق استفاده میشود. این فرایند شامل کمکردن میانگین و تقسیم بر انحراف معیار است. با نرمالکردن خروجی لایه، میتوان مسئلهٔ تغییر کوواریانس (covariate shift) را کاهش داد و پایداری آموزش را بهتر کرد. در Transformerها، نرمالسازی لایه معمولاً همراه با اتصالهای باقیمانده (residual connections) استفاده میشود. همانطور که در بخش ۲.۱.۱ بیان شد، یک زیرلایه میتواند معماری post-norm داشته باشد که نرمالسازی بلافاصله پس از بلوک باقیمانده انجام میشود، یا معماری pre-norm که نرمالسازی داخل بلوک باقیمانده قرار میگیرد. هر دو معماری بهطور گسترده در سامانههای مبتنی بر Transformer استفاده شدهاند [Wang et al., 2019]، اما pre-norm بهویژه برای آموزش Transformerهای عمیق مفید بوده است. ازاینرو، بیشتر LLMها از معماری pre-norm استفاده میکنند که در متن کتاب به شکل output = LNorm(F(input)) + input نوشته شده است.
شکل پرکاربرد تابع نرمالسازی لایه:
LNorm(h) = α · (h−μ)/(σ+ϵ) + β (2.23)
که در آن h بردار حقیقی d-بعدی، μ میانگین درایههای h و σ انحراف معیار متناظر است. ϵ برای پایداری عددی افزوده میشود و α∈Rd و β∈Rd بهترتیب پارامترهای gain و bias هستند.
گونهای از نرمالسازی لایه با نام نرمالسازی RMS فقط بردار ورودی را بازمقیاس میکند و آن را دوباره مرکزدهی نمیکند [Zhang and Sennrich, 2019]:
LNorm(h) = α · h/(σrms+ϵ) + β (2.24)
که در آن σrms = ( (1/d) ∑k=1d hk2 )1/2. این نوع نرمالسازی در LLMهایی مانند خانوادهٔ LLaMA استفاده میشود.
۲.۲.۲.۲ توابع فعالسازی در FFNها
در Transformer، زیرلایههای FFN برای واردکردن غیرخطیبودن به یادگیری بازنمایی طراحی شدهاند و برای جلوگیری از تباهشدن بازنماییهای آموختهشده توسط خودتوجهی مفید گزارش شدهاند.۸ [Dong et al., 2021]. شکل استاندارد FFN را میتوان چنین نوشت:
FFN(h) = σ(hWh + bh)Wf + bf (2.25)
که در آن Wh∈Rd×dh, bh∈Rdh, Wf∈Rdh×d, bf∈Rd پارامترها و dh اندازهٔ پنهان است. σ(·) تابع فعالسازی لایهٔ پنهان است. انتخاب رایج، ReLU است:
σrelu(h) = max(0,h) (2.26)
در پیادهسازی عملی، افزایش dh مفید است و در LLMها معمولاً مقدار بزرگی برای آن انتخاب میشود. اما اندازهٔ پنهان بسیار بزرگ، آموزش و استقرار را دشوار میکند؛ در این وضعیت طراحی تابع فعالسازی در FFNهای عریض نقش مهمتری پیدا میکند.
یکی از جایگزینهای ReLU در LLMها، واحد خطی خطای گاوسی (Gaussian Error Linear Unit یا GeLU) است که میتوان آن را نسخهای هموارتر از ReLU دانست. بهجای کنترل خروجی صرفاً با علامت ورودی، GeLU ورودی را با صدک Pr(h≤h) وزن میدهد. در این تعریف h یک بردار d-بعدی است که درایههای آن از توزیع استاندارد Gaussian(0,1) گرفته میشوند.۹
σgelu(h) = h Pr(h≤h) = hΦ(h) (2.27)
Φ(h) تابع توزیع تجمعی Gaussian(0,1) است که میتوان آن را به روشهای مناسب پیادهسازی کرد [Hendrycks and Gimpel, 2016]. GeLU در LLMهایی مانند BERT، GPT-3 و BLOOM بهکار رفته است.
خانوادهٔ دیگری از توابع فعالسازی محبوب در LLMها، توابع مبتنی بر واحد خطی دروازهدار (Gated Linear Unit یا GLU) هستند. شکل پایهٔ GLU در منبع چنین آمده است:
σglu(h) = σ(hW₁+b₁) ⊙ (W₂+b₂) (2.28)
که در آن W₁∈Rd×d, b₁∈Rd, W₂∈Rd×d, b₂∈Rd پارامترهای مدل هستند. انتخابهای مختلف برای σ(·) گونههای مختلف GLU را میسازد. اگر σ(·) همان GeLU باشد، تابع GeGLU بهدست میآید:
σgeglu(h) = σgelu(hW₁+b₁) ⊙ (W₂+b₂) (2.29)
این تابع فعالسازی در LLMهایی مانند Gemma با موفقیت استفاده شده است. مثال دیگر، استفاده از تابع Swish با تعریف σswish(h)=h⊙Sigmoid(ch) است که ادامهٔ آن در بخش بعدی آمده است.