शुद्ध NumPy में इम्प्लीमेंट किया गया Llama 3 मॉडल
(docs.likejazz.com)- Llama 3 मॉडल के वास्तव में काम करने वाले इम्प्लीमेंटेशन के माध्यम से इसकी सटीक संरचना को समझना
अवलोकन
- Meta द्वारा जारी किया गया Llama 3 मॉडल ध्यान आकर्षित कर रहा है।
- 24K GPUs, 15T ट्रेनिंग डेटा, 10M इंस्ट्रक्शन डेटा, 1.3M GPU घंटे आदि के साथ यह बेहद बड़े स्केल और प्रदर्शन का दावा करता है।
- मॉडल की संरचना में बहुत बड़ा बदलाव नहीं हुआ है। Llama 3, GQA का उपयोग करता है, लेकिन यह Llama 2 70B में पहले ही इम्प्लीमेंट किया जा चुका था।
- केवल NumPy का उपयोग करके इसे इस तरह इम्प्लीमेंट किया गया है कि मॉडल संरचना को सहज रूप से समझा जा सके।
- Andrej Karpathy द्वारा Llama 2 संरचना पर प्रशिक्षित
stories15Mमॉडल को NumPy compressed format में बदलकर उपयोग किया गया है।
संरचना
- Llama 3 मॉडल की संरचना 42dot LLM के समान है।
- मॉडल पैरामीटर:
dim: 288n_layers: 6n_heads: 6vocab_size: 32000max_seq_len: 256max_new_tokens: 50
RoPE #1
- RoPE embedding के लिए
cosऔरsinको पहले से गणना किया जाता है। - इन मानों का उपयोग
QऔरKमें किया जाता है। - गणना का परिणाम
np.outerसे गुणा किया जाता है, औरcosतथाsinकी गणना की जाती है।
RMSNorm
- RMSNorm पारंपरिक Mini Batch या Layer statistics के बजाय activation values को Root Mean Square से normalize करता है।
- यह activation scaling को सुसंगत बनाए रखता है।
QKV
- QKV की गणना GPT की तरह एक ही weight पर
matmulकरके बाद में विभाजित करने के बजाय, Llama में Q, K, V के लिए अलग-अलग weights होते हैं। - Multi-Head Attention के लिए प्रत्येक मान को पुनर्गठित किया जाता है।
RoPE #2
- RoPE में absolute और relative positional encoding दोनों की विशेषताएँ होती हैं।
- यह केवल Q और K पर लागू होता है; इनपुट को विभाजित करके
cosऔरsinसे गुणा किया जाता है, फिर परिणामों को जोड़-घटा कर दोबारा संयोजित किया जाता है।
KV कैश
- GPT-शैली के generation models Masked Attention का उपयोग करते हैं, इसलिए KV cache संभव है।
- पिछले परिणाम हमेशा समान रहते हैं, इसलिए K और V को cache किया जाता है और Q के लिए केवल अंतिम मान की गणना की जाती है।
GQA(Grouped-Query Attention)
- GQA, Llama 2 में पेश की गई तकनीक है, जो memory बचत और performance improvement दोनों प्रदान करती है।
- Llama 3 में 8B से बड़े सभी मॉडलों पर GQA लागू है।
Scaled Dot-Product Attention
- Multi-Head Attention के रूप में प्रत्येक attention की गणना की जाती है।
- परिणाम
softmaxऔरmatmulसे प्राप्त होता है।
Feed Forward
- Llama मॉडल का Feed Forward, bias के बिना 3 linear layers का उपयोग करता है।
- यह swish मान उत्पन्न करता है, उसे
x_Vके साथ गुणा करता है, और फिर दोबारा downscale करता है।
SwiGLU
- SwiGLU कई feed-forward layers के एक अनोखे संयोजन के रूप में मॉडल प्रदर्शन को बेहतर बनाता है।
Linear
- अंतिम output में केवल आखिरी logit पर
matmulकिया जाता है ताकि गति बढ़ाई जा सके।
जनरेशन
- निकाले गए logit का उपयोग करके tokens को एक-एक करके generate किया जाता है।
- इसे Prefill Phase और Decode Phase में विभाजित किया गया है।
- Prefill Phase में पूरा input दिया जाता है, और Decode Phase में केवल अंतिम token ID देकर परिणाम प्राप्त किया जाता है।
उदाहरण
- इसे निम्न प्रकार चलाया जा सकता है:
$ python llama3.py "I have a dream"
GitHub
- पूरा source code likejazz/llama3.np पर उपलब्ध है।
संदर्भ साहित्य
- Exploring and Building the Llama 3 Architecture
- Rotation Matrix
- Mastering LLM Techniques: Inference Optimization
- arXiv:2305.13245
GN⁺ की राय
- Llama 3 मॉडल की संरचना और प्रदर्शन: Llama 3 मॉडल, मौजूदा Llama 2 संरचना को बनाए रखते हुए भी प्रदर्शन में बड़ा सुधार करता है। यह मॉडल की scalability और efficiency, दोनों को ध्यान में रखने का परिणाम है।
- NumPy में इम्प्लीमेंट करने का कारण: NumPy का उपयोग करके मॉडल को इम्प्लीमेंट करने से उसकी संरचना और कार्यप्रणाली को अधिक सहज रूप से समझा जा सकता है। यह सीखने वालों और शोधकर्ताओं, दोनों के लिए बहुत उपयोगी है।
- GQA का परिचय: GQA ऐसी तकनीक है जो memory बचत और performance improvement दोनों एक साथ देती है, और Llama 3 में इसे सभी मॉडलों पर लागू करके मॉडल की efficiency को अधिकतम किया गया है।
- KV cache का महत्व: KV cache, GPT-शैली के generation models में महत्वपूर्ण भूमिका निभाता है, और इसके माध्यम से मॉडल की computational efficiency को काफी बढ़ाया जा सकता है।
- वास्तविक उपयोग उदाहरण: example code के माध्यम से मॉडल को वास्तव में चलाकर देखा जा सकता है, जो इसके प्रदर्शन को सीधे परखने का अच्छा अवसर है।
1 टिप्पणियां
Hacker News पर पोस्ट अंग्रेज़ी में है, लेकिन इसे मूल लेखक Likejazz द्वारा कोरियाई में लिखे गए लिंक से बदल दिया गया है.