1 पॉइंट द्वारा GN⁺ 2024-05-13 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • LLM में tokenizer निर्माण और मॉडल प्रशिक्षण अलग-अलग होते हैं, इसलिए _SolidGoldMagikarp जैसे कुछ टोकन अप्रत्याशित व्यवहार पैदा कर सकते हैं
  • समस्या का मूल उन under-trained tokens में है जो tokenizer की vocabulary में तो होते हैं, लेकिन प्रशिक्षण के दौरान बहुत कम या बिल्कुल दिखाई नहीं देते; इन्हें अक्सर ‘glitch tokens’ कहा जाता है
  • यह शोध tokenizer विश्लेषण, मॉडल embedding weight metrics, और prompting तकनीकों को मिलाकर ऐसे टोकन को स्वचालित रूप से खोजने का तरीका प्रस्तावित करता है
  • ऐसे टोकन fixed-size tokenizer की vocabulary capacity बर्बाद करते हैं, और input-output लंबाई, inference cost, hallucination या टूटे हुए output को प्रभावित कर सकते हैं
  • बाहरी डेटा को खोजने और प्रोसेस करने वाले tool use और agent environments में, under-trained token की पहचान और refinement सीधे deployed model की सुरक्षा और robustness से जुड़ते हैं

tokenizer और मॉडल प्रशिक्षण के बीच असंगति

  • LLM के ज़्यादातर components बड़े पैमाने के डेटा पर unsupervised तरीके से सीखे जाते हैं, लेकिन tokenizer आमतौर पर अलग algorithm और छोटे dataset के साथ अलग से प्रशिक्षित किया जाता है
  • GPT-2 ने आज के Transformer-आधारित language modeling की कई बुनियादें रखीं, और byte-pair encoding(BPE) पर आधारित tokenization framework भी व्यापक रूप से अपनाया गया
  • BPE tokenization input text को subword token sequence में बदलता है और fixed merge rules के आधार पर पास-पास के दो token को बार-बार merge करता है
  • merge rules एक छोटे dataset पर greedy learning algorithm से सीखे जाते हैं, जिसे LLM training data का प्रतिनिधि होना चाहिए

glitch token बनने की संरचना

  • जब tokenizer और मॉडल प्रशिक्षण अलग होते हैं, तो कुछ token ऐसे रह सकते हैं जो मॉडल प्रशिक्षण के दौरान बहुत कम या बिल्कुल दिखाई ही नहीं देते
  • जब ऐसे token input में शामिल होते हैं, तो वे hallucination या टूटे हुए output जैसे अप्रत्याशित व्यवहार पैदा कर सकते हैं
  • यह शोध ऐसे token को under-trained tokens या untrained tokens के रूप में अलग-अलग वर्गीकृत करता है
    • untrained शब्द तभी उपयोग किया जाता है जब इस बात के स्पष्ट संकेत हों कि कोई विशेष token मॉडल training data में आया ही नहीं
    • सामान्य रूप से इन्हें ‘glitch tokens’ भी कहा जाता है
  • एक प्रमुख उदाहरण के रूप में _SolidGoldMagikarp token का उल्लेख किया गया है

मौजूदा tokenization तरीकों की सीमाएँ और विकल्प

  • हालिया शोधों ने tokenization हटाकर raw byte input की ओर जाने वाले तरीकों पर भी काम किया है, लेकिन यह विकल्प आमतौर पर inference speed cost के साथ आता है
  • इस speed cost की भरपाई शुरुआती और अंतिम layer की विशेष architectures या मध्य layers में variable computation से की जा सकती है
  • ऐसे तरीके अभी व्यापक रूप से नहीं अपनाए गए हैं, और अधिकांश आधुनिक मॉडल अब भी subword tokenization पर निर्भर हैं
  • BPE का प्रमुख विकल्प Unigram तरीका है, लेकिन BPE से बेहतर होने के संकेत देने वाले शोध के बावजूद इसका सामान्य उपयोग कम है

under-trained token की व्यावहारिक समस्याएँ

  • under-trained token fixed-size tokenizer में उस vocabulary capacity को घेर लेते हैं जिसका उपयोग अधिक बार आने वाले token कर सकते थे
    • इससे औसत input-output लंबाई और inference cost कम करने का अवसर छूट सकता है
  • यदि ऐसे token input data में जानबूझकर या संयोग से शामिल हो जाएँ, तो वे अवांछित model output पैदा कर सकते हैं और downstream applications को तोड़ सकते हैं
  • जैसे-जैसे LLM का tool use और agents द्वारा बाहरी डेटा को खोजने व प्रोसेस करने की स्थितियाँ बढ़ रही हैं, अप्रत्याशित या malicious input के प्रति robustness और अधिक महत्वपूर्ण हो गई है
  • जब मॉडल training distribution से बाहर धकेला जाता है, तो ऐसे token guardrail bypass के लिए भी दुरुपयोग किए जा सकते हैं

स्वचालित पहचान का तरीका और सार्वजनिक टूल

  • पहले भी मॉडल और tokenizer विश्लेषण के ज़रिए ऐसे token खोजने के प्रयास हुए थे, लेकिन अलग-अलग मॉडलों में लगातार काम करने वाला विश्वसनीय स्वचालित तरीका नहीं था
  • यह शोध समस्या वाले token की पहचान के लिए तीन तरीकों को जोड़ता है
    • tokenizer विश्लेषण
    • मॉडल embedding weight-आधारित metrics
    • prompting तकनीकें
  • इन तरीकों को कई लोकप्रिय और हाल ही में जारी open-weight models पर लागू किया गया, और private models तक इन्हें बढ़ाने के तरीकों की भी संक्षिप्त पड़ताल की गई
  • Hugging Face models के साथ compatible सामान्य analysis tool और मॉडल-विशिष्ट विस्तृत परिणाम भी सार्वजनिक किए गए हैं

1 टिप्पणियां

 
GN⁺ 2024-05-13
Hacker News की राय
  • एक साल पहले Computerphile का glitch tokens वाला वीडियो अच्छा था: https://www.youtube.com/watch?v=WO2X3oZEJOA

    • यह वीडियो किसी तरह पेपर के preprint से ज़्यादा दिलचस्प लगता है
  • सिर्फ़ कम-trained tokens खोजने के बजाय, चूंकि tokens असल में neural network की पहली layer होते हैं, इसलिए बाकी सभी layers के सभी weights में भी training data imbalance ढूंढना चाहिए
    अगर ऐसे weights मिल जाएं, तो जिन weights से data लगभग नहीं गुजरता उन्हें हटाना बेहतर हो सकता है; इससे model छोटा हो सकता है या generalization में मदद मिल सकती है

    • मुझे लगता है model distillation यही करता है। SparseGPT इसका बड़ा उदाहरण था, और अगर मुझे सही याद है तो उसने accuracy में बड़ा नुकसान किए बिना 50% parameters हटा दिए थे
      हाल की papers में से एक में SparseGPT को cite करते हुए sparsity करीब 70–80% तक हासिल की गई थी, जो काफी impressive था
    • “जिन weights से data लगभग नहीं गुजरता उन्हें हटाना” क्या sparse neural networks का ही idea नहीं है?
    • पहले से ही regularized models को compress या merge किया जा सकता है
  • यह यकीन करना थोड़ा मुश्किल है कि किसी Canadian company के model में hockey से जुड़ा under-trained token था, भले ही वह German में रहा हो
    मज़ाक अलग, यह काफी बढ़िया चीज़ है, और tokenization का models पर क्या असर पड़ता है इसकी बेहतर समझ मिलने की उम्मीद है। खासकर यह खोज ध्यान खींचती है कि शुरुआती open-source models में से काफी carriage returns पर समस्या झेलते हैं; data source के हिसाब से carriage returns इतने दुर्लभ नहीं भी हो सकते

  • random matrix theory पर आधारित training diagnostics की एक विधि है, जो weights के correlation matrix की spectral density का इस्तेमाल करती है
    हर layer की spectral density को truncated power law पर fit किया जाता है, और अगर power-law exponent alpha 2 से थोड़ा बड़ा हो तो माना जाता है कि training ठीक हुई है
    https://jmlr.org/beta/papers/v22/20-410.html

  • समाधान बस tokenizer को LLM वाले ही corpus पर train करना नहीं है क्या? tokenizer reuse इतना आम क्यों है, यह मुझे ठीक से समझ नहीं आता। किसी को पता है?

    • दूसरों ने जो कहा उसके अलावा, भले ही आप tokenizer को training dataset के बिल्कुल समान train कर सकें, ऐसी समस्याएं पूरी तरह गायब नहीं होंगी
      BPE तरीके में कोई token दूसरे token के साथ merge होकर बहुत rare token बना सकता है। मान लें tokens X और Y हैं और लगभग हर X के बाद Y आता है; BPE process नया token XY बनाएगा, लेकिन पुराने token X को हटाएगा नहीं, इसलिए X under-trained रह जाएगा
      इसे हल करने के लिए greedy merging से ज़्यादा sophisticated merging algorithm की जरूरत होगी
    • tokenizer reuse करने के दो कारण मेरे दिमाग में आते हैं
      पहला, जब आप model की pretraining को scratch से शुरू करने के बजाय आगे जारी रखना चाहते हैं। हालांकि, कुछ लोगों को यह पता नहीं हो सकता कि नए tokenizer के साथ train करते हुए भी model weights को काफी आसानी से reuse किया जा सकता है। मैंने इस तरीके पर एक लेख लिखा है: https://umarbutler.com/how-to-reuse-model-weights-when-train...
      दूसरा, end users के लिए सुविधा। बहुत बड़े corpus को tokenize करके chunks में बांटना समय ले सकता है, और अगर उसे GPT2 tokenizer से एक बार process करने के बाद उसी data से कई models train किए जा सकें, तो हर बार फिर से tokenize न करना अच्छा रहता है
    • abstract देखने पर, यह technique तब उपयोगी लगती है जब corpus तक access न हो। उदाहरण के लिए, open-source weights download किए जा सकते हों लेकिन corpus private हो
      वरना corpus के statistical sample से token histogram निकाल लेना काफी नहीं होगा क्या?
    • आम तौर पर tokenizer और LLM के लिए वही corpus इस्तेमाल करने के इरादे से शुरुआत होती है, लेकिन tokenizer train करने के बाद LLM test करने की process में पता चलता है कि corpus का कुछ हिस्सा बेकार junk है
      counting subreddit में मेहनत करने वाले SolidGoldMagikarp से कोई दुर्भावना नहीं, लेकिन ऐसे हिस्से बाद की training से निकाल दिए जाते हैं। मगर उस समय तक tokenizer पहले ही API का हिस्सा बन चुका होता है, इसलिए नए version में बदलने से दूसरी चीज़ें टूट जाती हैं, और अंत में गैर-ज़रूरी tokens vocabulary में रह जाते हैं
    • संभव तो है, लेकिन corpus बहुत बड़ा हो तो practically मुश्किल है
  • पेपर का title सचमुच शानदार है

    • पूरा title है “Fishing for Magikarp: Automatically Detecting Under-trained Tokens in Large Language Models