पूर्णिमा लल्लन शर्मा फाउंडेशन · स्थापना 2021
PLS FoundationPLS FOUNDATIONज्ञान। सामर्थ्य। सेवा।

क्वांटम शर्मा · AI भाषा प्रयोगशाला

पाठ से अगला टोकन कैसे बनता है

छोटी टोकन ID देखें, attention की गणना करें और स्थानीय गिनती मॉडल को सिखाएँ। एक इनपुट बदलें, अनुमान लगाएँ और जाँचें।

क्वांटम शर्मा कार्यक्रम →

रास्ते पर चलें। हर चरण देखें।

यह autoregressive transformer से पाठ बनाने का वैचारिक रास्ता है, हर आर्किटेक्चर का पूरा चित्र नहीं। नीचे के तीन प्रयोग अलग शिक्षण मॉडल हैं; ये मिलकर प्रशिक्षित LLM नहीं बनते।

ठीक वही पाठ लें। बड़े-छोटे अक्षर और खाली जगह टोकन बदल सकते हैं।

मूल संदर्भ: Vaswani और सहलेखक: Transformer आर्किटेक्चर, §§3.1–3.5 ↗

1 · पाठ से लेबल, फिर वेक्टर

ID पंक्ति चुनती है। उसके अंक में अर्थ नहीं भरा है।

अंग्रेज़ी, हिन्दी या दोनों भरें। यह वापस मूल पाठ बना सकने वाला character-आधारित शिक्षण टोकनाइज़र पास-पास के हिस्सों पर निश्चित क्रम वाली merge सूची लगाता है। बड़े-छोटे अक्षर, खाली जगह और Unicode कोड पॉइंट सुरक्षित रहते हैं। इसकी छोटी शब्दावली और ID हमारे उदाहरण हैं; किसी वास्तविक GPT या अन्य प्रदाता की नहीं।

अधिकतम 160 Unicode कोड पॉइंट। टोकन में खाली जगह या शब्द का केवल हिस्सा हो सकता है। ␠ चिह्न खाली जगह दिखाता है।

उदाहरण: I | ␠eat | ␠an | ␠apple | .

I · 1073␠eat · 56␠an · 57␠apple · 58. · 1046

स्थान 0 पर I की ID 1073 है और हाथ से चुनी पंक्ति [0.2, -0.1, 0.6] है। स्थान अलग इनपुट है।

हाथ से चुने embedding उदाहरण की कुछ पंक्तियाँ
हिस्साID लेबलउदाहरण वेक्टर [x1, x2, x3]
I1073[0.2, -0.1, 0.6]
␠an57[0.1, 0.5, 0.3]
apple7[0.7, 0.1, -0.3]
␠apple58[0.8, 0.2, -0.4]
Apple15[-0.4, 0.7, 0.1]

इन अक्षों को कोई तय अर्थ नहीं दिया गया है। वेक्टर हाथ से चुने गए हैं; न प्रशिक्षण हुआ है, न ID के अंक से गणना। इस छोटी तालिका में न मिले हिस्से पर “पंक्ति नहीं” आता है। हम स्थान 0 से [0.1 × स्थान, 0, 0] का उदाहरण-वेक्टर जोड़ते हैं; यह हमारा शिक्षण नियम है, किसी प्रदाता के position encoding का दावा नहीं।

पढ़ें: टोकन, ID, वेक्टर और संदर्भ →

2 · ATTENTION की एक क्रिया

तीन key को स्कोर दें। तीन value मिलाएँ।

Query के दो निर्देशांक बदलें। तीन key/value जोड़े निश्चित हैं। हर संख्या हाथ से चुनी है; query आपके पाठ से नहीं बनती। यह scaled dot-product attention की एक गणना है; इसमें सीखे projections, masking, कई heads या अन्य न्यूरल परतें नहीं हैं। यह प्रशिक्षित transformer या मॉडल के छिपे तर्क का दृश्य नहीं है।

हर निर्देशांक: -3 से 3। आयाम d = 2। स्कोर = (q1 × k1 + q2 × k2) / √2।

हर गणना बाएँ से दाएँ देखें
जोड़ाKeyValueQuery · keyस्कोर / √2Softmax भार
1[1, 0][1, 0]1×1 + 0×0 = 10.707140.11%
2[0, 1][0, 2]1×0 + 0×1 = 00.000019.78%
3[1, 1][2, 1]1×1 + 0×1 = 10.707140.11%

softmax(s)i = exp(si − max(s)) / Σj exp(sj − max(s))

भारित value = [1.203, 0.797]

भारों का योग 1 है। परिणाम value का मिश्रण है; चुना शब्द या उत्तर की प्रायिकता नहीं।

[0, 0] आजमाएँ: सभी स्कोर शून्य, हर भार 1/3 और भारित value [1, 1]। [0, 3] पर दूसरे और तीसरे key के स्कोर पहले से बड़े हैं। Attention भार इस क्रिया का मिश्रण बताते हैं; अपने-आप पूरे मॉडल के तर्क की व्याख्या नहीं करते।

मूल संदर्भ: PyTorch: scaled dot-product attention का सूत्र ↗

3 · अलग गिनती मॉडल को प्रशिक्षित करें

पड़ोसी गिनें। एक टोकन का अनुमान लें। दोहराएँ।

यह काम करता bigram मॉडल पास-पास के टोकन की देखी गिनती सीखता है। इसमें वही छोटा टोकनाइज़र है, लेकिन ऊपर के embedding या attention प्रयोग नहीं लगते। यह केवल एक टोकन पीछे देखता है। LLM न्यूरल भार सीखते हैं और बहुत लंबे संदर्भ ले सकते हैं; यहाँ जोड़ों की गिनती से LLM प्रशिक्षण का दावा नहीं है।

1–12 गैर-खाली पंक्तियाँ; हर पंक्ति ≤160 और कुल ≤1,600 Unicode कोड पॉइंट। हर पंक्ति को एक EOS अंत-चिह्न (ID 0) मिलता है। पंक्तियों के बीच ट्रांज़िशन नहीं; खाली पंक्तियाँ छोड़ते हैं। Smoothing नहीं है, इसलिए न देखे ट्रांज़िशन की प्रायिकता शून्य है।

उदाहरण में ␠an के बाद ␠apple दो बार और ␠orange एक बार आता है।

प्रॉम्प्ट ≤160 कोड पॉइंट। सीड: पूर्णांक 0–4294967295। वही गिनती, प्रॉम्प्ट, temperature और सीड वही क्रम बनाते हैं। प्रॉम्प्ट, temperature या सीड बदलने पर नई शुरुआत। अधिकतम 12 नए टोकन; EOS आने पर पहले रुकता है।

प्रॉम्प्ट और बने पाठ का कुल आकार भी 160 Unicode कोड पॉइंट और EOS सहित 161 टोकन ID के भीतर रहना चाहिए। सीमा पार करने वाला हिस्सा नहीं जुड़ता; प्रॉम्प्ट छोटा करके रीसेट करें।

पिछला टोकन: “␠an” · ID 57

वर्तमान गिनती-पंक्ति से अगले टोकन के उम्मीदवार
उम्मीदवार / IDगिनतीln(गिनती/कुल)T=1 परचुने T पर
“␠apple” · 582-0.405566.67%66.67%
“␠orange” · 591-1.098633.33%33.33%

धनात्मक T पर देखे उम्मीदवारों के लिए softmax(log(गिनती/कुल) / T) लें। T = 1 पर गिनती के अनुपात वापस मिलते हैं। छोटा T इस पंक्ति को तेज, बड़ा T अधिक समतल करता है। T = 0 पर सीधे सबसे बड़ी गिनती चुनते हैं; बराबर पर छोटी ID। यहाँ temperature, न देखे ट्रांज़िशन को गैर-शून्य अवसर नहीं देता।

I eat an

पहले चुनाव के लिए तैयार। हर बार एक टोकन जुड़ता है, फिर नए पिछले टोकन के उम्मीदवार दिखते हैं।

Greedy temperature पर “I eat an” से “I eat an apple.” और फिर EOS आता है। “Apple makes” के दो समान गिनती वाले अगले हिस्से हैं: ␠phones और ␠computers। सीड बदलें या पंक्तियाँ बदलकर फिर प्रशिक्षण दें। पिछले टोकन के बाद कोई देखी अगली संभावना न हो तो मॉडल कारण बताकर रुकता है; नया fallback नहीं गढ़ता।

मूल संदर्भ: Jurafsky और Martin: n-gram गिनती, प्रायिकता और generation ↗

पढ़ें: प्रशिक्षण, अनुमान और generation →

इन प्रयोगों की हर गणना इसी ब्राउज़र में चलती है। बाहरी मॉडल, API कॉल, खाता, अपलोड या सहेजी मॉडल-अवस्था नहीं है। फिर खोलने पर उदाहरण लौटते हैं। प्रायिकताएँ केवल छोटी पंक्तियों का माप हैं; सत्य, बुद्धिमत्ता या व्यावसायिक मॉडल की क्षमता का नहीं।