स्टेप 2 · एम्बेडिंग्स और पोज़ीशन
टोकन ids को वेक्टर्स में बदलना, और मॉडल को यह बताना कि वे किस क्रम में आए थे। दो लुकअप टेबल, एक बारीक आइडिया।
60 सेकंड में
स्टेप 2 · एम्बेडिंग्स और पोज़ीशन
टोकन ids को वेक्टर्स में बदलना, और मॉडल को यह बताना कि वे किस क्रम में आए थे। दो लुकअप टेबल, एक बारीक आइडिया।
import torch, torch.nn as nn
vocab_size, d_model = 50257, 768
tok_emb = nn.Embedding(vocab_size, d_model) # a (50257, 768) lookup table
ids = torch.tensor([[15496, 995, 0]]) # batch 1, sequence 3
x = tok_emb(ids) # -> (1, 3, 768)nn.Embedding एक मैट्रिक्स है जहाँ रो (row) i, टोकन i का वेक्टर होती है, और यह लुकअप डिफरेंशिएबल (differentiable) होता है, इसलिए ट्रेनिंग इन रो को तब तक इधर-उधर खिसकाती रहती है जब तक कि मिलते-जुलते टोकन एक-दूसरे के पास न आ जाएँ।क्रम की समस्या
| तरीका | यह कैसे काम करता है | किसके द्वारा इस्तेमाल किया गया |
|---|---|---|
| सीखा हुआ ऐब्सोल्यूट (Learned absolute) | एक दूसरी लुकअप टेबल जिसे पोज़ीशन 0,1,2… से इंडेक्स किया जाता है | GPT-2, BERT |
| साइनसॉइडल (Sinusoidal) | अलग-अलग फ़्रीक्वेंसी की तय साइन (sine) और कोसाइन (cosine) तरंगें | ओरिजिनल ट्रांसफ़ॉर्मर पेपर |
| RoPE (रोटरी) | क्वेरी (query) और की (key) वेक्टर्स को पोज़ीशन के अनुपात वाले कोण (angle) पर घुमाना | Llama, Mistral, Qwen, ज़्यादातर मॉडर्न मॉडल्स |
| ALiBi | अटेंशन स्कोर्स में सीधे एक दूरी की पेनल्टी (distance penalty) जोड़ना | कुछ लंबे-कॉन्टेक्स्ट वाले मॉडल्स |
RoPE क्यों जीता
def rope_frequencies(head_dim, seq_len, base=10000.0, device="cpu"):
# one angular frequency per pair of dimensions
inv = 1.0 / (base ** (torch.arange(0, head_dim, 2, device=device).float() / head_dim))
pos = torch.arange(seq_len, device=device).float()
ang = torch.outer(pos, inv) # (seq_len, head_dim/2)
return torch.cos(ang), torch.sin(ang)
def apply_rope(x, cos, sin):
# x: (batch, heads, seq, head_dim) -- rotate each adjacent pair of dims
x1, x2 = x[..., 0::2], x[..., 1::2]
cos, sin = cos[None, None], sin[None, None]
out1 = x1 * cos - x2 * sin
out2 = x1 * sin + x2 * cos
return torch.stack((out1, out2), dim=-1).flatten(-2)एम्बेडिंग्स क्या नहीं हैं
- वे मतलबों की कोई डिक्शनरी नहीं हैं। एक टोकन वेक्टर महज़ एक शुरुआत होती है जिसे बाद की हर लेयर कॉन्टेक्स्ट के हिसाब से दोबारा लिखती है।
- मशहूर "king − man + woman ≈ queen" वाला हिसाब पुराने वर्ड-वेक्टर मॉडलों से आया था। ट्रांसफ़ॉर्मर टोकन एम्बेडिंग्स को अलग से समझ पाना कहीं ज़्यादा मुश्किल होता है।
- एम्बेडिंग और आउटपुट लेयर्स अक्सर टाई (tied) होती हैं — यानी वही मैट्रिक्स, ट्रांस्पोज़ होकर, लॉगिट्स (logits) बनाती है। इससे पैरामीटर्स बचते हैं और आमतौर पर यह मददगार होता है।
और देखें और पढ़ें
लैब
पोज़ीशन एनकोडिंग, और इसे हटाने पर होने वाली गड़बड़ी।
समस्या
# Prove attention is permutation-invariant without positions
x = torch.randn(1, 5, 64)
perm = torch.randperm(5)
assert torch.allclose(attn(x).sum(1), attn(x[:, perm]).sum(1), atol=1e-5)आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1RoPE फ़्रीक्वेंसीज़ को रीस्केल करने से बिना किसी रीट्रेनिंग के कॉन्टेक्स्ट बढ़ जाता है। यह काफ़ी क्यों नहीं है, और मॉडल में असल में किस चीज़ की कमी रह जाती है?दिखाएं
अक्सर पूछे जाने वाले सवाल
d_model कितना बड़ा होना चाहिए?
यह मॉडल के साथ बढ़ता है। मोटे तौर पर: सिखाने वाले एक छोटे से मॉडल के लिए 128–384, GPT-2 small के लिए 768, 7B मॉडल के लिए 4096, और सबसे बड़े (frontier) स्केल पर 8192+। यह अटेंशन हेड्स की संख्या से विभाज्य (divisible) होना चाहिए।
क्या ये सर्च के लिए इस्तेमाल होने वाली सेंटेंस एम्बेडिंग्स जैसी ही हैं?
एक ही नाम वाली अलग-अलग चीज़ें। रिट्रीवल (Retrieval) एम्बेडिंग्स पूरे पैसेज को एक वेक्टर के रूप में दिखाती हैं, जिसे समानता (similarity) के लिए ट्रेन किए गए मॉडल द्वारा बनाया जाता है। टोकन एम्बेडिंग्स किसी जनरेटिव मॉडल के लिए प्रति-टोकन इनपुट होती हैं।
छोटे मॉडल्स में एम्बेडिंग टेबल का दबदबा क्यों होता है?
50k की वोकैबुलरी और 768 d_model के साथ, अकेले वह टेबल ही 38M पैरामीटर्स की होती है। 100M-पैरामीटर वाले मॉडल में यह कुल का एक तिहाई हिस्सा होती है। यही वजह है कि छोटे मॉडल अक्सर छोटी वोकैबुलरी का इस्तेमाल करते हैं।
क्या मैं सीखे गए पोज़ीशन्स (learned positions) वाले मॉडल में RoPE जोड़ सकता हूँ?
काफ़ी दोबारा ट्रेनिंग (retraining) के बिना नहीं। पोज़ीशन एनकोडिंग इस बात में गहराई से रची-बसी होती है कि हर अटेंशन हेड ने क्या सीखा है। बदलने के तरीके मौजूद हैं और वे सभी अनुमानित (approximate) हैं।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।