- एक टेंसर और matrix multiplication के ज़रिए Llama3 को शुरुआत से इम्प्लीमेंट किया गया है।
- Meta द्वारा उपलब्ध कराई गई Llama3 मॉडल फ़ाइल से टेंसर सीधे लोड किए गए हैं।
LLaMA-3 मॉडल के scratch implementation का सारांश
Tokenizer सेटअप
- Tiktoken लाइब्रेरी का उपयोग करके tokenizer सेटअप किया गया है।
- special tokens को परिभाषित कर tokenizer में जोड़ा गया है।
मॉडल फ़ाइल पढ़ना
- PyTorch का उपयोग करके मॉडल फ़ाइल(
consolidated.00.pth) लोड की गई है।
- मॉडल का configuration
params.json फ़ाइल से पढ़ा गया है।
- इसमें dimensions (
dim), layers की संख्या (n_layers), heads की संख्या (n_heads) जैसी जानकारी शामिल है।
टेक्स्ट को tokens में बदलना
- prompt text को tokenizer की मदद से token sequence में बदला गया है।
- हर token को उसके संबंधित embedding में बदला गया है।
- embeddings को RMS normalization का उपयोग करके normalize किया गया है।
Attention इम्प्लीमेंटेशन
- query (
wq), key (wk), value (wv), और output (wo) matrices मॉडल से लोड किए गए हैं।
- हर token के लिए query, key, और value vectors की गणना की गई है।
- RoPE (Rotary Positional Embedding) का उपयोग करके positional information जोड़ी गई है।
- query और key के dot product की गणना करके attention scores निकाले गए हैं।
- future tokens के लिए attention scores को mask किया गया है।
- Softmax function लागू करके attention distribution निकाली गई है।
- attention distribution और value vectors को गुणा करके attention result निकाला गया है।
Multi-head Attention
- सभी attention heads के लिए attention calculation की गई है।
- हर head के परिणामों को जोड़कर (concatenate) अंतिम attention result बनाया गया है।
Feedforward Network
- SwiGLU (Swish Gated Linear Unit) activation function का उपयोग करने वाला feedforward network इम्प्लीमेंट किया गया है।
- attention result और feedforward network के output को जोड़कर अंतिम embedding बनाई गई है।
पूरे layer पर दोहराव
- सभी transformer layers के लिए attention और feedforward network calculation को दोहराया गया है।
- अंतिम embedding पर RMS normalization लागू किया गया है।
Token prediction
- अंतिम embedding को output matrix से गुणा करके logits निकाले गए हैं।
- logits में सबसे अधिक मान वाले token को अगले token के रूप में predict किया गया है।
- predicted token को decode करके output दिया गया है।
GN⁺ की राय
- यह लेख Llama3 मॉडल की आंतरिक संरचना और उसके काम करने के तरीके को समझने में बहुत उपयोगी है। खास तौर पर, शुरुआत से इम्प्लीमेंटेशन की प्रक्रिया के माध्यम से यह स्पष्ट होता है कि मॉडल के अलग-अलग components कैसे एक-दूसरे के साथ काम करते हैं।
- शुरुआती software engineers के लिए यह थोड़ा जटिल हो सकता है। हालांकि, इसे चरण-दर-चरण अच्छी तरह समझाया गया है, इसलिए धीरे-धीरे पढ़ने पर इसे समझा जा सकता है।
- RoPE (Rotary Positional Embedding) जैसे उन्नत concepts को शामिल करके यह दिखाया गया है कि मॉडल का performance कैसे बेहतर किया जा सकता है। यह अन्य NLP models को इम्प्लीमेंट या बेहतर बनाने में उपयोगी हो सकता है।
- इस लेख के ज़रिए deep learning models की आंतरिक संरचना और उनके काम करने के तरीके को गहराई से समझा जा सकता है। यह मॉडल optimization या debugging के समय बहुत मददगार होगा।
1 टिप्पणियां
अन्या काफ़ी प्यारी है।