CUDA डॉक्यूमेंट सूचकांकों की रिपोर्ट करता है
एक CUDA ट्रेनर जानता है कि उसने कौन सा दस्तावेज़ सैंपल किया
प्रत्येक ट्रेनिंग स्टेप एक .btok बाइनरी से एक सीक्वेंस खींचता है, जो कई दस्तावेज़ों को लगातार पैक करता है। CUDA लॉस के साथ एक डॉक सूचकांक रिकॉर्ड करता है: step 47213, source=gutenberg, doc=128407, loss=2.81। एक प्रॉक्सी इन रिपोर्टों को एकत्र करता है और प्रति स्रोत देखे गए अद्वितीय डॉक सूचकांकों का सेट बनाए रखता है।
गणनाओं से कवरेज तक
स्रोत का कवरेज = unique_docs_seen / n_docs। कुछ उदाहरण:
| स्रोत | n_docs | अद्वितीय देखे गए | कवरेज |
|---|---|---|---|
| gutenberg | 512,000 | 154,000 | 30.1% |
| hermes3-general | 67,395 | 47,176 | 70.0% |
| dictionary | 88,000 | 88,000 | 100.0% |
| synthetic-chat | 1,400 | 1,400 | 100.0% |
छोटे स्रोत जल्दी संतृप्त हो जाते हैं। बड़े स्रोत हफ्तों तक 50% से नीचे ड्रिफ्ट करते हैं। कवरेज बोनस एक बैंडिट को इनाम देता है उन दस्तावेज़ों को 방문 करने के लिए जिन्हें उसने अभी तक स्रोत के अंदर सैंपल नहीं किया है।
बोनस फॉर्मूला
कवरेज बोनस 0% कवरेज पर 1.3x से रैखिक रूप से स्केल करता है 50% कवरेज पर 1.0x तक, फिर 50% से ऊपर 1.0x पर फ्लैट:
यदि coverage < 0.5:
bonus = 1.0 + 0.3 * (1.0 - coverage / 0.5)
अन्यथा:
bonus = 1.0
0% कवरेज वाला स्रोत 1.3x अर्जित करता है; 25% कवरेज वाला स्रोत 1.15x अर्जित करता है; 50% कवरेज वाला स्रोत 1.0x तक गिर जाता है। 50% से ऊपर, कोई बोनस लागू नहीं होता।
बोनस की गणना करें
दो अलग-अलग ताजगी सिग्नल
एक ही लक्ष्य, अलग ग्रैन्युलैरिटी
एंड्रिया के पास दो तंत्र हैं जो एक ही स्रोत पर अत्यधिक प्रशिक्षण को रोकते हैं। ये समान लगते हैं; ये अलग-अलग चीजों को मापते हैं।
Epoch penalty. कुल अधिक खींचने को ट्रैक करता है। जब lifetime_pulls / n_docs > 1.0, तो एक स्रोत ने सैद्धांतिक रूप से हर दस्तावेज़ को कम से कम एक बार लपेट लिया है। Penalty = 1 / (1 + epochs). 1.4K-दस्तावेज़ synthetic-chat स्रोत पर 5,600 lifetime pulls (epochs = 4) पर penalty 1/5 = 0.2x प्राप्त करता है। Epoch गिनतियाँ रीस्टार्ट्स के पार बनी रहती हैं; वे कभी क्षय नहीं करतीं।
Coverage bonus. एक स्रोत के अंदर प्रति-दस्तावेज़ ताजगी को ट्रैक करता है। CUDA डॉक इंडेक्स रिपोर्ट करता है; प्रॉक्सी प्रति स्रोत एक सेट बनाए रखता है। अद्वितीय डॉक्स के 50% कवरेज से नीचे के स्रोत अधिकतम 1.3x कमाते हैं। Coverage एक स्रोत के पूंछ को एक्सप्लोर करने को पुरस्कृत करता है; epoch penalty इसे समाप्त करने को दंडित करता है।
दोनों क्यों महत्वपूर्ण हैं
| सिग्नल | ट्रैक्स | दिशा | कैप | रीस्टार्ट्स पर बरकरार रहता है |
|---|---|---|---|---|
| एपोक पेनल्टी | एग्रीगेट ओवर-पुलिंग | कम करता है | 1/(1+e) | हाँ |
| कवरेज बोनस | प्रति-डॉक फ्रेशनेस | बढ़ाता है | 1.3x | हाँ |
एक 500K-दस्तावेज़ गुटेनबर्ग स्रोत पूरे 200K ट्रेनिंग रन के दौरान 50% कवरेज से नीचे रह सकता है जबकि कभी एपोक=1 के करीब न पहुँचे। एपोक पेनल्टी इसे नजरअंदाज करता है; कवरेज बोनस सक्रिय रूप से एक बैंडिट को गुटेनबर्ग के अनछुए 70% पूँछ की ओर खींचता है।
इसके विपरीत, एक 1.4K सिंथेटिक-चैट स्रोत कुछ हज़ार पुल्स के अंदर कवरेज (100%) को संतृप्त कर लेता है; कवरेज बोनस 1.0x पर रहता है जबकि एपोक पेनल्टी बढ़ता जाता है।
दोनों को पहचानें
Coverage Bonus ANDREA को क्या खरीदता है
वह Failure Mode जिसे यह रोकता है
डॉक-लेवल ट्रैकिंग के बिना, प्रति-स्टेप रिवॉर्ड पर चयन करने वाला बैंडिट .btok सीक्वेंस को लालची ढंग से चुनता है। 500K-दस्तावेज़ गुटेनबर्ग कॉर्पस में कुछ हज़ार सीक्वेंस होते हैं जिनका लो क्रॉस-एंट्रॉपी (संगत गद्य, सामान्य शब्दावली) होता है। रिवॉर्ड-ओनली बैंडिट उन सीक्वेंस पर बार-बार लौटता है क्योंकि वे लगातार मजबूत रिवॉर्ड सिग्नल उत्पन्न करते रहते हैं।
परिणाम: 500K-दस्तावेज़ कॉर्पस को 200K ट्रेनिंग स्टेप्स पर शायद 2K-5K विशिष्ट सीक्वेंस पर सैंपल किया जाता है। मॉडल उन सीक्वेंस को याद कर लेता है बिना बाकी को कभी देखे। क्षमता बर्बाद; कवरेज 1% से नीचे अटका रहता है।
कवरेज बोनस क्या खरीदता है
0% कवरेज पर 1.3x, 50% पर 1.0x तक स्केल डाउन। वह धक्का UCB1 चयन के माध्यम से फैलता है: कम कवरेज वाले आर्म्स अपनी प्रति-पुल रिवॉर्ड गिरने पर भी प्रतिस्पर्धी बने रहते हैं। बैंडिट डिज़ाइन से टेल का अन्वेषण करता है न कि संयोग से।
500K-दस्तावेज़ गुटेनबर्ग पर 200K-स्टेप रन में, कवरेज बोनस आमतौर पर देखे गए कवरेज को ~3% (बिना बोनस) से ~25-30% (बोनस के साथ) तक बढ़ा देता है। समान कम्प्यूट, आठ से दस गुना अधिक दस्तावेज़ छुए गए।
ट्रैकिंग कहाँ रहती है
| घटक | जिम्मेदारी |
|---|---|
microgpt_cuda.cu | प्रत्येक प्रशिक्षण चरण प्रति डॉक इंडेक्स रिपोर्ट करता है |
training_proxy.py | स्रोत प्रति seen_docs सेट बनाए रखता है |
training_proxy.py | कवरेज की गणना करता है, बैंडिट रिवॉर्ड पर बोनस लागू करता है |
training_proxy.py | seen_docs को रीस्टार्ट्स के पार .state.json में संरक्षित करता है |