English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

guest
1 / ?
back to lessons

एम्बेडिंग एक लुकअप है, न कि एक फंक्शन

टोकनाइज़र के बाद पहली लेयर

एक टोकनाइज़र मॉडल को पूर्णांक आईडी देता है: [256, 1842, 7301, ...]। ट्रांसफॉर्मर सबसे पहले प्रत्येक आईडी को d_model फ्लोट्स के वेक्टर में बदलता है। वह वेक्टर d_model-आयामी स्पेस में रहता है (ANDREA-120M के लिए 768 आयाम)।


एक एम्बेडिंग लेयर एक लुकअप टेबल है, न कि एक फंक्शन। एक विशाल मैट्रिक्स की कल्पना करें:


आकार: (V, d_model)
पंक्ति 0:    [e_0_0, e_0_1, ..., e_0_767]
पंक्ति 1:    [e_1_0, e_1_1, ..., e_1_767]
...
पंक्ति 8448: [e_8448_0, e_8448_1, ..., e_8448_767]

Token ID i selects row i. Direct array access. No arithmetic, no activation. Just an index. [BLOCK_TYPE SECTION/STEP]


Token & position embedding flow [BLOCK_TYPE SECTION/STEP]


Trainable Floats
[BLOCK_TYPE SECTION/STEP]

Every entry in that table starts as a small random float (typically drawn from a normal distribution scaled by 1/sqrt(d_model)). Backpropagation updates each row whenever its token ID appears in a batch. After training, similar tokens (cat, dog, pet) end up with similar vectors; unrelated tokens (cat, Tuesday, xylophone) sit far apart in vector space. [BLOCK_TYPE SECTION/STEP]


ANDREA-120M टोकन एम्बेडिंग लागत
[BLOCK_TYPE SECTION/STEP]

[BLOCK_TYPE SECTION/STEP]

| मात्रा | मान | [BLOCK_TYPE SECTION/STEP]

|------------|-----------| [BLOCK_TYPE SECTION/STEP]

| V | 8,449 | [BLOCK_TYPE SECTION/STEP]

| d_model | 768 | [BLOCK_TYPE SECTION/STEP]

| पैरामीटर्स | 6,488,832 | [BLOCK_TYPE SECTION/STEP]


टोकन एम्बेडिंग टेबल में लगभग 6.5M पैरामीटर रहते हैं, जो ANDREA-120M के कुल पैरामीटर का लगभग 5.4% है। प्रत्येक शब्दावली स्लॉट को ये 768 फ्लोट प्राप्त होते हैं।

एम्बेडिंग टेबल का आकार निर्धारण

दो भविष्य के वेरिएंट के लिए टोकन एम्बेडिंग पैरामीटर गणना करें। (a) ANDREA-480M: V = 16,641 (एक 16,384-सेगमेंट टोकनाइज़र प्लस 256 बाइट्स प्लस 1 BOS), d_model = 1536. (b) ANDREA-12M: V = 4,353, d_model = 384. प्रत्येक के लिए V × d_model अंकगणित दिखाएँ।

डॉट प्रोडक्ट समानता मापते हैं

वेक्टर तीरों के रूप में

एक 768-आयामी वेक्टर एक ऐसे स्थान में रहता है जिसे मनुष्य चित्रित नहीं कर सकते, लेकिन वही बीजगणित किसी भी आयाम में काम करता है। ट्रांसफॉर्मर्स के लिए दो मुख्य संक्रियाएँ महत्वपूर्ण हैं:


परिमाण (तीर की लंबाई):


||v|| = sqrt(v_0² + v_1² + ... + v_767²)

डॉट प्रोडक्ट (दो तीरों के बीच संरेखण):


u · v = u_0 × v_0 + u_1 × v_1 + ... + u_767 × v_767

डॉट प्रोडक्ट आपको क्या बताता है

किसी भी आयाम में सत्य दो तथ्य:


- u · v = ||u|| × ||v|| × cos(theta), जहाँ theta उनके बीच का कोण है।

- एक ही दिशा में इंगित करने वाले सदिश बड़े धनात्मक डॉट उत्पाद देते हैं।

- विपरीत दिशाओं में इंगित करने वाले सदिश बड़े ऋणात्मक डॉट उत्पाद देते हैं।

- समकोण पर स्थित सदिशों का डॉट उत्पाद शून्य होता है।


डॉट उत्पाद = असामान्यीकृत समानता। cat और dog के लिए प्रशिक्षित टोकन एम्बेडिंग्स का डॉट उत्पाद उच्च होता है क्योंकि बैकप्रोपेगेशन ने उन्हें एक साथ धकेल दिया (दोनों पालतू जानवर संबंधी संदर्भों की भविष्यवाणी करते हैं)। cat और Tuesday लगभग लंबकोणीय हो जाते हैं क्योंकि वे भिन्न संदर्भों की भविष्यवाणी करते हैं।


ट्रांसफॉर्मर को क्यों ध्यान देना पड़ता है

Activity 5 (grow_a_language_model_attention) डॉट प्रोडक्ट्स से attention बनाता है: एक query vector को key vectors के साथ डॉट-प्रोडक्ट किया जाता है, जिससे स्कोर मिलते हैं जो बताते हैं कि अगला टोकन प्रेडिक्ट करने के लिए कौन-से पिछले टोकन महत्वपूर्ण हैं। Embeddings और डॉट प्रोडक्ट्स मिलकर ट्रांसफॉर्मर के अंदर हर इंटरैक्शन को संभालते हैं।

समानता का अनुमान लगाएं

ट्रेनिंग के बाद, ANDREA-120M का `believ` (token row 4287, काल्पनिक) के लिए embedding `know`, `understand`, `learn` के साथ लगभग संरेखित हो जाता है। बिना सटीक मानों की गणना किए, सबसे बड़े डॉट प्रोडक्ट से सबसे छोटे तक का क्रम बताएं: `believ · know`, `believ · stone`, `believ · understand`। प्रत्येक जोड़ी के लिए एक वाक्यांश में अपना क्रम सही ठहराएं।

ANDREA सीखे हुए पोज़िशन एम्बेडिंग्स का उपयोग करता है

एक समस्या

एक टोकन एम्बेडिंग मॉडल को बताती है कि इस पोज़िशन पर कौन-सा शब्द है। यह मॉडल को यह नहीं बताती कि वह शब्द कहाँ स्थित है। बिना पोज़िशन जानकारी के, एक ट्रांसफ़ॉर्मर the cat sat on a mat और mat a on sat cat the को समान रूप से देखता है: टोकनों का एक ही सेट, कोई क्रम संकेत नहीं।


ट्रांसफ़ॉर्मर साहित्य में तीन समाधान मौजूद हैं:


साइनसॉइडल (Vaswani 2017). साइन और कोसाइन पर आधारित एक निश्चित गणितीय सूत्र। पोज़िशन 0 को एक विशिष्ट 768-वेक्टर मिलता है; पोज़िशन 1 को दूसरा; कभी प्रशिक्षित नहीं, कभी अपडेट नहीं। सूत्र के माध्यम से किसी भी पोज़िशन पर सामान्यीकरण करता है।


RoPE (Rotary Position Embedding). क्वेरी और की वेक्टर को पोज़िशन के आधार पर घुमाता है। LLaMA और Qwen में इस्तेमाल होता है। कोई अतिरिक्त पैरामीटर नहीं; रोटेशन अटेंशन में ही बिल्ट-इन है।


Learned. एक अलग एम्बेडिंग टेबल जिसका आकार (T, d_model) है, जहाँ T संदर्भ लंबाई है। प्रत्येक पंक्ति टोकन एम्बेडिंग की तरह बैकप्रोपेगेशन द्वारा ट्रेन होती है।


ANDREA's Choice: Learned

ANDREA microGPT से learned-position दृष्टिकोण विरासत में लेता है, जो nanoGPT से आया, जो GPT-2 से आया। एक तर्क:


- सरलता. अटेंशन में कोई विशेष गणित नहीं। एक पोज़िशन टेबल टोकन टेबल जैसी ही दिखती है।

- कस्टम CUDA के साथ संगतता. ANDREA का microgpt_cuda.cu इंजन दो एम्बेडिंग लुकअप को समान रूप से हैंडल करता है; sin/cos कर्नेल की आवश्यकता नहीं।

- निश्चित संदर्भ के लिए पर्याप्त. ANDREA T को 1024 पर सीमित करता है। सीमित-लंबाई वाले अनुक्रमों के लिए एक सीखी हुई टेबल ठीक काम करती है।


ANDREA-120M पोज़िशन एम्बेडिंग लागत


मात्रामान
T (context)1,024
d_model768
Parameters786,432

0.79M parameters for position. Combined with token embeddings: 6.49M + 0.79M = 7.27M embedding parameters total for ANDREA-120M.


How They Combine

At each position t in an input sequence:


x_t = token_embedding[token_id_t] + position_embedding[t]

दो 768-वेक्टर, एलिमेंट-वाइज़ जोड़े गए। परिणाम, x_t, पहले ट्रांसफॉर्मर ब्लॉक में जाता है। मॉडल उन्हें कभी अलग नहीं करता; यह संयुक्त सिग्नल का उपयोग करना सीखता है।

लर्न्ड बनाम साइनुसॉइडल

एक काल्पनिक ANDREA मॉडल के लिए दो पोज़िशन एम्बेडिंग रणनीतियों की तुलना करें। रणनीति A: लर्न्ड, T = 1024। रणनीति B: साइनुसॉइडल, T मनमाना (किसी भी अनुक्रम लंबाई के लिए काम करता है)। प्रत्येक का एक लाभ बताएं। फिर बताएं कि ANDREA कौन-सी चुनता है और CUDA / इंजीनियरिंग दृष्टिकोण से एक कारण बताएं।

जहाँ एम्बेडिंग पैरामीटर रहते हैं

एक पूर्ण ANDREA-120M एम्बेडिंग लेयर


घटकआकारपैरामीटर
टोकन एम्बेडिंग तालिका8,449 × 7686,488,832
पोज़िशन एम्बेडिंग तालिका1,024 × 768786,432
कुल7,275,264

लगभग 7.3M पैरामीटर। ANDREA-120M की कुल पैरामीटर संख्या: ~120M। एम्बेडिंग लेयर अकेले: 6%। शेष 94% ट्रांसफॉर्मर ब्लॉक्स में रहता है (attention + MLP, गतिविधियों 5-7 में कवर किया गया)।


अनटाइड बनाम टाइड एम्बेडिंग्स

कई ट्रांसफॉर्मर डिज़ाइन (GPT-2 सहित) एक टोकन एम्बेडिंग को अंतिम आउटपुट प्रोजेक्शन से जोड़ते हैं: इनपुट और आउटपुट (शब्दावली पर logits) दोनों पर समान V × d_model मैट्रिक्स का उपयोग किया जाता है। जोड़ने से V × d_model पैरामीटर बचते हैं और अक्सर गुणवत्ता भी सुधारती है।


ANDREA untied embeddings का उपयोग करता है: इनपुट एम्बेडिंग और आउटपुट प्रोजेक्शन अलग-अलग मैट्रिक्स के रूप में ट्रेन होते हैं। Activity 7 (grow_a_language_model_transformer_block) अंतिम लेयर को कवर करता है।


अब तक का फॉरवर्ड पास

इनपुट: टोकन IDs [256, 1842, 7301, ...] (इनमें से 1024)। प्रत्येक ID एक 768-वेक्टर खोजता है। प्रत्येक पोज़िशन एक 768-वेक्टर खोजती है। एलिमेंट-वाइज़ जोड़ें। परिणाम: टोकन-+-पोज़िशन वेक्टर का (1024, 768) मैट्रिक्स x। x ट्रांसफॉर्मर ब्लॉक 1 में जाता है।


Activity 5 (grow_a_language_model_attention) कवर करता है कि ब्लॉक 1 क्या करता है: causal mask और softmax के साथ scaled dot-product attention।

एम्बेडिंग संरचना का पूर्वानुमान

चिंतन करें: ANDREA-120M में 8449 टोकन एम्बेडिंग्स और 1024 पोज़िशन एम्बेडिंग्स हैं, जो एक ही 768-आयामी स्पेस को साझा करते हैं। प्रशिक्षण के बाद, आप क्या अपेक्षा करेंगे: (a) एक टोकन एम्बेडिंग मैट्रिक्स कैसा दिखेगा (क्लस्टर पैटर्न?), या (b) एक पोज़िशन एम्बेडिंग मैट्रिक्स कैसा दिखेगा (स्मूथ ग्रेडिएंट?)? एक चुनें और एक या दो वाक्यों में पूर्वानुमान करें। कोई गलत जवाब नहीं; तर्क मायने रखता है।