भाषा मॉडल क्या भविष्यवाणी करता है
एक प्रोबेबिलिस्टिक निरंतरता इंजन
एक भाषा मॉडल टोकन की एक श्रृंखला लेता है & अगला टोकन क्या आएगा, इस पर एक प्रायिकता वितरण सौंपता है। इसे the cat sat on the दें & यह पूरे शब्दकोश पर प्रायिकताएँ आउटपुट करता है: mat, floor, couch पर उच्च द्रव्यमान; xylophone, Tuesday पर निम्न द्रव्यमान।
उस वितरण से सैंपलिंग करके, एक टोकन जोड़कर, & इसे वापस फीड करके: वह लूप एक-एक टोकन पर टेक्स्ट उत्पन्न करता है। ऑटोरिग्रेसिव जेनरेशन, नामित इसलिए क्योंकि प्रत्येक चरण अपनी पूर्व आउटपुट पर रिग्रेस करता है।
तीन संख्याएँ एक भाषा मॉडल को परिभाषित करती हैं
शब्दकोश का आकार (V). मॉडल कितने भिन्न टोकन उत्पन्न कर सकता है। ANDREA-12M ने 4,353 टोकन का उपयोग किया; ANDREA-120M 8,449 का उपयोग करता है।
संदर्भ विंडो (T). एक फॉरवर्ड पास में कितने टोकन समा सकते हैं। ANDREA मॉडल T = 1,024 का उपयोग करते हैं।
पैरामीटर की संख्या (P). अंदर कितने सीखे गए वजन रहते हैं। 12M, 120M, & 480M P के आधार पर एक परिवार का नाम रखते हैं।
तीन का परिवार
| प्रकार | d_model | हेड्स | लेयर्स | संदर्भ | पैरामीटर्स |
|---|---|---|---|---|---|
| ANDREA-12M | 384 | 12 | 6 | 1024 | 12.8M |
| ANDREA-120M | 768 | 12 | 12 | 1024 | ~120M |
| ANDREA-480M | 1536 | 24 | 16 | 1024 | ~480M |
तीन नॉब्स स्केल: d_model (हर आंतरिक वेक्टर की चौड़ाई), n_layer (स्टैक्ड ट्रांसफॉर्मर ब्लॉक्स की गहराई), n_head (समानांतर अटेंशन प्रोजेक्शन्स)। शब्दावली और संदर्भ परिवार में स्थिर रहते हैं।
परिवार तालिका पढ़ना
छोटे का महत्व क्यों
बाधा के रूप में मुक्ति
सैकड़ों अरबों पैरामीटर्स वाले बड़े भाषा मॉडल्स को हजारों GPUs, मालिकाना डेटासेट्स, और कॉर्पोरेट बजट्स की आवश्यकता होती है। बहुत कम लोग एक को प्रशिक्षित कर पाते हैं। बहुत कम लोग एक को ठीक कर पाते हैं।
एक GPU पर छोटा भाषा मॉडल इसे उलट देता है। कोई भी व्यक्ति जिसके पास 4090 (या 3060) है, ओपन डेटा से ANDREA को पुनरुत्पादित कर सकता है। प्रशिक्षण रेसिपी मॉडल कार्ड के रूप में दोगुनी हो जाती है। ओपन कोड, ओपन वेट्स, ओपन डेटा; 72 घंटों के कम्प्यूट में पूर्ण उत्पत्ति।
क्षमता बनाम गुणवत्ता
छोटे मॉडल्स अपने प्रशिक्षण कॉर्पस को याद नहीं रख सकते। ANDREA-12M, 12.8M पैरामीटर्स के साथ, तथ्यात्मक सामग्री को संग्रहीत करने की क्षमता की कमी है; यह टर्न संरचना, शब्दावली वितरण, और प्रतिक्रिया आकार सीखता है। ANDREA-120M, 10× क्षमता के साथ, तथ्यात्मक स्मरण, बहु-अनुच्छेद सुसंगतता, और डोमेन चौड़ाई सीखता है (बायोलॉजी और सिग्नल-प्रोसेसिंग सैंपल्स पर बाहरी ग्रेडिंग के माध्यम से 9.5/10 पर सत्यापित)।
मुख्य बिंदु: क्षमता एक सीमा निर्धारित करती है। पाठ्यक्रम तय करता है कि क्या यह सीमा प्राप्त हो जाती है। गतिविधियाँ 14-23 पाठ्यक्रम को कवर करती हैं। [TITLE decoder_only/]
ट्रांसफॉर्मर के तीन स्वाद
एनकोडर, डिकोडर, दोनों
मूल ट्रांसफॉर्मर (Vaswani et al., 2017) एक एनकोडर और एक डिकोडर के साथ आया, जो अनुवाद के लिए जोड़े गए थे। तीन वास्तुशिल्प वंशावली उस पेपर से उतरती हैं:
एनकोडर-ओनली (BERT वंशावली)। द्विदिशात्मक ध्यान, कोई कारण मास्क नहीं। वर्गीकरण के लिए अनुकूलित, उत्पन्न करने के लिए नहीं। प्रशिक्षण के दौरान एक टोकन अपना अतीत और भविष्य दोनों देखता है।
एनकोडर-डिकोडर (T5, BART)। एनकोडर इनपुट को पढ़ता है; डिकोडर आउटपुट उत्पन्न करता है, क्रॉस-अटेंशन के माध्यम से एनकोडर पर ध्यान देकर। अनुवाद, सारांशण के लिए उपयोग किया जाता है।
डिकोडर-ओनली (GPT, ANDREA)। कैजुअल मास्क: हर टोकन केवल अपने अतीत को देखता है। अगले टोकन की भविष्यवाणी करने के लिए प्रशिक्षित। पीढ़ी मुफ्त आती है; प्रशिक्षण और इन्फरेंस एक ही फॉरवर्ड पास साझा करते हैं।
एक GPU पर डिकोडर-ओनली क्यों जीतता है
तीन कारण:
1. एकल उद्देश्य। अगले-टोकन भविष्यवाणी किसी भी पाठ पर काम करती है। कोई जोड़ी गई स्रोत/लक्ष्य की आवश्यकता नहीं।
2. प्रशिक्षण और अनुमान सममिति। एक ही आगे पास, कोई विशेष पीढ़ी तर्क नहीं।
3. स्मृति सरलता। कोई क्रॉस-अटेंशन नहीं; एक स्टैक परतें; एक प्रवाह सक्रियण।
ANDREA microGPT से decoder-only विकल्प को विरासत में लेता है, जो nanoGPT से विरासत में लिया गया था, जो GPT-2 से विरासत में लिया गया था। वंशावली मानक बनी रहती है; जो बदलता है वह टोकनाइजेशन, प्रशिक्षण अवसंरचना, और पाठ्यक्रम में रहता है।
ANDREA के लिए केवल डिकोडर क्यों
24 GB में क्या फिट होता है
पैरामीटर प्रति बाइट्स
एक RTX 4090 में 24 GB VRAM आता है। ANDREA-12M प्रशिक्षण ने 1.4 GB का उपयोग किया। ANDREA-120M ने काफी अधिक उपयोग किया। यह अंतर एक साधारण लेखा व्यायाम से आता है: प्रशिक्षण के दौरान हर पैरामीटर मेमोरी में कई बार दिखाई देता है।
प्रत्येक पैरामीटर के लिए, प्रशिक्षण रखता है:
- वजन स्वयं (1× वजन)
- Adam पहला क्षण (m): वजन के समान आकार (1× वजन)
- Adam दूसरा क्षण (v): वजन के समान आकार (1× वजन)
- ग्रेडिएंट्स: वजन के समान आकार (1× वजन)
- एक्टिवेशन्स और अस्थायी: ~2-4× वजन (बैच और संदर्भ के साथ भिन्न)
कुल: ~6-8× वजन की संख्या, प्रिसिजन द्वारा निर्धारित बाइट्स में।
प्रिसिजन सब कुछ को गुणा करता है
| परिशुद्धता | बाइट्स/पैरामीटर | 120M वेट्स के लिए कुल | टिप्पणियाँ |
|---|---|---|---|
| FP32 | 4 | 480 MB | आधारभूत; सबसे सुरक्षित, सबसे धीमा |
| FP16 | 2 | 240 MB | cuBLAS, आधी मेमोरी |
| FP8 E4M3 | 1 | 120 MB | टेंसर कोर, NaN जोखिम |
पूर्ण प्रशिक्षण-समय फुटप्रिंट के लिए 6-8× से गुणा करें। ANDREA-120M FP16 में आराम से प्रशिक्षित होता है (~2 GB वेट्स + ऑप्टिमाइज़र + ग्रेड्स के लिए); FP8 E4M3 RTX 4090 टेंसर कोर पर प्रशिक्षण समय को आधा कर देता है।
गतिविधि 13 (grow_a_language_model_precision) FP परिशुद्धता के व्यापार-बंदों को विस्तार से समझाती है।
ANDREA-120M के ऑप्टिमाइज़र स्टेट का आकार निर्धारण
पच्चीस गतिविधियाँ
दो हिस्से
यह कोर्स स्पष्ट रूप से दो भागों में विभाजित है। पहला हिस्सा microGPT ने क्षेत्र को सिखाया: एक ट्रांसफॉर्मर जो एक GPU पर चलता है। दूसरा हिस्सा ANDREA का वास्तविक योगदान कवर करता है: एक पाठ्यक्रम जो सीखता है।
हिस्सा 1: एक GPU पर ट्रांसफॉर्मर (गतिविधियाँ 2-13)
| # | गतिविधि | बीट |
|---|---|---|
| 2 | हैरिस मॉर्फीम टोकनाइज़र | वितरणीय विभाजन, 256+N+1 शब्दावली |
| 3 | टोकनाइज़र-डाइट संरेखण | संतृप्ति बिंदु, क्यों 12M ने 63.6% बर्बाद किया |
| 4 | एम्बेडिंग्स और स्थिति | सीखा टोकन + स्थिति लुकअप |
| 5 | स्केल्ड डॉट-प्रोडक्ट अटेंशन | Q·Kᵀ/√d, कारणिक मास्क, सॉफ्टमैक्स |
| 6 | मल्टी-हेड अटेंशन | हेड विभाजन, समानांतर प्रोजेक्शन |
| 7 | ट्रांसफॉर्मर ब्लॉक | MLP, अवशेष, लेयर नॉर्म |
| 8 | क्रॉस-एंट्रॉपी और पर्प्लेक्सिटी | लॉग-संभावना, SMMA लॉस |
| 9 | कस्टम CUDA में बैकप्रॉप | microgpt_cuda.cu में चेन रूल |
| 10 | AdamW | डीकपल्ड वेट डिके; वैनिला एडम क्यों मर गया |
| 11 | LR वार्मअप + कोसाइन डिके | 2000-स्टेप रैंप; तत्काल पीक क्यों 120M को नष्ट करता है |
| 12 | ग्रेडिएंट क्लिपिंग | ग्लोबल L2 नॉर्म; 3 CUDA कर्नेल |
| 13 | FP32 / FP16 / FP8 E4M3 | प्रिसिजन ट्रेडऑफ्स; टेंसर कोर |
आधा 2: एक पाठ्यक्रम जो सीखता है (गतिविधियाँ 14-24)
| # | गतिविधि | बीट |
|---|---|---|
| 14 | मल्टी-आर्म्ड बैंडिट्स | UCB1, अन्वेषण बनाम शोषण |
| 15 | चरण-आधारित पासा नियंत्रण | 7/14/21/28/42 चरण, 1d3/1d4 पासे |
| 16 | पुरस्कार असाइनमेंट और EMA | प्रति-स्रोत हानि EMA, 1000× स्केलिंग |
| 17 | स्रोत फ्लोर और एपॉक दंड | 1/(1+epochs) स्मरणीकरण रोकता है |
| 18 | कवरेज बोनस | दस्तावेज़-स्तरीय ट्रैकिंग, 1.3× ताजगी |
| 19 | पाठ्यक्रम वार्मअप | पहले 20K चरणों में 7 चैट/गद्य स्रोत |
| 20 | आकार से फिल्टरिंग, न कि अक्षरों से | has_system_prompt_shape()
| 21 | सुसंगतता-गेटेड प्रारंभिक रोकना | बिग्राम/ट्रिग्राम/शब्द/अक्षर ऑटो-रोक |
| 22 | चेकपॉइंट, पुनरारंभ, संकेत | प्रारूप, SIGTERM/SIGUSR1, loss.json निरंतरता |
| 23 | नमूना ऑडिट और बाहरी ग्रेडिंग | एक रन पढ़ना, 9.5/10 क्षेत्र |
| 24 | माइक्रोGPT से ANDREA-120M तक | v1 पतन, v2 सुधार, v2.5 पैच, v3 पॉलिश |
इसके साथ एक साथी: geometry_of_andrea हर लेयर को ज्यामिति के रूप में देखता है (एम्बेडिंग स्पेस, ध्यान को प्रोजेक्शन के रूप में, लॉस सरफेस, बैंडिट को विवेकपूर्ण सिम्प्लेक्स पर एक वॉक के रूप में)।
सुझाया गया क्रम
गतिविधियाँ 2-13 एक कार्यशील ट्रांसफॉर्मर बनाती हैं। यदि आपने पहले ट्रांसफॉर्मर ट्रेन किए हैं तो आधे भाग 2 पर आगे बढ़ें; जिज्ञासा जागने पर वापस आएँ।
जहाँ संभव हो, प्रत्येक गतिविधि स्वतंत्र रूप से खड़ी है। Math beats संदर्भ पहले की गतिविधियों को नाम से संदर्भित करता है (see activity 5: scaled dot-product attention)। कोड संदर्भ microgpt/microgpt_cuda.cu और microgpt/training_proxy.py को ~/git/uncloseai-cli/ में इंगित करते हैं।