eval_chat_quality() गलत रनर से जुड़ा था
एक 10-दिवसीय विफलता जो दिन 3 पर रुक जानी चाहिए थी
ANDREA-120M v1 ने RTX 4090 पर 130W निरंतर पर 16.1 दिनों तक प्रशिक्षण लिया। सैंपल आउटपुट हर 200 स्टेप्स पर स्टोर किए गए लेकिन रन के दौरान कभी विश्लेषित नहीं किए गए। स्टेप 80K (दिन 4) तक, सैंपल्स पढ़े गए region region region region region। स्टेप 110K तक, ''''' ''''' '' ''' ''। प्रशिक्षण स्टेप 165K पर मैन्युअली रोके जाने तक और 11 दिनों तक चला।
स्मोक अलार्म के साथ क्या गलत हुआ
eval_chat_quality() कोडबेस में मौजूद था। यह सैंपल क्वालिटी को स्कोर करता था। यह सही भी काम करता था। लेकिन यह केवल पुराने मल्टी-फेज रनर से जुड़ा था। v1 फायरहोज़ करिकुलम ने एक अलग कोड पथ का उपयोग किया & कभी eval को इनवोक नहीं किया। स्मोक अलार्म दूसरे कमरे में बंद दरवाजे के साथ बैठा था।
लागत
16.1 दिनों का कम्प्यूट। 130W निरंतर। ~50 kWh बिजली। मॉडल ने किसी भी बिंदु पर कोई उपयोगी आउटपुट नहीं दिया। लॉस EMA स्टेप 110K पर 3.23 पर नीचे पहुँचा, फिर ट्रेनिंग रुकी स्टेप 165K पर 4.54 पर वापस चढ़ गया। संख्यात्मक रूप से उचित; अर्थपूर्ण रूप से खाली।
8449-टोकन वोकैबुलरी के लिए रैंडम चांस 9.04 है। v1 ने 3.23 EMA लॉस हासिल किया जबकि region region region प्रोड्यूस कर रहा था। लॉस अकेले coherence collapse का पता नहीं लगा सकता। एक मॉडल जो क्रॉस-एंट्रॉपी को न्यूनतम करने के लिए एक हाई-फ्रीक्वेंसी टोकन को दोहराता है, फेल्योर मोड के लिए संख्यात्मक रूप से पुरस्कृत होता है।
लॉस कर्व्स ने क्यों झूठ बोला
हर नमूने को चार अक्षों पर स्कोर करें
संयुक्त स्कोर
v2 एक सुसंगतता गेट शिप करता है जो हर नमूने को (फायरहोज प्रशिक्षण के दौरान हर 100 स्टेप्स पर लिया गया) चार मेट्रिक्स पर स्कोर करता है:
| मैट्रिक | रेंज | यह क्या पकड़ता है |
|---|---|---|
| बिग्राम विविधता | 0-35 | दो-टोकन स्तर पर पुनरावृत्ति (region region) |
| ट्रिग्राम विविधता | 0-35 | तीन-टोकन स्तर पर पुनरावृत्ति (a, b, a, b, a, b) |
| अंग्रेजी शब्द उपस्थिति | 0-20 | गैर-अंग्रेजी में भटकना (CJK, Cyrillic, gibberish) |
| कैरेक्टर विविधता | 0-10 | एकल-कैरेक्टर संकुचन (''''', ... ... ...) |
कुल संभव: 100. थ्रेशोल्ड: 30.
चार मैट्रिक्स क्यों, एक नहीं
प्रत्येक मैट्रिक अलग-अलग विफलता मोड को पकड़ता है:
- एक मॉडल जो एक बिग्राम पर ढह जाता है, बिग्राम विविधता में विफल होता है लेकिन कैरेक्टर विविधता में पास हो जाता है।
- एक मॉडल जो विराम चिह्न शोर उत्पन्न करता है (''''' ''''' '') कैरेक्टर विविधता में विफल होता है लेकिन यदि विराम चिह्न जोड़े भिन्न होते हैं तो बिग्राम विविधता में पास हो सकता है।
- एक मॉडल जो गैर-अंग्रेजी (अनुवाद प्रशिक्षण प्रदूषण) में ड्रिफ्ट करता है, वह English word presence में फेल होता है लेकिन यदि यह व्याकरणिक मंदारिन उत्पन्न करता है तो Bigram & Trigram diversity पास करता है।
- एक मॉडल जो a, b, a, b, a, b उत्पन्न करता है वह Bigram पास करता है (a-b और b-a दिखाई देते हैं) लेकिन Trigram में फेल होता है (a-b-a, b-a-b हावी होते हैं)।
साथ में, ये चार मैट्रिक्स विफलता स्थान को कवर करते हैं। एक कंपोजिट स्कोर 30 से नीचे होने का मतलब है कि कम से कम एक अक्ष इतना बुरी तरह से ढह गया है कि पूरे सैंपल को नीचे खींच ले गया।
लगातार काउंटर
ऑटो-हाल्ट 5 लगातार सैंपल्स के बाद फायर होता है जो 30 से नीचे स्कोर करते हैं। एकल खराब सैंपल्स चरण संक्रमणों या दुर्लभ-स्रोत पुल्स के दौरान हो सकते हैं; पांच लगातार का मतलब है कि मॉडल रिकवर करना बंद कर चुका है। हर 100 स्टेप्स पर सैंपल्स लिए जाने पर, 5 लगातार डिजेनरेट सैंपल्स = 500 स्टेप्स की पुष्टि की गई कोहेरेंस कोलैप्स।
स्कोर की गणना करें
v1 कैसा दिखता
बैक-टेस्टेड ट्रिगर
v1 के संग्रहीत नमूनों को देखते हुए, v2 कोहेरेंस गेट को पूर्वव्यापी रूप से लागू करने से पता चलता है कि गेट चरण 132K पर ट्रिगर होता। v1 ने मैनुअल समापन से पहले चरण 165K तक चला। गेट ने ट्रेनिंग को 33,000 चरण पहले रोक दिया होता।
बचाई गई कम्प्यूट
RTX 4090 ने FP16 cuBLAS में ~6 स्टेप्स/मिनट की ट्रेनिंग की। 33,000 स्टेप्स / 6 स्टेप्स/मिनट = 5,500 मिनट = 91.6 घंटे = 3.8 दिनों की बचाई गई कम्प्यूट। 130W निरंतर पर, यह ~12 kWh बिजली है, प्लस 3.8 दिनों का GPU घिसाव।
स्टेप 132K क्यों और स्टेप 80K क्यों नहीं
v1 ने स्टेप 80K पर region region region उत्पन्न किया। गेट तब क्यों फायर नहीं हुआ?
क्योंकि खराब सैंपल्स के बीच में अंतराल पर अच्छे सैंपल्स आते रहे। बैंडिट हर 7-42 स्टेप्स पर स्रोतों के बीच चक्रवाती होता रहा। एक डिजेनरेट मॉडल भी कभी-कभी अलग स्रोत से सैंपलिंग करने पर अधिक विविध आउटपुट उत्पन्न कर लेता था, जो लगातार काउंटर को क्षणिक रूप से रीसेट कर देता था। स्टेप 132K तक, मॉडल इतना गहराई से कोलैप्स हो चुका था कि 5 लगातार डिजेनरेट सैंपल्स (500 स्टेप्स) अपरिहार्य हो गए।
पाठ: हर रनर को स्मोक अलार्म से जोड़ें
v2 eval_chat_quality() को सीधे फायरहोज़ पाठ्यक्रम के सैंपल-हैंडलिंग कोड पथ में जोड़ता है, न कि केवल पुराने रनर में। हर सैंपल, हर रन, हर कोड पथ: एक ही गेट। यह फिक्स ~30 लाइनों के कोड में हो गया।