From Where Words Come: Efficient Regularization of Code Tokenizers Through Source Attribution
यह शोध पत्र सोर्स-एट्रिब्यूटेड बीपीई (SA-BPE) को प्रस्तुत करता है, जो एक नियमितीकरण तकनीक (regularization technique) है जो मानक बीपीई प्रशिक्षण उद्देश्य को संशोधित करती है ताकि विविध डेटा स्रोतों के कारण होने वाले टोकन असंतुलन और ओवरफिटिंग को कम किया जा सके, जिससे इन्फरेंस दक्षता और सुरक्षा को बनाए रखते हुए कोड टोकनाइज़र में कम प्रशिक्षित टोकनों को कम किया जा सके।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक रोबोट को कंप्यूटर कोड पढ़ना और लिखना सिखा रहे हैं। इसे करने के लिए, सबसे पहले आपको रोबोट को वाक्यों को छोटे, प्रबंधनीय टुकड़ों में तोड़ना सिखाना होगा जिन्हें टोकन (tokens) कहा जाता है। इन टोकनों को LEGO ब्रिक्स (ईंटों) की तरह समझें। यदि आप रोबोट को एक किला बनाना (कोड लिखना) सिखाना चाहते हैं, तो उसे सही आकार और साइज के LEGO ब्रिक्स वाला एक बॉक्स चाहिए होगा।
ब्रिक्स बनाने का मानक तरीका BPE (Byte-Pair Encoding) कहलाता है। यह एक मशीन की तरह है जो इंटरनेट से कोड के ढेर को देखती है और कहती है, "हे, ये दो अक्षर अक्सर एक साथ दिखाई देते हैं, चलो इन्हें एक ही ब्रिक में जोड़ देते हैं!" यह सबसे आम जोड़ों को तब तक आपस में जोड़ती रहती है जब तक कि उसके पास ब्रिक्स की एक शब्दावली (vocabulary) तैयार न हो जाए।
समस्या: "जंक ड्रॉअर" (कबाड़ के दराज) का प्रभाव
यह पेपर इस मानक विधि के एक बड़े दोष की ओर इशारा करता है: रोबोट के पास बेकार, अजीबोगरीब ब्रिक्स से भरा एक बॉक्स जमा हो जाता है।
क्योंकि प्रशिक्षण डेटा इंटरनेट से लाखों अलग-अलग कोड रिपॉजिटरी (प्रोजेक्ट्स) से आता है, इसलिए मानक BPE विशिष्ट, एक-बार होने वाली चीजों से भ्रमित हो जाता है।
- उपमा: कल्पना करें कि आप दुनिया की हर किताब पढ़कर अंग्रेजी सीख रहे हैं। यदि किसी लेखक ने गलती से प्लेसहोल्डर टेक्स्ट के रूप में "ipsum" के बजाय "ipsum" टाइप कर दिया, तो मानक BPE यह तय कर सकता है कि, "ओह, 'ipsum' एक वास्तविक शब्द है!" और इसके लिए एक विशेष ब्रिक बना देगा।
- परिणाम: अब रोबोट के पास "ipsum" (एक टाइपो के साथ) के लिए एक ब्रिक है, एक ऐसे वेरिएबल नाम के लिए ब्रिक है जो केवल 5 साल पहले एक विशिष्ट प्रोजेक्ट में मौजूद था, या एक रैंडम नंबर स्ट्रिंग के लिए ब्रिक है जो फिर कभी दिखाई नहीं देता।
- यह क्यों मायने रखता है: ये "जंक ब्रिक्स" रोबोट की मेमोरी में जगह घेरते हैं। इससे भी बुरा यह है कि क्योंकि रोबोट वास्तव में इनका उपयोग कुछ भी वास्तविक बनाने के लिए कभी नहीं करता, इसलिए वह यह नहीं जानता कि उनका अर्थ क्या है। जब रोबोट बाद में उन्हें देखता है, तो वह भ्रमित हो सकता है, मतिभ्रम (hallucinate) का शिकार हो सकता है, या हैकर्स द्वारा सुरक्षा नियमों को बायपास करने के लिए इन अजीब ब्रिक्स का उपयोग करके उसे धोखा दिया जा सकता है (jailbreaks)।
समाधान: सोर्स-एट्रिब्यूटेड BPE (SA-BPE)
लेखक एक नई विधि प्रस्तावित करते हैं जिसे SA-BPE कहा जाता है। केवल यह पूछने के बजाय कि, "अक्षरों का यह जोड़ा कितनी बार दिखाई देता है?" वे पूछते हैं, "यह जोड़ा कहाँ दिखाई देता है?"
वे ब्रिक्स बनाने के लिए दो नए नियम पेश करते हैं:
- "लोकप्रियता प्रतियोगिता" (रिपॉजिटरी काउंट): एक ब्रिक को तभी अनुमति दी जाती है जब वह कई अलग-अलग कोड प्रोजेक्ट्स (रिपॉजिटरीज़) में दिखाई दे। यदि कोई अजीब वेरिएबल नाम केवल एक ही प्रोजेक्ट में दिखता है, तो SA-BPE कहता है, "नहीं, यह बहुत विशिष्ट है। इसके लिए ब्रिक मत बनाओ।"
- "भाषा पासपोर्ट" (लैंग्वेज काउंट): एक ब्रिक को तभी अनुमति दी जाती है जब वह कई अलग-अलग प्रोग्रामिंग भाषाओं में दिखाई दे। यदि कोई पैटर्न केवल Python में मौजूद है लेकिन Java या C++ में कभी नहीं दिखता, तो यह Python की विशिष्टताओं के लिए बहुत विशिष्ट हो सकता है और इसे विशेष ब्रिक नहीं मिलना चाहिए।
रचनात्मक उपमा:
मान लीजिए कि मानक BPE एक ऐसे शेफ की तरह है जो रसोई में मिलने वाली हर सामग्री को सूप में डाल देता है, चाहे वह गाजर हो या जंग लगा हुआ चम्मच। सूप का स्वाद अजीब होता है और उसमें कठोर टुकड़े होते हैं।
SA-BPE एक सख्त हेड शेफ की तरह है जो कहता है: "हम केवल वही सामग्री जोड़ते हैं जो कई अलग-अलग व्यंजनों में पाई जाती है। यदि कोई मसाला केवल 1995 के एक अकेले, अजीब व्यंजन में दिखाई देता है, तो हम उसे बाहर छोड़ देते हैं।" परिणाम एक साफ, अधिक बहुमुखी सूप है जो जो भी खा रहा है उसके लिए स्वादिष्ट है।
जब वे SA-BPE का उपयोग करते हैं तो क्या होता है?
शोधकर्ताओं ने कई कोडिंग मॉडल्स (जैसे StarCoder2 और CodeGemma) पर इसका परीक्षण किया और पाया:
- कम जंक ब्रिक्स: बेकार, "अंडर-ट्रेन्ड" टोकन की संख्या नाटकीय रूप से गिर गई (कुछ मामलों में, लाखों में से केवल 44 खराब टोकन तक)।
- बेहतर संपीड़न (Compression): रोबोट अभी भी कोड को कुशलतापूर्वक पढ़ सकता है। उसे काम करने के लिए अधिक ब्रिक्स की आवश्यकता नहीं है; वास्तव में, वह कम, बेहतर गुणवत्ता वाले ब्रिक्स का उपयोग करता है।
- गति में कोई कमी नहीं: सबसे अच्छी बात? रोबोट पहले की तरह ही तेजी से कोड पढ़ता है। नए नियमों ने केवल यह बदला कि फैक्ट्री में ब्रिक्स कैसे बनाए जाते थे, न कि रसोई में रोबोट उन्हें कैसे उपयोग करता है।
मुख्य निष्कर्ष
यह पेपर AI मॉडल्स के "डिक्शनरी" को साफ करने के बारे में है। यह सुनिश्चित करके कि AI केवल उन शब्दों और प्रतीकों को सीखता है जो कोडिंग की पूरी दुनिया में वास्तव में सामान्य और उपयोगी हैं (न कि केवल एक विशिष्ट प्रोजेक्ट के लिए), हमें ऐसे मॉडल मिलते हैं जो:
- अधिक स्मार्ट (मतिभ्रम/hallucinate होने की कम संभावना)।
- अधिक सुरक्षित (धोखा देना कठिन)।
- अधिक कुशल (कम बर्बाद मेमोरी)।
यह एक सरल लेकिन शक्तिशाली विचार है: AI को किसी एक प्रोजेक्ट के टाइपो और अंदरूनी चुटकुलों को याद करने न दें; उसे कोड की सार्वभौमिक भाषा सिखाएं।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।