2 पॉइंट द्वारा GN⁺ 2024-05-09 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • लंबा response बनाते समय token को एक-एक करके generate करने वाला autoregressive (AR) decoding latency का मुख्य bottleneck है, और CLLM इसे n-token इकाइयों में parallel decoding से कम करने का तरीका है
  • Consistency Large Language Models(CLLMs) pre-trained LLM को fine-tune करके इस तरह train किए जाते हैं कि वह किसी भी n-token state को AR greedy result वाले fixed point पर तेज़ी से map कर सके
  • Jacobi decoding सैद्धांतिक रूप से AR greedy generation जैसे ही result पर converge करता है, लेकिन मौजूदा LLMs में औसतन केवल 1.05x के सीमित speedup तक ही पहुँचा, इसलिए इसकी व्यावहारिक उपयोगिता कम रही
  • CLLM ने Spider, Human-Eval, GSM8k, MT-bench प्रयोगों में 2.4x~3.4x generation speedup दिखाया, और Medusa2, Eagle जैसे fast inference तरीकों के बराबर या उनसे बेहतर माना गया
  • inference के समय auxiliary model component या target model architecture में बदलाव की ज़रूरत नहीं होती, इसलिए speed improvement के साथ memory efficiency भी हासिल की जा सकती है

CLLM जिस decoding bottleneck को लक्ष्य बनाता है

  • LLMs का उपयोग programming, legal, health advice जैसे कई क्षेत्रों में होता है, लेकिन inference चरण में वे आमतौर पर autoregressive (AR) decoding से token एक-एक करके generate करते हैं
  • response जितना लंबा होता है, token-by-token generation के कारण latency उतनी बढ़ती है, और user को महसूस होने वाला wait time भी लंबा हो जाता है
  • मौजूदा fast inference तरीके अक्सर एक बार में कई token बनाने के लिए architecture modification, auxiliary component, या draft model की मांग करते हैं

Jacobi decoding कैसे काम करता है और इसकी सीमाएँ

  • Jacobi decoding Jacobi और Gauss-Seidel fixed-point iteration से निकला तरीका है, और greedy decoding में इसे AR generation के समान सिद्ध किया गया है
  • यह sequential generation को n variables और n nonlinear equations की system में बदलता है, ताकि Jacobi iteration के जरिए parallel computation संभव हो सके
  • इसका ठोस flow इस प्रकार है
    • input prompt से अगले n tokens का random guess किया जाता है
    • prompt और n-token sequence को LLM में डालकर बार-बार update किया जाता है
    • जब sequence बदलना बंद कर दे, तो fixed point तक पहुँचा माना जाता है
    • अंतिम n-token sequence greedy strategy में AR decoding द्वारा generate किए गए output पर converge करता है
  • शुरुआती random guess से अंतिम AR generation result तक जाने वाले path को Jacobi trajectory कहा जाता है
  • मूल Jacobi decoding ने वास्तविक LLMs में AR decoding की तुलना में औसतन केवल 1.05x के आसपास का सीमित speedup दिखाया
    • AR से train किए गए LLMs के लिए, अगर पहले token में गलती हो तो बाद के tokens का सही अनुमान लगाना कठिन होता है
    • अधिकांश Jacobi iterations n-token sequence में केवल एक token ही सुधारते हैं, इसलिए trajectory लंबी हो जाती है
  • Lookahead decoding और speculative decoding, Jacobi decoding और मौजूदा AR decoding की inefficiency को कम करने की कोशिश करते हैं, लेकिन inference के समय अतिरिक्त memory cost पैदा करते हैं

Consistency LLM का training objective

  • CLLM pre-trained LLM को इस तरह adapt करता है कि वह Jacobi trajectory के किसी भी point से लगातार fixed point की ओर बढ़े
  • यह लक्ष्य diffusion model acceleration तकनीक consistency models के उद्देश्य से मिलता-जुलता है
  • target model से एकत्र की गई Jacobi trajectories का उपयोग करके, model को ऐसे loss से train किया जाता है जो Jacobi iteration के दौरान single-step convergence को प्रोत्साहित करे
  • हर target model को CLLM में बदलने की training दो भागों में बनी होती है
    • Jacobi trajectory preparation
      • हर prompt के लिए n-token units में सभी truncated segments पर Jacobi decoding को क्रमशः चलाया जाता है
      • पूरी response sequence लगातार fixed points को जोड़कर बनी संरचना बन जाती है
      • trajectory में generate की गई हर sequence को एक training data item माना जाता है
      • लंबी response में पूरे लंबे input के evaluation से speed slowdown से बचने के लिए n-token truncation का उपयोग किया जाता है
    • Consistency loss और AR loss की joint optimization
      • consistency loss model को एक साथ कई token predict करने के लिए प्रेरित करता है
      • AR loss यह सुनिश्चित करता है कि CLLM target LLM के distribution से बहुत दूर न जाए, जिससे generation quality बनी रहे

Loss function की संरचना

  • target LLM को p और CLLM को माना जाता है, जहाँ को p के parameters से initialize किया जाता है
  • Global consistency (GC) loss CLLM को प्रेरित करता है कि Jacobi trajectory की किसी भी state y को input देने पर वह fixed point y* output करे
  • Local consistency (LC) loss Jacobi trajectory की पड़ोसी states y(j) और y(j+1) को एक जैसा output देने के लिए align करता है
  • distributions के बीच distance D(·||·) के लिए GKD method में चर्चा किए गए विकल्प अपनाए गए, और इस प्रयोग में मुख्य रूप से forward KL का उपयोग किया गया
  • AR loss target LLM p के generated result l के आधार पर पारंपरिक autoregressive loss लागू करता है, ताकि target LLM distribution से विचलन न हो
  • कुल training loss consistency loss और weight w से गुणा किए गए AR loss के योग से बनता है

प्रयोग सेटअप और परिणाम

  • प्रयोगों में तीन specialized domain tasks और एक open-domain dialogue benchmark शामिल थे
    • Spider: text-to-SQL
    • Human-Eval: Python code completion
    • GSM8k: गणित
    • MT-bench: open-domain dialogue
  • task के अनुसार target models के रूप में fine-tuned coder LLM, Deepseek-coder-7B-instruct, LLaMA-2-7B, ABEL-7B-001 का उपयोग किया गया
  • training और evaluation दोनों NVIDIA A100 40GB server पर किए गए
  • specialized domains में, मूल target model, Medusa2, speculative decoding जैसे baselines की तुलना में CLLM ने सबसे बड़ा speed improvement दिखाया
  • MT-bench में ShareGPT dataset पर LLaMA2-7B से train किया गया CLLM, lookahead decoding के साथ मिलकर Medusa2 जैसा speedup हासिल करता है
    • MT-bench score भी तुलना योग्य स्तर पर था
    • CLLM को target model की मूल architecture में बदलाव की ज़रूरत नहीं होती
    • auxiliary component न होने से memory efficiency अधिक रहती है

Training cost

  • CLLM fine-tuning cost को मध्यम स्तर का बताया गया है
  • LLaMA-7B ने Spider dataset पर केवल लगभग 1 million tokens pass करके 3.4x speedup हासिल किया
  • CodeSearchNet-Python जैसे बड़े dataset में, Jacobi trajectory generation के लिए dataset के केवल 10% का उपयोग करके लगभग 2.5x speedup मिला
  • कुल token संख्या का अनुमान इस सूत्र से लगाया गया
    • प्रति prompt औसत trajectories × औसत trajectory length × prompts की संख्या
  • dataset के अनुसार अनुमानित training cost इस प्रकार है
    • Spider: 2 million tokens, pre-training cost का < 0.01%
    • CodeSearchNet-Python: 100 million tokens, pre-training cost का ~0.1%
    • GSM8K: 10 million tokens, pre-training cost का ~0.01%
    • ShareGPT: 200 million tokens, pre-training cost का ~0.2%

Fast forwarding और stationary tokens

  • target LLM आमतौर पर एक Jacobi iteration में केवल एक सही token generate करता है
  • CLLM में एक Jacobi iteration के भीतर कई लगातार tokens को सही predict करने की fast forwarding घटना दिखाई देती है
  • target LLM में पहले सही generate हुए tokens भी बाद की iterations में गलत tokens में बदल सकते हैं
  • CLLM यह क्षमता दिखाता है कि पहले tokens में गलती होने पर भी वह सही token पहले से predict कर लेता है, और बाद में भी उसे बनाए रखता है
    • ऐसे tokens को stationary tokens कहा जाता है
  • fast forwarding और stationary tokens, CLLM के Jacobi decoding को तेज़ी से converge करने में मदद करते हैं, जिससे generation speed बेहतर होती है

भाषाई pattern learning

  • देखा गया कि CLLM training के जरिए collocations जैसी भाषाई अवधारणा सीखता है
  • collocations का अर्थ ऐसे शब्दों या terms की शृंखला से है जो random chance की तुलना में अधिक बार साथ दिखाई देते हैं
  • प्राकृतिक भाषा और code दोनों में collocations के उदाहरण मिलते हैं
    • प्राकृतिक भाषा: talk to, remind … of …
    • verb+noun structure: make a decision, catch a cold
    • domain-specific grammar structure: SELECT … FROM …, if … else
  • consistency generation objective, CLLM को Jacobi trajectory के किसी भी point पर ऐसी संरचनाओं का अनुमान लगाने में सक्षम बनाता है, जिससे iteration steps कम करने के लिए कई शब्द एक साथ predict करने का प्रोत्साहन मिलता है

सामग्री और code

  • अधिक जानकारी paper में देखी जा सकती है
  • implementation codebase के रूप में उपलब्ध है
  • CLLM checkpoints भी सार्वजनिक किए गए हैं

1 टिप्पणियां

 
GN⁺ 2024-05-09
Hacker News की राय
  • यह उस अनुभव जैसा है जब मैंने “फ्री ड्रॉइंग” (कोई lecture नहीं) की class ली थी
    बचपन से मुझे कहा जाता था कि मैं अच्छा drawing करता हूँ, लेकिन सच में याद यही है कि मैं पहले बनाई हुई मिलती-जुलती detailed drawings को दोहराता था या बहुत समय लगाकर बनाता था। मुझे लगता है कि समय और धैर्य हो तो कोई भी किसी scene को काफी भरोसेमंद ढंग से बना सकता है
    class में कोई नियम या lecture नहीं थे, और हर कोई अपनी पसंद का material लाता था। कोई ink लाया, कोई pencil, मैं charcoal लेकर गया, और सिर्फ model poses के बीच का समय तय था। शुरुआती कुछ poses करीब 1 minute के बहुत छोटे थे, फिर धीरे-धीरे लंबे होकर 5 minute poses तक गए, और आप कभी भी drawing फाड़कर उसी pose को फिर से बना सकते थे
    छोटे warm-up असल में proportions और outlines को पहली कोशिश में सही करने के लिए मजबूर करते थे, और इस आम धारणा के उलट कि जल्दबाजी करने से सब बिगड़ता है, लगता है कि skill सीखते या सुधारते समय जल्दबाजी एक stress factor की तरह काम करती है जो ध्यान और learning को प्रेरित करती है
    class से पहले भी शायद मैं उसी quality की drawing बना सकता था, लेकिन मुझे यकीन है कि उसमें 5–10 गुना ज्यादा समय लगता। भटकने न देना और जल्दबाजी की गलतियों की कीमत महसूस कराना—यह तरीका असरदार था
    हालांकि इस technique को Consistency कहना थोड़ा अफसोसजनक है। performance improvement के लिए यह नाम ठीक लगता है, लेकिन inference speed improvement के लिए कम सही लगता है; मैं समझता हूँ कि इसका मतलब “एक-एक token generate करने पर आखिर में जो result आता, उसके साथ consistency” है। मैं तो इसे Proficiency LLM कहना पसंद करूँगा, जहाँ वही output expected हो, लेकिन उसी conclusion तक लड़खड़ाते हुए पहुँचने वाली रोक-टोक न हो

    • CLLM के author के रूप में, अपना अनुभव और insight share करने के लिए धन्यवाद। Drawing skill को refine करने की प्रक्रिया CLLM training process जैसी लगती है, बस अभी CLLM training में stress factor ऐसा नहीं है जो धीरे-धीरे और कठिन होता जाए
      Drawing में हर कोशिश के लिए allowed time तय करके उसे धीरे-धीरे छोटा किया जा सकता है। CLLM में Jacobi trajectory में अंतिम state से increasingly दूर states को final state पर map करवाकर training process को और कठिन बनाया जा सकता है
      “consistency” term diffusion image generation के consistency model और consistency LLM के बीच similarity से लिया गया है, क्योंकि उनकी training process एक-दूसरे जैसी है
    • एक गर्मियों में invertebrate zoology lab class में मेरा दिलचस्प अनुभव रहा
      Students lab में जाते, specimen पाते, और instruction बस इतना होता: “इसे 30 minutes में draw करो। शुरू”
      “drawing ऐसे करते हैं”, “यह करो और वह मत करो” जैसी कोई बात नहीं थी; असल में यह कुछ ऐसा था: “तुम anxious हो या तुम्हें लगता है कि तुम draw नहीं कर सकते, इससे फर्क नहीं पड़ता। बहाने मत बनाओ, बस draw करो। अभी”
      हम सबने draw किया, और पूरी गर्मियों में जैसे-जैसे और animals आते रहे और वही training repeat होती रही, हम सब बहुत ज्यादा improve हुए
      उस class ने सिखाया कि कोई भी—सचमुच कोई भी—draw कर सकता है। Group attitude “पता नहीं यह संभव भी है या नहीं” से बदलकर “बिलकुल कर सकते हैं। यह आसान, रोजमर्रा की और कोई बड़ी बात नहीं है” हो गया
      यह approach strongly recommend करने लायक है, और university में ली गई classes में यह सबसे liberating और surprising class थी
    • Systems आम तौर पर stress में ज्यादा efficient हो जाते हैं। साथ ही वे local optimum की ओर धकेले भी जा सकते हैं, इसलिए हर चीज के pros और cons होते हैं
  • Authors कहते हैं कि Jacobi decoding greedy autoregressive decoding के समान है, लेकिन व्यवहार में repetition और overly generic answers से बचने के लिए sampling temperature को 0 से ऊपर रखना अक्सर जरूरी नहीं लगता क्या?
    मैं इस decoding strategy को बिल्कुल नहीं जानता, इसलिए शायद इसे reflect करने का कोई आसान तरीका मैं miss कर रहा हूँ

    • अच्छा सवाल है। Greedy sampling के अलावा दूसरी sampling strategies को भी support करने पर हम actively काम कर रहे हैं
      CLLM training के context में, Jacobi decoding से मिले static fixed point को training objective में map करने के बजाय, हम इसे dynamic fixed point कहते हैं। नई progress के लिए GitHub repository देखते रहें
    • सहमत हूँ। यह check करना आसान है कि कौन-सा token max-value selection था, लेकिन यह check करना मुश्किल लगता है कि कौन-सा token desired probability के साथ आया
      Desired statistics वाले n-token completion की ओर trajectory को approach करने के लिए train करने वाला fine-tuning step अभी भी संभव होगा, लेकिन fixed-point verification step को कैसे replace किया जा सकता है, यह मुझे ठीक से समझ नहीं आता। शायद “likelihood के लिए इस fixed threshold से ऊपर था या नहीं, यह check करो” जैसा कुछ हो सकता है
  • LLM के अंदर सच में क्या हो रहा है, इसे वास्तव में समझने से पहले यह काफी risky optimization जैसा लगता है। उदाहरण के लिए geometric interpretation पर भरोसा करने वालों के पास कुछ कहने को होगा, और “fill” tokens इस्तेमाल करने पर यह harmful भी लग सकता है
    साथ ही “मन में पूरा sentence बना लेने के बाद शब्द-दर-शब्द बोलते हैं” वाली assumption कोई universal fact नहीं, बस assumption है, और हमारे मन में चलने वाली activity को बहुत ज्यादा सरल बना देती है। क्या बोलने या type करने से पहले सचमुच पूरा plan होता है? एक Buddhist के रूप में मुझे यह illusion के करीब लगता है। और आगे, simultaneous thoughts का क्या? क्या हम sentence units में linearly सोचते हैं?
    खैर, math काफी cool है

    • यह optimization LLM के results को प्रभावित नहीं करती, और direct decoding के साथ equivalent result generate करने की guarantee देती है
      LLM को हमारे mind जैसा कोई magical thing न मानें। यह बस एक और program है जो meaningful sentences बनाता है
    • वह assumption इस context में useful हो सकती है, लेकिन यह सच नहीं है, यह काफी साफ लगता है
      अगर किसी complex past event को कई branches में समझाने को कहा जाए, तो लोग पूरे event scope को समेटने के लिए sentence के बीच में pieces, additions और side branches तेजी से insert करते हैं। sentence-level granularity hypothesis को मैंने किसी serious scientific context में नहीं देखा लगता
    • मैं सबके लिए नहीं कह सकता, लेकिन कम से कम मैं बोलने से पहले अपने दिमाग में पूरा sentence नहीं बनाता
      कभी-कभी sentence के बीच में grammatical dead end में फँसकर किसी awkward word या phrase से thought को खत्म करना पड़ता है, या बस रुककर शुरू से फिर बोलना पड़ता है
    • शब्द कई languages में meaning रखने वाली छोटी units में टूट सकते हैं, फिर भी ऐसा नहीं लगता कि हम उन lower-level components से sequentially words बनाते हैं
      यह phenomenon sentence level पर अचानक टूट जाए, इसकी कोई साफ वजह भी नहीं दिखती
    • जानना चाहूँगा कि geometric interpretation क्या है
  • हैरानी है कि इसे और ज़्यादा ध्यान नहीं मिल रहा। यह inference performance में साफ़ फ़ायदा लगता है
    इस fine-tuning की लागत वाजिब है, और मूल pretraining लागत के लगभग 0.01% के स्तर की है। performance gain भी काफ़ी consistent दिखता है

    • यह LLM performance के लिए बहुत बड़ा नतीजा लगता है
      मुझे कोई और paper ठीक से याद नहीं जो सुझाव देता हो कि LLM inference performance को इतना बढ़ाया जा सकता है। क्या पहले ऐसा हुआ है?
      ख़ासकर कम-से-कम output quality बनाए रखते हुए, query latency के साथ-साथ overall throughput भी सुधारते हुए, अतिरिक्त computation की मांग किए बिना, और implementation भी अपेक्षाकृत practical रखते हुए व बहुत अधिक complexity न जोड़ते हुए
      यह parallel/Jacobi decoding पर हुए काम के ऊपर बना है, इसलिए insight को incremental भी कहा जा सकता है। पहले के नतीजे भी ज़रूरी और अहम थे, लेकिन parallel decoding की संभावना से real-world value निकालने वाला नतीजा शायद यही हो सकता है
    • इसी तरह या उससे भी बड़े inference gains पहले से व्यापक रूप से इस्तेमाल होने वाली speculative decoding से भी मिलते हैं
      इसलिए यह काम वाकई दिलचस्प है, और मेरी जानकारी में पहले भी इसे कम सफल रूप में आज़माया गया है, लेकिन इसका वास्तविक असर कितना बड़ा होगा यह अभी स्पष्ट नहीं है
    • हमारे काम में रुचि लेने के लिए धन्यवाद। consistency loss + AR loss के साथ dataset के सिर्फ़ एक हिस्से पर training करने से भी काफ़ी speedup मिला, और लागत pretraining के 0.01% स्तर पर थी
      ज़्यादा data से training करने पर speed और बढ़ती है। वजह यह है कि model ज़्यादा बार आने वाले collocations और phrases से सीख सकता है
      details के लिए paper देखें, और यह भी दिखता है कि training data size बढ़ने पर speedup eventually saturate हो जाता है
  • शुरुआत में मुझे लगा था कि यह बाद के tokens का अनुमान लगाने के लिए unembed head ज़्यादा इस्तेमाल करने वाले Medusa-type papers में से है, लेकिन ऐसा बिल्कुल नहीं था
    वाकई कमाल है। कोई additional parameters भी नहीं, बस auxiliary training loss जोड़ते हैं

    • Medusa और CLLM में केवल एक common बात है कि दोनों fast inference के लिए LLM को train/adapt करते हैं
      training technique और decoding technique पूरी तरह अलग हैं, और जैसा बताया गया, CLLM को additional parameters या tree-based verification के लिए attention mask setup की ज़रूरत नहीं होती
  • लगता है जल्द ही हमें एहसास होगा कि models को train करना ज़रूरी नहीं है
    ज़रूरत अच्छी indexing और sampling की है
    मूल रूप से किसी स्तर पर सभी LLMs को dataset के database जैसा माना जा सकता है, जिसके ऊपर एक शानदार natural language interface लगा है
    दोनों stored data को explore करने के अलग-अलग तरीके ही हैं

    • LLM training dataset में न मौजूद data आसानी से बना सकता है
      LLM stored data को explore नहीं करता। LLM training data का database नहीं है
    • लेकिन indexing भी training ही है। बस यह end-to-end gradient descent का इस्तेमाल नहीं करती
    • model training data के compressed version से भी कई orders of magnitude छोटा होता है, इसलिए वह उस database के बराबर नहीं हो सकता
    • तो शायद आपको Infinigram paper पसंद आए। हाल ही में इस पर चर्चा हुई थी
      https://news.ycombinator.com/item?id=40266791
  • क्या मेरे जैसे किसी अनजान व्यक्ति के लिए कहीं “AI expert से पूछें” जैसी जगह है?
    उदाहरण के लिए, मैं पूछना चाहता हूँ कि LLM एक ही prompt मिलने पर भी उसी deterministic तरीके से response क्यों नहीं देता
    मैं यह सीखना चाहता हूँ, और शायद YouTube पर “1 घंटे में LLM बनाएं” जैसे videos follow करने पड़ें

    • software में सचमुच एक random number generator होता है, जो model द्वारा दिए गए weighted next token candidates में से एक चुनता है
      selection process में response को manipulate करने के कई knobs हो सकते हैं। अगर आप इसे deterministic बनाना चाहते हैं और software तक direct access है, तो इस्तेमाल हो रहे software के अनुसार top-k = 1 या temperature = 0.0 set करने पर यह deterministic हो जाता है
      आम तौर पर default setting deterministic नहीं होती, क्योंकि पूरी तरह deterministic बनाने पर result quality अच्छी नहीं रहने की tendency होती है
    • उस जवाब के लिए 3blue1brown video देखें
      LLM model tokens के लिए probability vector output करता है, और LLM user random numbers का इस्तेमाल करके likely list से token चुनता है
    • क्योंकि LLM मूल रूप से probability matrix है
      prompt input करने पर यह next word की probability calculate करता है, और इस process को repeat करके आखिर में sentence बनाता है। learned probabilities training data पर आधारित होती हैं
      इस base probability model की वजह से यह 100% deterministic नहीं होता। ऊपर से ChatGPT जैसे models जानबूझकर temperature parameter रखते हैं ताकि पूरे process में randomness जोड़ी जा सके
      अगर और पढ़ना चाहें, तो यह जवाब इस paper पर आधारित था: The Matrix: A Bayesian learning model for LLMs, https://arxiv.org/abs/2402.03175
    • ज़्यादातर systems में इसे temperature नाम के inference setting parameter से control किया जा सकता है
      लेकिन temperature को जितना संभव हो उतना low set करने पर answer quality बहुत low होने की tendency होती है। system किसी local optimum से बाहर नहीं निकल पाता और repeat करता रहता है। ऐसे answers “deterministic” तो हो सकते हैं, लेकिन अच्छे नहीं
    • यह article काफ़ी systematic तरीके से समझाता है और फिर भी big picture नहीं खोता; यह अच्छा starting point था
      https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-...
  • free lunch नहीं होता, इसलिए मुझे लगता है कि यहाँ भी कोई path loss है
    उदाहरण के लिए, कुछ Jacobi trajectories definition के हिसाब से higher-temperature paths को exclude करती हैं। data retrieval के point of view से यह उल्टा positive भी हो सकता है, लेकिन अगर creativity maximize करनी हो तो negative हो सकता है

    • बेहतर algorithms और खराब algorithms होते हैं
      मुझे नहीं पता कि “no free lunch” हमेशा खास तौर पर meaningful तरीके से apply होता है या नहीं। कुछ चीज़ें Pareto frontier पर नहीं होतीं
  • “अनुमानित decoding तरीके में inference के समय अतिरिक्त memory cost आती है” वाले हिस्से पर और विस्तार से समझना चाहूँगा
    अनुमानित decoding में एक छोटा model तेज़, लेकिन संभवतः कम सटीक “branches” बनाता है, और फिर बड़ा model इन branches को verify करता है। लेकिन अनुमानित decoding में केवल एक token के बराबर memory चाहिए होती है, और दूसरी branches के tokens inference के दौरान बस mask कर दिए जाते हैं। अगर context size 1000 हो और 5-token वाली करीब 30 branches हों, तो memory overhead 3% है, जिसे नज़रअंदाज़ किया जा सकता है। अगर context size branches की संख्या की तुलना में बहुत छोटा है, तो क्या 50-token के context window वाले generative LLM user को generation speed की चिंता होगी, ऐसा लगता नहीं
    साथ ही, अनुमानित decoding technique greedy sampling तक सीमित नहीं है। इसे original model के बिल्कुल समान काम करना चाहिए और expected probability से sampling करनी चाहिए। अनुमानित decoding से जुड़े ज़्यादातर literature में पहले ही 2.6~3.5 गुना speed improvement report किया गया है। यह blog post 2.4~3.4 गुना generation speed बताती है, तो पता नहीं यह इतना बड़ा upgrade है या नहीं
    ऊपर अनुमानित decoding का ज़िक्र किया गया था और लेखक ने जिन techniques से तुलना की है वे Medusa2 और Eagle लगती हैं, लेकिन मुख्य समस्या वैसी ही है। token को पहले से predict करने का कोई भी तरीका इस्तेमाल करें, कुछ खास points ऐसे होते हैं जहाँ अगले token को predict करने से पहले पिछले token की बिल्कुल ज़रूरत होती है। यह model या technique पर निर्भर समस्या नहीं, बल्कि गणितीय रूप से क्या संभव है, इसका सवाल है। अगर पाँचवें अगले token की probability distribution पिछले चार tokens पर बहुत निर्भर करती है, तो 5 tokens को एक साथ कैसे predict किया जा सकता है? चाहे अनुमानित decoding हो, Jacobi decoding हो, या multi-token parallel decoding—बात वही है
    अगर यह तरीका सिर्फ greedy sampling support करता है, तो इसका फायदा क्या है, इस पर सवाल है। खासकर जब दूसरी techniques पहले ही अपेक्षित speed improvement हासिल कर रही हैं। greedy sampling speed improvement की तुलना random sampling speed improvement से करना apples और oranges की तुलना जैसा है, और इस तरीके को random sampling के हिसाब से बदलने के बाद भी ऊपर बताई मुख्य समस्या के कारण वही speed improvement बची रहेगी या नहीं, इस पर संदेह है

    • “अगले token को predict करने से पहले पिछले token की बिल्कुल ज़रूरत होती है” वाला हिस्सा शायद इस paper का core contribution हो सकता है
      consistency training के ज़रिए यह दिखाया गया हो सकता है कि पिछले tokens में गलत guesses होने पर भी LLM अगले n tokens predict कर सकता है
      दूसरी ओर, गणितीय रूप से p(x_t|x_1,...,x_t-1) का x_1 से x_t-1 तक सभी पर निर्भर होना सही है, लेकिन असल में x_t को predict करने के लिए शायद x_1 से x_t-2 तक ही चाहिए और x_t-1 पर attention नगण्य हो सकती है। इसलिए x_1 से x_t-2 और गलत x_t-1 के साथ भी x_t predict किया जा सकता है
    • अनुमानित decoding में छोटे model को memory में load करना और उसी model से inference चलाना पड़ता है
  • दिलचस्प चीज़ है। यह ऐसा idea है जो कई लोगों के दिमाग में आया होगा, लेकिन लेख और presentation अच्छी तरह व्यवस्थित थे

    • सही है। मेरे roommate और मैंने 1 साल पहले ऐसी बात की थी। LLM steering में भी कुछ ऐसा किया जा सकता है