3. टोकन एम्बेडिंग्स
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
टोकन एम्बेडिंग्स
टेक्स्ट डेटा को टोकनाइज़ करने के बाद, GPT जैसे LLMs को ट्रेन करने के लिए डेटा तैयार करने का अगला महत्वपूर्ण कदम टोकन एम्बेडिंग्स बनाना है। टोकन एम्बेडिंग्स अलग-अलग टोकन (जैसे शब्द या सबवर्ड्स) को निरंतर संख्यात्मक वेक्टर में बदलते हैं जिन्हें मॉडल प्रोसेस और सीख सकता है। यह व्याख्या टोकन एम्बेडिंग्स, उनकी इनिशियलाइज़ेशन, उपयोग, और टोकन अनुक्रमों की समझ बढ़ाने में positional embeddings की भूमिका को स्पष्ट करती है।
Tip
इस तीसरे चरण का लक्ष्य बहुत सरल है: वोकेबुलरी में पहले से मौजूद हर टोकन को मॉडल ट्रेन करने के लिए इच्छित आयामों का एक वेक्टर असाइन करना। वोकेबुलरी का प्रत्येक शब्द X आयामों वाले स्पेस में एक बिंदु होगा.
ध्यान दें कि शुरू में स्पेस में प्रत्येक शब्द की स्थिति सिर्फ “यादृच्छिक” रूप से आरंभ होती है और ये स्थितियाँ trainable parameters होती हैं (ट्रेनिंग के दौरान बेहतर होती जाएंगी).इसके अलावा, टोकन एम्बेडिंग के दौरान एक और लेयर ऑफ एम्बेडिंग्स बनाई जाती है जो (इस मामले में) प्रशिक्षण वाक्य में शब्द की निश्चित स्थिति (absolute position) को दर्शाती है। इस तरह एक ही शब्द वाक्य में विभिन्न स्थानों पर अलग प्रतिनिधित्व (अर्थ) रखेगा।
टोकन एम्बेडिंग्स क्या हैं?
टोकन एम्बेडिंग्स टोकन के निरंतर वेक्टर स्पेस में संख्यात्मक प्रतिनिधित्व हैं। शब्दावली के प्रत्येक टोकन के साथ एक निश्चित आयामों का अनूठा वेक्टर जुड़ा होता है। ये वेक्टर टोकन के सémांटिक और सिन्टैक्टिक जानकारी को पकड़ते हैं, जिससे मॉडल डेटा में संबंधों और पैटर्न को समझ सकता है।
- शब्दावली का आकार (Vocabulary Size): मॉडल की शब्दावली में अद्वितीय टोकनों (उदा., शब्द, सबवर्ड्स) की कुल संख्या।
- एम्बेडिंग आयाम (Embedding Dimensions): प्रत्येक टोकन के वेक्टर में संख्यात्मक मानों (आयामों) की संख्या। उच्च आयाम अधिक सूक्ष्म जानकारी पकड़ सकते हैं परन्तु अधिक गणनात्मक संसाधन मांगते हैं।
उदाहरण:
- शब्दावली का आकार: 6 टोकन [1, 2, 3, 4, 5, 6]
- एम्बेडिंग आयाम: 3 (x, y, z)
टोकन एम्बेडिंग्स का आरंभिककरण
ट्रेनिंग की शुरुआत में, टोकन एम्बेडिंग्स को सामान्यतः छोटे यादृच्छिक मानों से इनिशियलाइज़ किया जाता है। ये प्रारम्भिक मान ट्रेनिंग के दौरान समायोजित (फाइन-ट्यून) किए जाते हैं ताकि ट्रेनिंग डेटा के आधार पर टोकन के अर्थों का बेहतर प्रतिनिधित्व मिल सके।
PyTorch उदाहरण:
import torch
# Set a random seed for reproducibility
torch.manual_seed(123)
# Create an embedding layer with 6 tokens and 3 dimensions
embedding_layer = torch.nn.Embedding(6, 3)
# Display the initial weights (embeddings)
print(embedding_layer.weight)
आपने फाइल की सामग्री नहीं दी है। कृपया src/AI/AI-llm-architecture/3.-token-embeddings.md की Markdown सामग्री यहाँ पेस्ट करें, मैं इसे निर्देश के मुताबिक हिंदी में अनुवाद कर दूँगा।
luaCopy codeParameter containing:
tensor([[ 0.3374, -0.1778, -0.1690],
[ 0.9178, 1.5810, 1.3010],
[ 1.2753, -0.2010, -0.1606],
[-0.4015, 0.9666, -1.1481],
[-1.1589, 0.3255, -0.6315],
[-2.8400, -0.7849, -1.4096]], requires_grad=True)
स्पष्टीकरण:
- प्रत्येक पंक्ति शब्दावली में एक टोकन के अनुरूप होती है।
- प्रत्येक स्तंभ एम्बेडिंग वेक्टर में एक आयाम का प्रतिनिधित्व करता है।
- उदाहरण के लिए, इंडेक्स
3पर टोकन का एम्बेडिंग वेक्टर[-0.4015, 0.9666, -1.1481]है।
टोकन की एम्बेडिंग तक पहुँच:
# Retrieve the embedding for the token at index 3
token_index = torch.tensor([3])
print(embedding_layer(token_index))
मैंने अनुवाद करने के लिए कोई स्रोत सामग्री नहीं पाई। कृपया src/AI/AI-llm-architecture/3.-token-embeddings.md की Markdown सामग्री यहाँ पेस्ट करें — मैं उसे दिए गए निर्देशों के अनुसार हिंदी में अनुवाद कर दूंगा (कोड, टैग, लिंक, पाथ आदि नहीं बदलूंगा)।
tensor([[-0.4015, 0.9666, -1.1481]], grad_fn=<EmbeddingBackward0>)
व्याख्या:
- इंडेक्स
3पर टोकन का प्रतिनिधित्व वेक्टर[-0.4015, 0.9666, -1.1481]द्वारा किया जाता है। - ये मान प्रशिक्षण योग्य पैरामीटर हैं जिन्हें मॉडल प्रशिक्षण के दौरान टोकन के संदर्भ और अर्थ को बेहतर ढंग से प्रदर्शित करने के लिए समायोजित करेगा।
प्रशिक्षण के दौरान टोकन एंबेडिंग्स कैसे काम करती हैं
प्रशिक्षण के दौरान, इनपुट डेटा में प्रत्येक टोकन को उसके संबंधित एंबेडिंग वेक्टर में परिवर्तित किया जाता है। ये वेक्टर फिर मॉडल के भीतर विभिन्न गणनाओं में उपयोग होते हैं, जैसे कि अटेंशन मैकेनिज़्म और न्यूरल नेटवर्क लेयर्स।
उदाहरण परिदृश्य:
- बैच साइज: 8 (एक साथ संसाधित किये जा रहे नमूनों की संख्या)
- अधिकतम अनुक्रम लंबाई: 4 (प्रत्येक सैंपल में टोकन्स की संख्या)
- एंबेडिंग आयाम: 256
डेटा संरचना:
- प्रत्येक बैच को एक 3D टेन्सर के रूप में दर्शाया जाता है जिसका shape
(batch_size, max_length, embedding_dim)है। - हमारे उदाहरण के लिए, shape होगा
(8, 4, 256)।
दृश्यांकन:
cssCopy codeBatch
┌─────────────┐
│ Sample 1 │
│ ┌─────┐ │
│ │Token│ → [x₁₁, x₁₂, ..., x₁₂₅₆]
│ │ 1 │ │
│ │... │ │
│ │Token│ │
│ │ 4 │ │
│ └─────┘ │
│ Sample 2 │
│ ┌─────┐ │
│ │Token│ → [x₂₁, x₂₂, ..., x₂₂₅₆]
│ │ 1 │ │
│ │... │ │
│ │Token│ │
│ │ 4 │ │
│ └─────┘ │
│ ... │
│ Sample 8 │
│ ┌─────┐ │
│ │Token│ → [x₈₁, x₈₂, ..., x₈₂₅₆]
│ │ 1 │ │
│ │... │ │
│ │Token│ │
│ │ 4 │ │
│ └─────┘ │
└─────────────┘
व्याख्या:
- अनुक्रम में प्रत्येक token को 256-आयामी वेक्टर द्वारा प्रदर्शित किया जाता है।
- मॉडल इन एम्बेडिंग्स को संसाधित करके भाषा के पैटर्न सीखता है और भविष्यवाणियाँ जनरेट करता है।
Positional Embeddings: Token Embeddings में संदर्भ जोड़ना
जबकि token एम्बेडिंग्स व्यक्तिगत टोकनों का अर्थ पकड़ती हैं, वे स्वाभाविक रूप से अनुक्रम के भीतर टोकनों के स्थान को एन्कोड नहीं करतीं। टोकनों के क्रम को समझना भाषा की समझ के लिए महत्वपूर्ण है। यहीं पर positional embeddings उपयोगी होते हैं।
क्यों Positional Embeddings आवश्यक हैं:
- टोकन का क्रम महत्वपूर्ण है: वाक्यों में अर्थ अक्सर शब्दों के क्रम पर निर्भर करता है। उदाहरण के लिए, “The cat sat on the mat” vs. “The mat sat on the cat.”
- एम्बेडिंग की सीमा: positional जानकारी के बिना मॉडल टोकनों को एक “bag of words” की तरह मानता है, उनके अनुक्रम की अनदेखी करते हुए।
Positional Embeddings के प्रकार:
- Absolute Positional Embeddings:
- अनुक्रम में प्रत्येक स्थिति को एक अद्वितीय स्थिति वेक्टर आवंटित किया जाता है।
- उदाहरण: किसी भी अनुक्रम का पहला token हमेशा वही positional embedding प्राप्त करता है, दूसरा token अलग positional embedding प्राप्त करता है, और इसी तरह।
- Used By: OpenAI’s GPT models.
- Relative Positional Embeddings:
- टोकनों के बीच सापेक्ष दूरी को एन्कोड करते हैं बजाय उनके निरपेक्ष स्थानों के।
- उदाहरण: यह दर्शाते हैं कि दो टोकन आपस में कितने दूर हैं, अनुक्रम में उनकी निरपेक्ष स्थितियों की परवाह किए बिना।
- Used By: Models like Transformer-XL and some variants of BERT.
Positional Embeddings कैसे एकीकृत किए जाते हैं:
- एक ही आयाम: positional embeddings और token embeddings की आयाम समान होती है।
- जोड़: इन्हें token embeddings में जोड़ा जाता है, जिससे token पहचान positional जानकारी के साथ संयुक्त हो जाती है बिना कुल आयाम बढ़ाए।
पोजिशनल एम्बेडिंग्स जोड़ने का उदाहरण:
मान लीजिए एक token embedding वेक्टर [0.5, -0.2, 0.1] है और उसकी positional embedding वेक्टर [0.1, 0.3, -0.1] है। मॉडल द्वारा उपयोग किया गया संयुक्त एम्बेडिंग होगा:
Combined Embedding = Token Embedding + Positional Embedding
= [0.5 + 0.1, -0.2 + 0.3, 0.1 + (-0.1)]
= [0.6, 0.1, 0.0]
Positional Embeddings के लाभ:
- Contextual Awareness: मॉडल टोकनों को उनकी स्थिति के आधार पर अलग कर सकता है।
- Sequence Understanding: मॉडल को व्याकरण, सिंटैक्स और संदर्भ-निर्भर अर्थ समझने में सक्षम बनाता है।
आधुनिक LLMs में Positional Embeddings
Rotary Positional Embeddings (RoPE)
RoPE स्थिति को एन्कोड करता है by applying a position-dependent rotation to pairs of dimensions in the query/key vectors, जिससे absolute positions सापेक्ष phase भिन्नताओं में बदल जाती हैं। यह सापेक्ष स्थिति की जानकारी प्रदान करता है जबकि embedding dimensionality अपरिवर्तित रहती है, और यह हाल के decoder-only LLMs में व्यापक रूप से उपयोग होता है।
मॉडल के अंदर token और positional embeddings किस तरह संयोजित होते हैं, इसके लिए देखें the LLM architecture page.
RoPE-आधारित मॉडलों में Context Windows का विस्तार
हालिया कार्य दिखाते हैं कि context length अक्सर positional encoding स्कीम द्वारा सीमित होती है न कि token embedding matrix स्वयं द्वारा।
- Position Interpolation (PI): position indices को पुनःस्केल करता है ताकि लंबी sequences ट्रेनिंग के दौरान देखे गए रेंज में मैप हो जाएँ, जिससे न्यूनतम fine-tuning के साथ विस्तार संभव होता है। उदाहरण:
# Position Interpolation (PI) intuition
orig_ctx = 2048
new_ctx = 8192
scaled_pos = pos * (orig_ctx / new_ctx)
- YaRN: गणनात्मक रूप से कुशल RoPE एक्सटेंशन रणनीति जो RoPE scaling/interpolation को संशोधित करती है ताकि कम अतिरिक्त प्रशिक्षण चरणों के साथ लंबे संदर्भों तक पहुँच बनाई जा सके।
कोड उदाहरण
नीचे दिए गए कोड उदाहरण के अनुसार https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb:
# Use previous code...
# Create dimensional emdeddings
"""
BPE uses a vocabulary of 50257 words
Let's supose we want to use 256 dimensions (instead of the millions used by LLMs)
"""
vocab_size = 50257
output_dim = 256
token_embedding_layer = torch.nn.Embedding(vocab_size, output_dim)
## Generate the dataloader like before
max_length = 4
dataloader = create_dataloader_v1(
raw_text, batch_size=8, max_length=max_length,
stride=max_length, shuffle=False
)
data_iter = iter(dataloader)
inputs, targets = next(data_iter)
# Apply embeddings
token_embeddings = token_embedding_layer(inputs)
print(token_embeddings.shape)
torch.Size([8, 4, 256]) # 8 x 4 x 256
# Generate absolute embeddings
context_length = max_length
pos_embedding_layer = torch.nn.Embedding(context_length, output_dim)
pos_embeddings = pos_embedding_layer(torch.arange(max_length))
input_embeddings = token_embeddings + pos_embeddings
print(input_embeddings.shape) # torch.Size([8, 4, 256])
संदर्भ
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।


