टोकनाइज़र जो खाता है वही वह जानता है
टोकनाइज़र डाइट: एक परिभाषा
एक Harris टोकनाइज़र कॉर्पस नमूने पर प्रशिक्षित होता है। यह उस नमूने पर वितरणीय विश्लेषण चलाता है, सबसे मजबूती से पुनरावृत्ति करने वाले N सेगमेंट चुनता है, & उन्हें शब्दकोश में लिखता है। प्रशिक्षण के बाद, वे N सेगमेंट एक स्थिर वर्णमाला बन जाते हैं जिसका उपयोग भाषा मॉडल हर चीज के लिए करता है: प्रशिक्षण, अनुमान, हर इनपुट, हर आउटपुट।
टोकनाइज़र डाइट = टोकनाइज़र जो प्रशिक्षित होता है उसका पाठ नमूना।
प्रशिक्षण आहार = वह कोर्पस जिस पर भाषा मॉडल प्रशिक्षित होता है।
जब दो आहार भिन्न होते हैं, तो एक टोकनाइज़र उन खंडों को सीखता है जो मॉडल द्वारा कभी न देखे जाने वाले पाठ के लिए समायोजित होते हैं। एम्बेडिंग क्षमता (शब्दावली प्रविष्टि प्रति एक स्लॉट) उन खंडों पर व्यय हो जाती है जो प्रशिक्षण के दौरान कोई पुरस्कार नहीं कमाते।
ANDREA-12M की गलती
ANDREA-12M ने अपने Harris tokenizer को megachat-v8.txt के एक कच्चे हिस्से पर प्रशिक्षित किया। उस हिस्से में कोड सैंपल्स और टूल-कॉल डेटा था। हालांकि, प्रशिक्षण पाठ्यक्रम ने कोड और टूल कॉल्स को बाहर रखा; ANDREA-12M ने केवल संवादात्मक पाठ देखा।
परिणाम: tokenizer ने Python कीवर्ड्स, JSON ब्रेसेस, शेल फ्लैग्स से सेगमेंट्स सीखे। एक मॉडल जो शब्दकोश प्रविष्टियों और संवाद पर प्रशिक्षित है। केवल 36.4% सेगमेंट्स एक पाठ्यक्रम-भारित सैंपल के साथ ओवरलैप करते हैं। शेष 63.6% शब्दावली स्लॉट्स उन सेगमेंट्स को आवंटित हो गए जो मॉडल को प्रशिक्षण के समय कभी नहीं मिलेंगे।
यह क्यों महत्वपूर्ण है
प्रत्येक शब्दावली प्रविष्टि एम्बेडिंग पैरामीटर्स खपत करती है: एम्बेडिंग मैट्रिक्स का एक पंक्ति, आकार V × d_model (गतिविधि 4 में कवर)। V = 4353 और d_model = 384 पर, हर शब्दावली स्लॉट की कीमत 384 फ्लोट्स है। 63.6% बर्बाद करना एम्बेडिंग मैट्रिक्स का 63.6% उस डेटा पर बर्बाद करना है जिसे मॉडल कभी नहीं देखता।
एक डाइट नियम बताएं
N कितना बड़ा होना चाहिए
एक वोकैब साइंस स्वीप
ANDREA-120M ने एक वोकैब साइंस प्रयोग चलाया: विभिन्न N मानों (अनुरोधित सेगमेंट्स) पर Harris टोकनाइज़र्स को ट्रेन किया एक ही 1.25B-कैरेक्टर फायरहोज़ कॉर्पस पर। मापें कि टोकनाइज़र वास्तव में कितने सेगमेंट्स ढूंढता है। परिणाम प्लॉट करें।
| अनुरोधित N | वास्तविक खंड मिले | स्थिति |
|---|---|---|
| 2,048 | 2,048 | असंतृप्त (वृद्धि की गुंजाइश) |
| 4,096 | 4,096 | असंतृप्त |
| 8,192 | 8,192 | संतृप्ति बिंदु |
| 16,384 | 13,106 | कोर्पस समाप्त |
संतृप्ति का क्या अर्थ है
छोटे N पर, एक कॉर्पस में पर्याप्त आवर्ती पैटर्न होते हैं; एक टोकनाइज़र हर स्लॉट को भर देता है जो वह मांगता है। बड़े N पर, एक टोकनाइज़र सांख्यिकीय रूप से सार्थक सीमाओं से बाहर हो जाता है। एक 1.25B-अक्षर कॉर्पस में लगभग 13,106 विशिष्ट मॉर्फीम-आकार के सेगमेंट होते हैं जो एक फ्रीक्वेंसी थ्रेशोल्ड से ऊपर हैं। 16,384 मांगने पर 13,106 मिलते हैं; शेष 3,278 स्लॉट पैड किए जाते हैं या खाली छोड़ दिए जाते हैं।
सेचुरेशन: वह बिंदु जहां अनुरोधित N = पाए गए N। सेचुरेशन से आगे, एक टोकनाइज़र बिना गुणवत्ता को कम किए (फ्रीक्वेंसी थ्रेशोल्ड कम करके और शोर स्वीकार करके) अधिक सेगमेंट खोज नहीं सकता।
8192 पर स्वीट स्पॉट
ANDREA-120M ने N = 8192 चुना। एक तर्क:
- 8192 से नीचे (उदाहरण के लिए 4096): शब्दकोश सामान्य मॉर्फीम्स को पर्याप्त रूप से कैप्चर नहीं करता; अनुक्रम अधिक टोकनों में टुकड़ों में बंट जाते हैं; थ्रूपुट गिर जाता है।
- 8192 पर: हर सेगमेंट स्लॉट एक वास्तविक, आवर्ती पैटर्न से कोर्पस में मैप होता है।
- 8192 से ऊपर: घटते प्रतिफल; 13,106 < 16,384 का मतलब स्लॉट बर्बाद हो जाते हैं।
अंतिम ANDREA-120M शब्दकोश: 256 + 8192 + 1 = 8449 टोकन। औसत संपीड़न: प्रति टोकन 5.91 UTF-8 बाइट्स, अर्थात प्रत्येक टोकन कच्चे पाठ के ~5.9 बाइट्स को प्रतिस्थापित करता है। यह अनुपात मॉडल के प्रभावी संदर्भ को निर्धारित करता है: 1024 टोकन × 5.91 बाइट्स/टोकन पर, ANDREA-120M प्रति फॉरवर्ड पास में लगभग 6,050 वर्णों का संदर्भ पढ़ता है।
संतृप्ति के ऊपर या नीचे
63.6% कहाँ से आया
बर्बाद स्लॉट्स की गिनती
ANDREA-12M का टोकेनाइज़र raw megachat-v8.txt पर प्रशिक्षित (4096 सेगमेंट्स अनुरोधित, पाए गए)। एक टीम ने पाठ्यक्रम-भारित सबसेट का नमूना लिया: एक कॉर्पस जो बैंडिट द्वारा प्रत्येक स्रोत को खींचे जाने की आवृत्ति के अनुसार भारित था। उन्होंने उस भारित नमूने पर Harris विश्लेषण दोबारा चलाया और पूछा: मूल 4096 सेगमेंट्स में से कितने अभी भी दिखाई देते हैं?
परिणाम: 36.4% ओवरलैप। 4,096 सेगमेंट्स में से 1,491 पाठ्यक्रम भारण से मेल खाते हैं। शेष 2,605 सेगमेंट्स वे स्रोतों से आए जो मॉडल ने बाहर किए।
शब्दावली स्लॉट्स का 63.6% उन बाइट्स को आवंटित कर दिया गया जो मॉडल ने कभी नहीं देखे।
एम्बेडिंग लागत
हर शब्दावली प्रविष्टि एक एम्बेडिंग मैट्रिक्स की एक पंक्ति पर कब्जा करती है जिसका आकार (V, d_model) है। ANDREA-12M के लिए:
- V = 4353 (256 + 4096 + 1)
- d_model = 384
- एम्बेडिंग पैरामीटर = V × d_model = 4353 × 384 = 1,671,552 पैरामीटर
उन पैरामीटर्स का 63.6% संवादात्मक प्रशिक्षण के लिए अप्रयुक्त रहा। 1,063,107 पैरामीटर्स आवंटित, 0 रिवॉर्ड सिग्नल। ANDREA-12M जीवित रहता है क्योंकि 256 बेस बाइट्स हमेशा किसी भी कैरेक्टर को कवर करते हैं; लेकिन पैरामीटर प्रति क्षमता तेजी से गिर गई।
ANDREA-120M ने इसे कैसे ठीक किया
ANDREA-120M का टोकेनाइज़र पूर्ण फायरहोज़ (1.25B कैरेक्टर्स, 21 स्रोत) पर संतृप्ति N = 8192 पर प्रशिक्षित किया गया। प्रशिक्षण कॉर्पस = वही फायरहोज़। डाइट संरेखण: 100%। चैट-भारित नमूने पर परिणामी ओवरलैप: 36.5%। (नोट: 36.5% ओवरलैप है, कवरेज नहीं; चैट अकेले पूर्ण फायरहोज़ का सबसेट है, इसलिए यह संख्या 12M के 36.4% से अलग व्यवहार करती है।)
प्रभावी संपीड़न: 5.91 UTF-8 बाइट्स प्रति टोकन। ANDREA-120M का एम्बेडिंग मैट्रिक्स: 8449 × 768 = 6,488,832 पैरामीटर्स। हर पैरामीटर एक रिवॉर्ड सिग्नल कमाता है क्योंकि हर सेगमेंट उस टेक्स्ट पर मैप होता है जिस पर मॉडल वास्तव में प्रशिक्षित होता है।
कवरेज बनाम ओवरलैप
5.91 बाइट्स प्रति टोकन क्यों महत्वपूर्ण है
एक संपीड़न अनुपात
प्रति टोकन औसत UTF-8 बाइट्स मापता है कि प्रत्येक वोकैबुलरी एंट्री कितना कच्चा टेक्स्ट संपीड़ित करती है। ANDREA-120M औसतन 5.91 है। छोटे पीस वाले मॉडल (3 बाइट्स/टोकन) फॉरवर्ड पास में कम संदर्भ पढ़ते हैं; लंबे पीस वाले मॉडल (8 बाइट्स/टोकन) अधिक पढ़ते हैं लेकिन धीमे ट्रेन होते हैं (प्रत्येक पीस को अच्छी तरह सीखने के लिए अधिक सैंपल्स चाहिए)।
प्रभावी संदर्भ
| मात्रा | मान |
|---|---|
| टोकन संदर्भ विंडो | 1,024 टोकन |
| प्रति टोकन औसत बाइट्स | 5.91 |
| प्रभावी चरित्र संदर्भ | 1024 × 5.91 ≈ 6,050 |
लगभग 6,000 UTF-8 अक्षर एक ANDREA-120M फॉरवर्ड पास में समा जाते हैं। एक पेज का सघन अंग्रेजी गद्य ~3,000-4,000 अक्षरों का होता है; ANDREA प्रति पास लगभग डेढ़ पेज पढ़ता है।
डाइट संपीड़न को कसती है
एक अच्छी तरह से संरेखित टोकनाइज़र बेहतर संपीड़ित करता है। जब एक टोकनाइज़र ट्रेनिंग कॉर्पस में बार-बार आने वाले सेगमेंट सीखता है, तो प्रति टोकन अधिक पाठ समा जाता है। ANDREA-12M का खराब संरेखित टोकनाइज़र चैट पर बदतर संपीड़ित करता था (चैट सेगमेंट वोकैब में कम थे इसलिए बाइट-फॉल बैक टुकड़ों पर अधिक बाइट्स खर्च हुए)। ANDREA-120M का डाइट-संरेखित टोकनाइज़र चैट-आकार के टुकड़े को तेज़ पथ पर रखता है और दुर्लभ स्क्रिप्ट्स को बाइट फॉल बैक पर।
गतिविधि 4 जारी रहती है
गतिविधि 4 (grow_a_language_model_embeddings) उन 8449 वोकैब प्रविष्टियों के साथ होता है: वे V × d_model आकार की एम्बेडिंग मैट्रिक्स की पंक्तियाँ बन जाती हैं, फिर सीखी गई पोजीशन एम्बेडिंग्स जोड़ने के बाद पहले ट्रांसफॉर्मर ब्लॉक में प्रवाहित होती हैं।