Byte Latent Transformer: टोकन से ज़्यादा स्केलेबल पैच
(ai.meta.com)- Byte Latent Transformer(BLT) एक byte-level LLM architecture है, जो fixed vocabulary tokenization के बिना raw bytes पर train होते हुए भी बड़े scale पर tokenization-based LLMs जैसी performance हासिल करता है
- इसका core idea bytes को fixed tokens की बजाय dynamic size वाले patches में group करना है, और उन positions पर ज़्यादा computation व model capacity allocate करना है जहां next byte की entropy ज़्यादा होती है
- Meta ने byte-level models की scalability verify करने के लिए अधिकतम 8B parameters और 4T training bytes तक FLOP-controlled scaling study की
- data जितना predictable होता है, उतने लंबे patches चुनकर training और inference efficiency बढ़ाई जाती है, और inference तथा long-tail generalization में भी qualitative improvements दिखते हैं
- fixed inference cost पर, patch size और model size दोनों को साथ बढ़ाने वाला BLT approach tokenization-based models से बेहतर scaling दिखाता है
BLT द्वारा प्रस्तावित byte-level LLM structure
- Byte Latent Transformer(BLT) fixed vocabulary-based tokenization के बजाय raw bytes को input unit के रूप में इस्तेमाल करने वाला byte-level LLM architecture है
- बड़े scale की settings में यह tokenization-based LLMs की performance के बराबर पहुंचता है, साथ ही inference efficiency और robustness में भी उल्लेखनीय सुधार दिखाता है
Dynamic patches computation unit बनते हैं
- BLT bytes को dynamic size वाले patches में encode करता है और इन्हें मुख्य computation unit के रूप में इस्तेमाल करता है
- patch segmentation next byte की entropy के आधार पर dynamically किया जाता है
- जहां data complexity बढ़ती है, वहां ज़्यादा computation और model capacity allocate की जाती है
- जब data predictable होता है, तो लंबे patches चुनकर computation घटाया जाता है
FLOP-controlled scaling experiments
- Meta ने byte-level models के लिए FLOP-controlled scaling study की
- experiment scale अधिकतम 8B parameters और 4T training bytes है
- results दिखाते हैं कि fixed vocabulary के बिना raw bytes पर train किए गए models भी scale कर सकते हैं
Efficiency और generalization results
- dynamically लंबे patches चुनने की method training efficiency और inference efficiency दोनों को improve करती है
- qualitative results में inference और long-tail generalization में improvements दिखे
- fixed inference cost पर BLT tokenization-based models की तुलना में बेहतर scaling दिखाता है
- इसमें patch size और model size को एक साथ बढ़ाने की method इस्तेमाल होती है
सामग्री
- Download the Paper: Byte Latent Transformer paper download
1 टिप्पणियां
Hacker News की राय
पेपर: https://scontent-sjc3-1.xx.fbcdn.net/v/t39.2365-6/470135129_...
जिस गर्मी में BERT आया था, मैं एक ऐसे startup में काम कर रहा था जो character-based CNN model से classification करता था
टीम में हम alternative representation methods पर बहुत सोचते थे, और बाकी team members word vectors को पसंद करते थे, लेकिन मुझे वे खास नहीं लगते थे। जिन documents पर हम काम कर रहे थे उनमें अक्सर dictionary से बाहर के शब्द आते थे, वे शब्द अहम होते थे, और उन्हें फेंक देने से failure हो सकता था
चूंकि हम भी एक “base model” बना रहे थे, इसलिए सिर्फ final model में शब्दों का out-of-vocabulary होना ही नहीं, बल्कि training cost अधिक होने वाले base model stage में उनका out-of-vocabulary होना भी समस्या था
character-based model से classification काफी अच्छा था, लेकिन यह धारणा थी कि “dictionary” को neural network के अंदर store करना neural network का अच्छा उपयोग नहीं है, इसलिए tokens से काफी उम्मीद थी
दूसरी तरफ, मुझे पूरा यकीन था कि Word2Vec जैसी approaches में भविष्य नहीं है, इसलिए मैंने पहले वाला project भी छोड़ दिया था जिसमें PubMed case reports के fake abstracts लिखने के लिए RNN train करके text understanding के लिए base model बनाया जा रहा था
जब byte-pair encoding आया, तो मुझे याद है कि meeting में मैंने कहा था कि हमने जिन tokenization methods को देखा है, उनमें यह पहला है जिसका मैं समर्थन कर सकता हूं
फिर भी ईमानदारी से कहूं तो मुझे अब भी लगता है कि काश character level पर काम किया जा सकता
tokens एक अस्थायी उपाय हैं। वे आम तौर पर अच्छी तरह काम करते हैं, लेकिन जब नहीं करते तो साफ दिख जाता है
[1] https://arxiv.org/abs/2103.06874
असल दुनिया में लोग हर दिन dictionary से बाहर के शब्द बनाते और इस्तेमाल करके communicate करते हैं। जैसे “notify” dictionary में है, लेकिन “किसी को सूचना देने का साधन” के अर्थ में “notifier” नहीं है, और email alerts भेजने वाला code “email notifier” बन जाता है। फिर आगे text message, voice call, call-center callback notifier जैसी चीजें आती हैं
हर industry और organization में jargon, dictionary से बाहर के custom words, और कम distinguishable abbreviations होते हैं
अगर machine learning output असली communication को handle नहीं कर सकता और सिर्फ lab-style में साफ-सुथरे in-dictionary responses दे सकता है, तो वह कैसे useful होगा, समझ नहीं आता
उम्मीद है यह अच्छी तरह solve हो। tokenizers को खत्म हो जाना चाहिए
यह hierarchical structure है, लेकिन interesting है कि hierarchy में सिर्फ दो levels हैं। ज्यादा levels जोड़ना आगे के research की natural direction लगता है
संदर्भ के लिए, मैंने एक related दूसरे post[1] पर भी यह comment किया था, और author ने इस तरह जवाब दिया था
“मैं author हूं :), मुझे लगता है यह देखने लायक अच्छी direction है! हालांकि इसे एक साथ करने पर काम थोड़ा ज्यादा बढ़ जाने के अलावा, पूरी hierarchy में FLOP budget कैसे बांटना है, इस पर सावधानी चाहिए। दो levels हों तो एक level (byte/local encoder) को FLOP-efficient और दूसरे level (patch/global encoder) को FLOP-intensive बनाया जा सकता है। patches को बड़े units में group करने का तरीका भी ढूंढना होगा। फिर भी यहां से आगे बढ़ने की कई directions हैं!”
[1] https://news.ycombinator.com/item?id=42413430
patches बनाने के लिए एक छोटा model input string के अगले character की probability predict करता है
अगर input string “Lazy dog jumped over a fence.” है, तो model हर character की probability predict करता है
उदाहरण के लिए, वह 100% sure हो सकता है कि अगला character “a” है, या ऐसा भी हो सकता है कि “a” 10%, “b” 10% हो
फिर character estimates को साथ में bundle किया जाता है। कितने characters? इतने कि हर bundle की कुल uncertainty, यानी entropy, करीब-करीब समान हो
इससे patch या “token” बनता है
वे सिर्फ अगले byte की entropy का उपयोग करते हैं, और देखते हैं कि वह threshold से ऊपर है या नहीं (global constraint), या पिछले byte की entropy से किसी दूसरे threshold जितनी ज्यादा है या नहीं (approximate monotonic constraint)
इसलिए appendix E में दिखाए गए अनुसार, लंबी और repetitive sequences pathological रूप से लंबे patches तक ले जा सकती हैं
सच में दिलचस्प बात figure 3(f) का 2-byte context इस्तेमाल करने वाला छोटा CNN byte-level model है, लेकिन paper के बाकी हिस्से में इसका कहीं जिक्र नहीं है
हाल की related post:
Meta FAIR की नई research, model और dataset sharing - https://news.ycombinator.com/item?id=42412360 - दिसंबर 2024, 61 comments
क्या इसका मतलब है कि model को सिखाने वाली एकमात्र चीज, यानी loss, single-byte space में probability prediction ही है?
अगर मैं गलत नहीं समझ रहा, तो सिर्फ वही पर्याप्त है, और यह काफी promising लगता है
मेरी समझ से, क्या यह approach सिर्फ tokenization ही नहीं बल्कि sampling को भी remove नहीं करती?
sampling LLM की परेशानी हो सकती है, लेकिन यह interesting uses भी संभव बनाती है, जैसे model को हमेशा valid JSON देने के लिए grammar enforce करना, ज्यादा diverse distribution पाने के लिए temperature adjust करना, या XTC sampling इस्तेमाल करना
BLT में इसका equivalent क्या होगा?
decoder को allowed/disallowed bytes को extra input के रूप में देना, और valid output आने तक decoding repeat करना—इसके अलावा मुझे कुछ नहीं सूझता, लेकिन शायद कोई ज्यादा simple और obvious approach हो
BPE-based models की तरह, output layer पर सिर्फ allowed bytes के लिए softmax calculate करके वहीं से sample करना होगा
क्या इसका मतलब है कि AI binary पर भी pretrain कर सकता है?
हम सोचते हैं कि AI का हमारे लिए code लिखना ही अंत है, लेकिन शायद वह इससे कहीं ज्यादा simple तरीके से कब्जा कर सकता है
यह interesting है कि linguistic approach और experience-based approach कितनी out of fashion हो गई हैं
इंसान, भले संभव हो, आमतौर पर हर character को अलग-अलग पढ़कर नहीं पढ़ते। हमारे पास stems होते हैं, और हम inflections भी समझते हैं। tokenization इस experience को reproduce नहीं करती, खासकर LLM vocabulary में दिखने वाले tokens को देखें तो, और character या byte encoding भी ऐसा नहीं करते
इंसान शब्दों को parse करने के कई तरीके इस्तेमाल करते हैं। वे पूरे sentence को एक साथ समझ सकते हैं, phrases पढ़ सकते हैं, word-by-word पढ़ सकते हैं, या नए शब्द को character-by-character जोर से पढ़कर decode कर सकते हैं
बहुत कम papers स्पष्ट रूप से यह दावा करते हैं कि कोई method इसलिए अच्छा है क्योंकि वह इंसानों के task करने या दुनिया को perceive करने के तरीके को reproduce करता है
जैसे-जैसे LLM पर dependency बढ़ेगी, मुझे लगता है कि हम models को अपने अनुभव के और करीब align करना चाहेंगे। तब model की errors भी समझने में आसान होंगी
“tokenization के विपरीत, BLT patches के लिए fixed vocabulary नहीं रखता” वाक्य का, अगर मैं सही समझ रहा हूं, मतलब है कि patch vocabulary training से पहले ज्ञात नहीं होती
training जब patch vocabulary establish कर देती है, तो inference में वही fixed vocabulary इस्तेमाल होगी, ऐसा लगता है। अगर नहीं, तो यह कैसे काम कर सकती है, समझ नहीं आता
सही है?