۲.۳.۵ برونیابی و درونیابی موقعیت
در ادامهٔ بحث اشتراکگذاری سرهای توجه، اگر تعداد گروهها به حالت متناظر برسد، مدل به GQA تبدیل میشود. اشتراکگذاری را میتوان میان لایهها نیز انجام داد. چنین روشی در خانوادهٔ روشهای وزن مشترک و فعالسازی مشترک قرار میگیرد که در Transformerها بهطور گسترده استفاده شدهاند [Dehghani et al., 2018; Lan et al., 2020]. برای مثال، میتوان فعالسازیهای KV یا وزنهای توجه را میان لایهها به اشتراک گذاشت تا هم هزینهٔ محاسبات و هم ردپای حافظه کاهش یابد [Xiao et al., 2019; Brandon et al., 2024]. شکل ۲.۸ (e) نمونهای از این روش را نشان میدهد که در آن یک query در یک لایه مستقیماً به KV cache یک لایهٔ پایینتر دسترسی پیدا میکند.
از آنجا که لایههای Transformer نسبت به ترتیب ورودی حساسیتی ندارند، باید به روشی اطلاعات موقعیتی را در توکنهای ورودی کدگذاری کنیم. روش رایج آن است که positional embedding را به token embedding اضافه کنیم و سپس این embeddingهای ترکیبی را بهعنوان ورودی به پشتهٔ لایههای Transformer بدهیم. در این حالت embedding در موقعیت i به صورت زیر نوشته میشود:
e_i = x_i + PE(i) (2.74)
که در آن x_i ∈ R^d token embedding و PE(i) ∈ R^d positional embedding را نشان میدهد. در حالت کلی، x_i برداری مستقل از موقعیت است؛ بنابراین PE(i) برای کدگذاری زمینهٔ موقعیتی به کار میرود. یک روش سرراست آن است که PE(i) را متغیری قابل یادگیری در نظر بگیریم و آن را همراه با سایر پارامترهای مدل آموزش دهیم. به این ترتیب، برای هر موقعیت بازنمایی یکتایی یاد میگیریم و میتوانیم توکنهایی را که در موقعیتهای متفاوت دنباله ظاهر میشوند از هم متمایز کنیم.
بازنمایی موقعیتها با بردارهای یادگرفتهشده در وظایفی که طول دنبالههای زمان آموزش و آزمون مشابه است میتواند خوب عمل کند. اما در عمل، هنگام آموزش معمولاً برای جلوگیری از هزینهٔ محاسباتی بیش از حد، طول دنبالهها را محدود میکنیم و در عین حال میخواهیم مدل آموزشدیده را در استنتاج روی دنبالههای بسیار بلندتر به کار ببریم. در این حالت، embeddingهای موقعیتی یادگرفتهشده یک ضعف آشکار دارند: برای موقعیتهایی که در مرحلهٔ آموزش دیده نشدهاند embedding آموزشدیدهای وجود ندارد.
راه دیگر برای مدلسازی اطلاعات موقعیتی، ساخت positional embeddingهایی است که قابلیت تعمیم داشته باشند؛ یعنی مدل embedding پس از آموزش بتواند دنبالههای بلندتر را نیز پردازش کند. فرض کنید یک مدل embedding موقعیتی را روی دنبالههایی با حداکثر طول m_l آموزش دادهایم و میخواهیم آن را روی دنبالهای با طول m به کار ببریم که m ≫ m_l است. اگر مدل embedding به بازهٔ موقعیتهای قابل مشاهده در دادهٔ آموزش محدود باشد، برای دادههای جدید خارج از آن بازه شکست خواهد خورد. شکل ۲.۹ (a) حالتی را نشان میدهد که مدل embedding یادگرفتهشده، چون توانایی برونیابی ندارد، نمیتواند نقاط دادهٔ بیرون از دامنهٔ آموزش را مدل کند.
روشهای مختلفی برای تعمیمپذیرکردن مدلهای embedding موقعیتی وجود دارد که میتوان آنها را در دو دسته قرار داد:
- برونیابی (Extrapolation). مدل آموختهشده روی نقاط دادهٔ مشاهدهشده، یعنی موقعیتها، مستقیماً برای نسبتدادن مقادیر معنادار به نقاطی فراتر از بازهٔ اصلی به کار میرود. برای مثال، اگر دنبالهٔ اعداد ۱، ۲، ...، ۱۰ را داشته باشیم و بخواهیم معنای عدد جدید ۱۵ را بفهمیم، با دانستن اینکه اینها اعداد طبیعی برای ترتیبدهیاند، بهراحتی نتیجه میگیریم که ۱۵ پس از ۱۰ قرار میگیرد، با اینکه قبلاً دیده نشده است. شکل ۲.۹ (b) نمونهای را نشان میدهد که در آن تابعی برای برازش نقاط داده در یک بازهٔ مشخص یاد گرفته و سپس برای تخمین مقادیر نقاط خارج از آن بازه استفاده میشود.
- درونیابی (Interpolation). این روش یک بازهٔ بزرگتر از نقاط داده را به بازهٔ مشاهدهشدهٔ اصلی نگاشت میکند. برای مثال، اگر مدلی برای اعداد در بازهٔ [1,10] داشته باشیم و بازهٔ جدید [1,20] داده شود، میتوانیم با تقسیم همهٔ اعداد بر ۲ آن را کوچک کنیم تا همهٔ اعداد در [1,10] قرار گیرند. این مقیاسبندی امکان استفاده از مدل آموزشدیده روی [1,10] برای توصیف نقاط بازهٔ گستردهتر [1,20] را فراهم میکند. شکل ۲.۹ (c) نمونهای از این رویکرد است.
شکل ۲.۹ — مقایسهٔ روشهای مختلف positional embedding در یک بازهٔ موقعیتی. نقاط آبی موقعیتهای مشاهدهشده در آموزش و نقاط قرمز موقعیتهای تازهدیدهشده در آزمون هستند. در (a) مدل فقط نقاط آموزش را به خاطر میسپارد و تعمیم نمیدهد؛ در (b) و (c) تعمیم بهترتیب با برونیابی و درونیابی انجام میشود. محور افقی: طول دنباله؛ محور عمودی: مقدار.
در واقع positional embedding در بسیاری از سامانهها تا حدی تعمیمپذیری دارد. برای نمونه، sinusoidal encoding که رایجترین روش positional embedding است از توابع سینوس و کسینوس استفاده میکند و بهطور طبیعی میتواند به دنبالههایی با هر طول گسترش یابد. با این حال، وقتی طول دنباله برای پردازش بهطور چشمگیر افزایش پیدا کند، این رویکرد عملکرد خوبی ندارد. در ادامه چند روش جایگزین مبتنی بر برونیابی یا درونیابی بررسی میشود.
۲.۳.۵.۱ توجه با بایاسهای قابل یادگیری
یکی از مشکلات معادلهٔ (۲.۷۴) این است که مدل embedding هر توکن را مستقل در نظر میگیرد و در نتیجه فاصلهٔ میان توکنها را نادیده میگیرد. یک بهبود رایج، که relative positional embedding نامیده میشود، رابطهٔ دوتایی میان توکنها را در نظر میگیرد [Shaw et al., 2018]. ایدهٔ کلی این است که offset میان هر جفت موقعیت محاسبه و در مدل self-attention وارد شود. یکی از سادهترین شکلهای self-attention با relative positional embedding چنین است:
Attqkv(q_i, K_{≤i}, V_{≤i}) = Σj=0i α(i,j)v_j (2.75)
α(i,j) = Softmax((q_i k_j^T + PE(i,j))/√d + Mask(i,j)) (2.76)
تنها تفاوت این مدل با self-attention اصلی آن است که جملهٔ بایاس PE(i,j) به حاصلضرب query-key افزوده میشود. بهصورت شهودی میتوان PE(i,j) را جریمهٔ فاصله برای زوج موقعیتهای i و j دانست؛ هرچه i از j دورتر شود مقدار آن کاهش مییابد.
PE(i,j) را میتوان به شیوههای مختلف تعریف کرد. در اینجا نسخهٔ T5 از relative positional embedding، موسوم به T5 bias [Raffel et al., 2020]، را در نظر میگیریم. برای هر زوج query q_i و key k_j، offset چنین تعریف میشود:
d(i,j) = i − j (2.77)
یک طراحی ساده برای بایاس آن است که برای تمام زوجهای query-key با offset یکسان، یک متغیر قابل یادگیری مشترک استفاده شود؛ یعنی PE(i,j)=u_{i−j}. اما اختصاص یک مقدار یکتا به هر offset مدل را به offsetهای مشاهدهشده محدود میکند. وقتی i−j از بیشترین offset دیدهشده در آموزش بزرگتر شود، مدل دیگر قادر به تعمیم نیست.
T5 نسخهٔ تعمیمیافتهتری را به کار میگیرد. بهجای اختصاص یک بایاس یکتا به هر offset، offsetهای مختلف را در «bucket»هایی گروهبندی میکند که هر کدام یک پارامتر قابل یادگیری دارند. برای n_b+1 bucket:
- برای bucketهای ۰ تا (n_b+1)/2 − 1، هر bucket دقیقاً به یک offset اختصاص دارد؛ بنابراین bucket 0 ↔ offset 0، bucket 1 ↔ offset 1 و ... و به صورت b(i−j)=i−j نوشته میشود.
- برای bucketهای (n_b+1)/2 تا n_b، اندازهٔ bucket بهشکل لگاریتمی رشد میکند. برای offsetای که i−j ≥ (n_b+1)/2 است، شمارهٔ bucket را میتوان چنین تعریف کرد:
b(i−j) = (n_b+1)/2 + floor(((log(i−j)−log((n_b+1)/2))/(log(dist_max)−log((n_b+1)/2))) · (n_b+1)/2) (2.78)
پارامتر dist_max معمولاً عدد نسبتاً بزرگی است و بیشترین offset احتمالی را نشان میدهد. در language modeling، query فقط اجازهٔ توجه به left-context را دارد و در نتیجه i−j ≥ 0 است. در حالت عمومی self-attention که یک توکن میتواند به همهٔ توکنهای دنباله توجه کند، اگر i<j باشد offsetهای منفی نیز ممکناند.
- وقتی i−j > dist_max باشد، آن offset در آخرین bucket قرار میگیرد؛ یعنی bucket n_b همهٔ offsetهایی را در خود میگیرد که bucketهای قبلی پوشش ندادهاند.
b(i−j) = { i−j, 0≤i−j<(n_b+1)/2 ; min(n_b, (n_b+1)/2 + floor(((log(i−j)−log((n_b+1)/2))/(log(dist_max)−log((n_b+1)/2)))·(n_b+1)/2)), i−j≥(n_b+1)/2 } (2.79)
شکل ۲.۱۰ — توزیع offsetهای query-key در bucketهای مدل T5 با n_b=32 و dist_max=1024. در نیمهٔ اول اندازهٔ bucket ثابت و در نیمهٔ دوم بهصورت لگاریتمی بزرگتر میشود؛ آخرین bucket همهٔ offsetهای باقیمانده را پوشش میدهد.
همهٔ PE(i,j)هایی که در یک bucket قرار میگیرند بایاس مشترک u_{b(i−j)} دارند. با جایگذاری آن در معادلهٔ (۲.۷۶)، وزن توجه چنین میشود:
α(i,j) = Softmax((q_i k_j^T + u_{b(i−j)})/√d + Mask(i,j)) (2.81)
در مدل T5 رافل و همکاران، عملیات rescaling حاصلضرب query-key حذف شده و وزن توجه به صورت α(i,j)=Softmax(q_i k_j^T+u_{b(i−j)}+Mask(i,j)) نوشته میشود (۲.۸۰).
پارامترهای {u_0,...,u_{n_b}} در زمان آموزش بهعنوان پارامترهای مشترک یاد گرفته میشوند. نکتهٔ مهم این است که این مدل میتواند به دنبالههای بلند تعمیم یابد، زیرا PE(i,j)های دارای offset مشابه query-key از یک پارامتر مشترک استفاده میکنند. این اشتراکگذاری بهویژه برای تعمیم خوب مهم است، چون offsetهای بسیار بزرگ در دادهٔ آموزش نادرند. در عمل معمولاً n_b عددی متوسط انتخاب میشود و همین امر به کنترل overfitting مدل positional embedding کمک میکند.
۲.۳.۵.۲ توجه با بایاسهای غیرقابل یادگیری
مدلهای relative positional embedding بر مجموعهای از بایاسهای یادگرفتهشده برای حاصلضرب query-key در self-attention تکیه دارند. راه جایگزین این است که بهجای آموزش این بایاسها روی یک dataset خاص، با heuristic مقادیر ثابتی به آنها بدهیم. مزیت این رویکرد آن است که به فرایند آموزش وابسته نیست و پس از تعیین بایاسها میتوان آن را مستقیماً روی هر دنبالهای اعمال کرد.
نمونهٔ این روش، رویکرد Press et al. [2022] با نام Attention with Linear Biases (ALiBi) است. در ALiBi بایاس برابر offset منفی و مقیاسشدهٔ query-key تعریف میشود:
PE(i,j) = −β(i−j) = β(j−i) (2.82)
که β ضریب مقیاس است. با افزودن آن به حاصلضرب query-key، وزن توجه به شکل زیر درمیآید:
α(i,j) = Softmax((q_i k_j^T + β(j−i))/√d + Mask(i,j)) (2.83)
میتوان این مدل را چنین تفسیر کرد که هر بار j یک گام از i دور میشود یک جریمهٔ ثابت به q_i k_j^T اضافه میشود. بنابراین نیازی نیست مدل را با بازهای از طولهای دنباله سازگار کنیم و میتوان از آن برای دنبالههایی با طول دلخواه استفاده کرد. شکل ۲.۱۱ T5 bias و ALiBi bias را مقایسه میکند.
در حالت کلی β باید روی validation dataset تنظیم شود. با این حال Press et al. [2022] نشان دادند که در multi-head attention، انتخاب مقادیری برای β که با ضریب هندسی کاهش مییابند روی وظایف مختلف خوب عمل میکند. برای self-attention با n_head head، scalar مربوط به head شمارهٔ k به صورت زیر است:
β_k = 1 / 2^(8/k) (2.84)
ALiBi شکل سادهای از relative positional embedding فراهم میکند. روشهای مشابه دیگری نیز برای طراحی query-key bias بر پایهٔ offset i−j وجود دارند که جدول ۲.۴ آنها را مقایسه میکند. جالب است که سمت راست معادلهٔ (۲.۸۲) از نظر فرم بسیار شبیه length featureهایی است که در سامانههای feature-based سنتی استفاده میشدند؛ برای مثال، در statistical machine translation چنین featureهایی برای مدلسازی جابهجایی واژهها کاربرد گسترده داشتند و مدلهایی میساختند که میان وظایف ترجمهٔ مختلف خوب تعمیم میدادند [Koehn, 2010].
شکل ۲.۱۱ — حاصلضربهای query-key همراه با بایاس. بالا: T5 bias؛ پایین: ALiBi bias. طیف رنگ از آبی روشن برای قدرمطلق کوچک تا آبی تیره برای قدرمطلق بزرگ تغییر میکند.
جدول ۲.۴ — بایاسهای query-key بهعنوان relative positional embedding| روش | Query-Key Bias: PE(i,j) |
| T5 [Raffel et al., 2020] | u_{b(i−j)} |
| ALiBi [Press et al., 2022] | −β(i−j) |
| Kerple [Chi et al., 2022] | −β₁(i−j)^β₂ (power); −β₁ log(1+β₂(i−j)) (logarithmic) |
| Sandwich [Chi et al., 2023] | Σ_{k=1}^{d̄/2} cos((i−j)/10000^{2k/d̄}) |
| FIRE [Li et al., 2024] | f( ψ(i−j) / ψ(max(m_len,i)) ) |
در جدول، β, β₁, β₂, d̄ و m_len hyper-parameter هستند. در T5، b(i−j) bucket اختصاصیافته به offset را نشان میدهد. در FIRE، ψ(·) تابعی یکنواخت افزایشی مانند ψ(x)=log(cx+1) و f(·) یک FFN است.
۲.۳.۵.۳ Rotary Positional Embedding
مانند sinusoidal embedding، rotary positional embedding نیز بر مقادیر ازپیشتعریفشده در همهٔ ابعاد embedding تکیه دارد [Su et al., 2024]. در sinusoidal embedding، موقعیتها با ترکیب توابع سینوس و کسینوس با فرکانسهای مختلف نمایش داده میشوند و سپس به token embedding افزوده میشوند. در مقابل، rotary positional embedding زمینهٔ موقعیتی را بهصورت چرخش token embedding در یک فضای مختلط مدل میکند و به مدل embedding ضربی زیر میرسد:
e_i = x_i R(i) (2.85)
که R(i) ∈ R^{d×d} ماتریس چرخش اعمالشده بر token embedding یعنی x_i ∈ R^d است.
برای سادگی ابتدا embedding دوبعدی را در نظر میگیریم. فرض کنید x=[x₁ x₂] باشد. این بردار را در صفحه، از مبدأ (0,0) تا نقطهٔ (x₁,x₂) نمایش میدهیم. چرخش پادساعتگرد حول مبدأ، بدون تغییر اندازهٔ بردار، آن را جابهجا میکند. اگر زاویهٔ چرخش θ باشد:
Ro(x,θ)=xR_θ=[cosθ·x₁−sinθ·x₂, sinθ·x₁+cosθ·x₂] (2.86)
که R_θ=[[cosθ,sinθ],[-sinθ,cosθ]] ماتریس چرخش است. اگر چند چرخش متوالی روی یک بردار انجام شود، حاصل نیز یک چرخش است. بنابراین چرخاندن بردار با زاویهٔ θ برای t بار چنین نوشته میشود:
Ro(x,tθ)=xR_{tθ}=[cos(tθ)x₁−sin(tθ)x₂, sin(tθ)x₁+cos(tθ)x₂] (2.87)
اگر t را موقعیت توکنی بدانیم که با x نمایش داده میشود، معادلهٔ بالا یک مدل سادهٔ positional embedding تعریف میکند. مطابق شکل ۲.۱۲ (b)، حرکت توکن از موقعیت ۰ آغاز میشود و با هر گام بردار به اندازهٔ θ میچرخد. هنگام رسیدن به موقعیت t، بازنمایی توکن با زمینهٔ موقعیتی Ro(x,tθ) است. چون چرخش اندازهٔ embedding را تغییر نمیدهد، «معنای» اصلی توکن حفظ میشود و اطلاعات موقعیت از طریق چرخش وارد بازنمایی میگردد.
شکل ۲.۱۲ — چرخش بردار در صفحه. (a) چرخش تکمرحلهای؛ (b) چرخش چندمرحلهای؛ (c) embedding توکنهای cat و sleeping در دو جمله. با افزودن موقعیت بهصورت چرخش، فاصلهٔ نسبی دو توکن حفظ میشود؛ بنابراین چون فاصلهٔ cat و sleeping در دو جمله یکسان است، زاویهٔ میان embeddingهای آنها نیز در طول چرخش یکسان باقی میماند.
یک روش رایج برای فهم چرخش بردار، تعریف آن در فضای مختلط است. هر بردار دوبعدی x=[x₁ x₂] در R² را میتوان با نگاشت خطی دوسویی به عدد مختلط x′=x₁+i x₂ در C تبدیل کرد. در این صورت چرخش زاویهٔ tθ متناظر با ضرب در e^{itθ} است و چون e^{itθ}=cos(tθ)+i sin(tθ) داریم:
xR_{tθ} ↦ x′e^{itθ}=(x₁+i x₂)(cos tθ+i sin tθ)=cos tθ·x₁−sin tθ·x₂+i(sin tθ·x₁+cos tθ·x₂) (2.88)
بازنمایی x′e^{itθ} را با C(x,tθ) نشان میدهیم. inner product بازنمایی توکنها در موقعیتهای t و s چنین است:
⟨C(x,tθ),C(y,sθ)⟩=(x′ȳ′)e^{i(t−s)θ} (2.89)
که در آن ȳ′ مزدوج مختلط y′ است. نتیجه شامل جملهٔ t−s است، بنابراین offset میان دو توکن را مدل میکند.
بازگشت به فضای دوبعدی اقلیدسی نشان میدهد dot product دو بردار چرخیده نیز تابعی از (t−s)θ است:
Ro(x,tθ)[Ro(y,sθ)]^T=xR_{tθ}[yR_{sθ}]^T=xR_{(t−s)θ}y^T (2.90)
اگر Ro(x,tθ) و Ro(y,sθ) را بهترتیب query و key در نظر بگیریم، عملیات self-attention بهطور ضمنی مدلسازی زمینهٔ موقعیتی نسبی را در خود خواهد داشت.
این روش را میتوان به embeddingهای چندبعدی تعمیم داد. برای token embedding با بعد d یعنی x=[x₁ x₂ ... x_d]، آن را به بردار مختلط d/2-بعدی x′=[x₁+i x₂, x₃+i x₄, ..., x_{d−1}+i x_d] تبدیل میکنیم. rotary positional embedding در فضای مختلط به صورت زیر است:
C(x,tθ)=Σk=1d/2 x′_k e^{itθ_k} e⃗_k (2.91)
که e⃗_k بردار پایهٔ استاندارد با تنها یک مقدار غیرصفر در مختصهٔ k است [Biderman et al., 2021]. فرم معادل در فضای اقلیدسی d-بعدی با بلوکهای ماتریس چرخش R_{tθ₁}, R_{tθ₂}, ..., R_{tθ_{d/2}} نوشته میشود (۲.۹۲). بردار θ=[θ₁,...,θ_{d/2}] زاویهٔ چرخش در ابعاد مختلف را کنترل میکند و معمولاً θ_k=10000^{-2(k−1)/d} انتخاب میشود؛ مشابه تنظیم sinusoidal embedding.
در پیادهسازی عملی، معادلهٔ (۲.۹۲) را میتوان فقط با element-wise product و جمع بردارها بازنویسی کرد (۲.۹۳). در نهایت شکل embedding در موقعیت i به صورت زیر است:
e_i = Ro(x_i, iθ) (2.94)
۲.۳.۵.۴ درونیابی موقعیت
در position interpolation هدف آن است که موقعیتهای دنبالهٔ جدید را به بازهٔ مشاهدهشده در آموزش نگاشت کنیم. فرض کنید طول دنباله در آموزش در بازهٔ ۰ تا m_l باشد. در زمان آزمون، وقتی m>m_l است، موقعیتهای [0,m] را طوری نمایش میدهیم که بازنماییها در [0,m_l] جای بگیرند.
مدل rotary positional embedding بالا را در نظر بگیرید. embedding هر توکن با Ro(x_i,iθ) و θ=[θ₁,...,θ_{d/2}] توصیف میشود. این مدل را میتوان ترکیب خطی دو تابع تناوبی دانست:
cos(iθ)=[cos(iθ₁) ... cos(iθ_{d/2})] (2.95)
sin(iθ)=[sin(iθ₁) ... sin(iθ_{d/2})] (2.96)
θ_k تابعی نمایی از k است:
θ_k = b^{-2(k−1)/d} (2.97)
که b base است و دورهٔ cos(iθ_k) و sin(iθ_k) برابر است با:
T_k = 2π · b^{2(k−1)/d} (2.98)
ایدهٔ اصلی position interpolation تنظیم این دوره است تا موقعیتهای جدید در بازهٔ [0,m_l] کدگذاری شوند. یک راه آن است که T_k را با ضریب m/m_l بزرگ کنیم:
T′_k = (m/m_l) · 2π · b^{2(k−1)/d} (2.99)
به این ترتیب همهٔ نقاط [0,m] در [0,m_l] فشرده میشوند. این linear scaling با تغییر ورودی مدل embedding بهآسانی پیاده میشود [Chen et al., 2023c]:
Ro′(x_i,iθ)=Ro(x_i,(m_l/m)iθ) (2.100)
روش دیگر position interpolation مقیاسدادن base است. فرض کنید base یعنی b با ضریب λ مقیاس شود. میخواهیم دورهٔ مدل جدید در آخرین بُعد θ با دورهٔ مدل linear positional interpolation برابر باشد:
2π(λb)^{2((d/2)−1)/d} = (m/m_l)·2πb^{2((d/2)−1)/d} (2.101)
با حل معادله:
λ=(m/m_l)^{d/(d−2)} (2.102)
و در نتیجه:
Ro′(x_i,iθ)=Ro(x_i,iθ′) (2.103)
θ′=[(λb)^0, (λb)^{-2/d}, ..., (λb)^{-(d−2)/d}] (2.104)
مقیاسدادن base روشی غیر یکنواخت برای مقیاسدادن دورهها در ابعاد مختلف θ است. این روش برای گسترش LLMها به دنبالههای بلندتر مفید گزارش شده و بهبودهای مختلفی نیز برای آن ارائه شده است [Peng et al., 2024; Ding et al., 2024]. ایدهٔ مقیاسدهی آگاه از NTK نیز نخست در یک بحث عمومی آنلاین دربارهٔ RoPE مقیاسیافته مطرح شد؛ نشانی منبع در کتاب اصلی آمده است.
۲.۳.۶ ملاحظات
در این بخش انواع روشهای language modeling با زمینهٔ بلند معرفی شد. در پایان چند مسئلهٔ جالب مرتبط با این روشها بررسی میشود.
۲.۳.۶.۱ نیاز به زمینهٔ بلند
یکی از اهداف نهایی long-context LLM این است که مدل بتواند زمینهای عملاً نامحدود را با دقت کدگذاری کند. «زمینهٔ نامحدود» بیشتر به این معناست که LLM بتواند پیوسته واژهها را بخواند. این هدف توسعهٔ LLMهایی را برمیانگیزد که قادر به پردازش زمینههای بسیار بلند یا دادهٔ جریانی باشند. همانطور که در بخش ۲.۳.۳ گفته شد، استفاده از مدلهای حافظه با اندازهٔ ثابت برای پردازش زمینهای که پیوسته گسترش مییابد رایج است. بسیاری از این سامانهها بر معماریهای recurrent یا گونههای آن متکیاند، زیرا ذاتاً برای مسائل سری زمانی مناسباند که اثر ورودیهای گذشته در آنها بهطور نامحدود ادامه مییابد. راه دیگر برای رسیدن به حافظهٔ نامحدود، ساخت جایگزینهایی برای self-attention است؛ برای مثال، continuous-space attention میتواند زمینه را بدون وابستگی به طول آن کدگذاری کند [Martins et al., 2022].
هنگام مطالعهٔ long-context LLMها طبیعی است بپرسیم چه سازوکارهایی استفاده از زمینهٔ بلند را در language modeling توضیح میدهند. آیا میتوان بازنمایی زمینهٔ نامحدود را در مدلی نسبتاً کوچک فشرده کرد؟ آیا همهٔ توکنهای زمینه برای پیشبینی توکن بعدی مفیدند؟ LLM هنگام دیدن زمینه چگونه برای token prediction آماده میشود؟ آیا میتوان از پیش تشخیص داد کدام اطلاعات زمینهای برای پیشبینی حیاتی است؟ پاسخ عمومی این پرسشها روشن نیست، اما زمینهساز پژوهش دربارهٔ مدلهای توضیحپذیر شده است. Deletang et al. [2024] با آزمایشهای گسترده نشان دادند LLMها میتوانند in-context compressorهای قدرتمندی باشند. نگاهکردن به predictive modelها بهعنوان compression model پیشینهای طولانی در machine learning دارد و برای درک scaling lawهای LLM نیز بینش میدهد. Pal et al. [2023] و Wu et al. [2024] بررسی کردند که آیا featureهای آموختهشده تا گام فعلی، حتی بدون طراحی صریح، برای پیشبینی توکنهای گامهای بعدی کافی هستند یا نه.
نیاز به زمینهٔ بلند در language modeling بهشدت به مسئله وابسته است. مسئلهٔ مرتبط دیگر این است که LLM را کجا به کار ببریم و چگونه ارزیابی کنیم. برای مثال، در summarization ممکن است فقط لازم باشد چند جنبهٔ کلیدی متن استخراج و برجسته شود، در حالی که در وظایف retrieval-like باید کل زمینه «به خاطر سپرده شود» تا اطلاعات مرتبط قابل دسترسی باشد. ارزیابی این موضوع در ادامه بررسی میشود.
۲.۳.۶.۲ پیشآموزش یا سازگارکردن LLMها؟
آموزش LLM هزینهٔ محاسباتی بسیار بالایی دارد. هرچند آموزش مستقیم روی دادهٔ دنبالهٔ بلند از نظر مفهومی ساده است، برای datasetهای بزرگ از نظر محاسباتی دشوار میشود. رویهٔ رایج آن است که LLM روی datasetهای عمومی پیشآموزش داده شود و سپس با fine-tuning نسبتاً محدود سازگار گردد. LLMهای دارای relative یا rotary positional embedding را میتوان مستقیماً در پیشآموزش روی دادهٔ بزرگ آموزش داد. مدل حاصل ممکن است در استنتاج تا حدی توان برونیابی طول نشان دهد، ولی fine-tuning روی دنبالههای بلندتر میتواند مؤثرتر باشد.
در حالت ایدهآل میخواهیم LLM را با معماری استاندارد Transformer پیشآموزش دهیم و آن را برای وظایف جدید سازگار کنیم؛ در نتیجه میتوان از LLMهای آماده استفاده کرد و با هزینهٔ کمتر آنها را برای دنبالههای بلند تطبیق داد. اما با معماریهای جدید اغلب ناچاریم مدل را از ابتدا آموزش دهیم. این مسئله توسعهٔ long-context LLM را دشوار میکند، زیرا امکان استفادهٔ مستقیم از مدلهای پیشآموختهٔ بالغ وجود ندارد. با این حال fine-tuning همچنان برای برخی معماریهای متفاوت با پیشآموزش مؤثر است. نمونهٔ آن مدلهای دارای external memory است: LLM پیشآموخته ثابت نگه داشته میشود و تمرکز بر همکاری آن با memory model قرار میگیرد. در RAG نیز معمولاً LLM را fine-tune میکنند تا از ورودیهای retrieval-augmented بهتر استفاده کند. مثال دیگر این است که LLM با full attention آموزش داده شود و در fine-tuning، sparse attention جایگزین آن گردد. مدل پیشآموخته مقادیر اولیهٔ پارامترهای مدل جدید را فراهم میکند و سپس مدل بهشکل معمول fine-tune میشود.
۲.۳.۶.۳ ارزیابی LLMهای دارای زمینهٔ بلند
ارزیابی long-context LLM مهم است، اما موضوعی نسبتاً جدید در NLP به شمار میآید. ایدهٔ کلی این است که زمینهای بلند به LLM بدهیم و از خروجی بررسی کنیم آیا کل زمینه را میفهمد و از آن در پیشبینی توکنهای بعدی استفاده میکند یا نه. در پژوهش سنتی NLP، ارزیابیهای مشابه معمولاً توان مدل در مدیریت long-range dependency را میسنجیدند، اما اندازهٔ زمینه در LLMهای امروزی بسیار بزرگتر از سامانههای چند سال قبل است؛ بنابراین benchmarkها و metricهای جدیدی نیاز است.
یک روش استفاده از perplexity است. با وجود سادگی ظاهری، این معیار بیشتر توان LLM در استفاده از زمینهٔ محلی را منعکس میکند تا زمینهٔ جهانی. از این رو روشهای اختصاصی برای long-context LLM توسعه یافتهاند. از جمله synthetic taskهایی که با دادهٔ ساختگی یا دستکاریشده، قابلیت مشخصی را میسنجند. در needle-in-a-haystack و passkey retrieval [Mohtashami and Jaggi, 2024; Chen et al., 2023c]، LLM باید قطعهای کوچک اما مرتبط را از حجم بزرگی از متن پیدا و استخراج کند. فرض این است که LLM دارای حافظهٔ کافی باید هنگام پردازش اطلاعات جدید بخشهای قبلی متن را به خاطر بسپارد و بتواند جزئیات مرتبط و پراکنده را از میان اطلاعات نامرتبط بیرون بکشد. در copy memory task یا به اختصار copy task نیز LLM باید متن ورودی یا بخشی مشخص از آن را چند بار تکرار کند. این وظایف در اصل برای سنجش میزان نگهداری و بازیابی توکنهای قبلی در recurrent modelها پیشنهاد شده بودند [Hochreiter and Schmidhuber, 1997; Arjovsky et al., 2016] و بعدتر برای ارزیابی LLMهای جدید به کار رفتند [Bulatov et al., 2022; Gu and Dao, 2023].
رویکرد دیگر، آزمون LLM روی وظایف NLP با ورودی بسیار بلند است؛ مانند خلاصهسازی سند بلند یا چندسندی، question answering روی سند بلند و code completion. مزیت این رویکرد آن است که ارزیابی را با انتظار کاربران همسو میکند.
با وجود روشهای فراوان، هنوز روش عمومی و پذیرفتهشدهای برای ارزیابی long-context LLM وجود ندارد [Liu et al., 2024c]. بسیاری از روشها تنها جنبهای خاص را میسنجند، نه توان بنیادی مدل در مدلسازی زمینههای بسیار بلند. حتی اگر LLM بتواند قطعهٔ درست را از ورودی پیدا کند، الزاماً نمیتوان گفت کل زمینه را واقعاً فهمیده است؛ ممکن است فقط چند بخش مهم را به خاطر سپرده باشد یا پاسخ را از مدل پیشآموخته بازیابی کند. افزون بر این، دادهٔ بسیاری از وظایف کوچک و مقدماتی است و میان نتیجهٔ ارزیابی و عملکرد واقعی در کاربرد فاصله ایجاد میشود. نتیجهٔ LLM به عوامل و تنظیمات آزمایشی متعدد نیز وابسته است؛ برای مثال promptهای مختلف میتوانند خروجیهای بسیار متفاوتی ایجاد کنند. در نتیجه بهبود مشاهدهشده الزاماً فقط از مدلسازی بهتر زمینهٔ بلند ناشی نمیشود و خطر اغراق در ادعاها وجود دارد. هنوز پرسشهای باز بسیاری باقی است؛ از جمله محدودیت طول context و latency بالا. مطالعهٔ این مسائل از جهتهای مهم پژوهشی آینده است.
۲.۴ جمعبندی
در این فصل مفهوم LLM و تکنیکهای مرتبط بررسی شد. این مطالب را میتوان مقدمهای عمومی، هرچند نه جامع، برای مدلهای زبانی بزرگ دانست که پایهٔ بحث موضوعات پیشرفتهتر در فصلهای بعد را میسازد. همچنین دو مسیر برای مقیاسدادن LLMها بررسی شد. مسیر نخست بر پیشآموزش در مقیاس بزرگ تمرکز دارد که برای ساخت مدلهای state-of-the-art حیاتی است. مسیر دوم روشهای سازگارکردن LLM با ورودی بلند را شامل میشود: بهینهسازی attention، ساخت KV cache کارآمدتر و فشردهتر، افزودن memory model و یافتن positional embedding بهتر.
قدرت LLM در شکستن محدودیت آموزش مدل NLP برای تعداد محدودی وظیفهٔ مشخص است. LLMها در عوض از حجم بزرگی از متن و از طریق وظیفهٔ سادهٔ token prediction یاد میگیرند: با داشتن توکنهای قبلی جمله، توکن بعدی را پیشبینی میکنیم. دیدگاه عمومی این است که با تکرار بسیار زیاد این وظیفه، LLM مقداری دانش دربارهٔ جهان و زبان به دست میآورد که سپس در وظایف جدید قابل استفاده است. در نتیجه میتوان با prompt، هر وظیفه را به شکل «پیشبینی توکنهای بعدی با توجه به prompt» صورتبندی کرد.
این توان emergent از ابعاد مختلفی مانند افزایش مقیاس آموزش، اندازهٔ مدل و اندازهٔ context ناشی میشود. scaling lawها در حال حاضر از اصول بنیادی ساخت LLMها هستند، هرچند صرفاً بزرگترکردن مدل هنوز برای دستیابی به AGI کافی اثبات نشده است. LLMهای پیوسته بزرگترشده تواناییهایی در فهم عمومی زبان، تولید و استدلال نشان دادهاند. در سالهای اخیر نیز مشخص شده است که افزایش compute در inference time میتواند در وظایف پیچیدهٔ reasoning بهبود چشمگیری ایجاد کند [OpenAI, 2024].
به دلیل توان بالای این مدلها، LLMها از نظر تکنیک و کاربرد توجه فراوانی جلب کردهاند و انفجار علاقهٔ پژوهشی به آنها شمار زیادی تکنیک و مدل جدید پدید آورده است. با توجه به تحول سریع حوزه، این کتاب قصد ارائهٔ مرور جامع همهٔ جنبههای LLM را ندارد. با این حال، مرورهای عمومی [Zhao et al., 2023; Minaee et al., 2024] و بحثهای متمرکز بر موضوعات خاص [Ruan et al., 2024] منابع تکمیلی مفیدی هستند.