अनुमानाद्वारे Sonar चा वेग वाढवणे
ड्राफ्ट मॉडेल पडताळणीद्वारे स्पेक्युलेटिव्ह डिकोडिंग Sonar LLM चा वेग वाढवते
स्पेक्युलेटिव्ह डिकोडिंग, एका वेगवान आणि छोट्या ड्राफ्ट मॉडेलचा वापर करून लार्ज लँग्वेज मॉडेल्स (LLMs) ची जनरेशन स्पीड वाढवते, जे नंतर मोठ्या टारगेट मॉडेलद्वारे तपासले जाणारे पूर्णत्वाचे पर्याय तयार करतात. या पद्धतीनुसार, महागड्या टारगेटच्या एकाच रनमध्ये एकच टोकन तयार करण्याऐवजी, एकाच टप्प्यात अनेक टोकन्स तयार केले जातात. Sonar मॉडेलवरील इंटर-टोकन लेटेंसी कमी करण्यासाठी Perplexity वर लागू केलेल्या विविध प्रकारच्या स्पेक्युलेटिव्ह डिकोडिंगचे अंमलबजावणी तपशील आम्ही येथे सादर करत आहोत.
स्पेक्युलेटिव्ह डिकोडिंग
स्पेक्युलेटिव्ह डिकोडिंग हे टोकन जनरेशनचा वेग वाढवण्यासाठी नैसर्गिक भाषांच्या संरचनेचा आणि ट्रान्सफॉर्मर्सच्या ऑटो-रेग्रेसिव्ह स्वरूपाचा लाभ घेते. Llama-70B सारखी मोठी मॉडेल्स, Llama-1B सारख्या लहान मॉडेल्सपेक्षा अधिक ज्ञान बाळगत असली, तरी काही सोप्या कामांवर ती सारखीच कामगिरी करतात. हे साम्य सुचवते की काही अनुक्रम (sequences) कमी खर्चिक मॉडेल्सद्वारे उत्तम प्रकारे तयार केले जातात, तर जटिल समस्या मोठ्या मॉडेल्सवर सोडवण्यासाठी सोडल्या जातात. कोणते पूर्णत्व (completions) अधिक चांगले आहेत आणि लहान मॉडेलचे जनरेशन मोठ्या मॉडेलच्या गुणवत्तेचे आहे का, हे ठरवणे हे आव्हान असते.
सुदैवाने, LLMs हे ऑटो-रेग्रेसिव्ह ट्रान्सफॉर्मर्स आहेत: जेव्हा त्यांना टोकन्सचा क्रम दिला जातो, तेव्हा ते पुढील टोकनची संभाव्यता वितरण (probability distribution) आउटपुट करतात. याव्यतिरिक्त, इनपुट अनुक्रममधील टोकन्सशी संबंधित इंटरमीडिएट वैशिष्ट्यांपासून प्राप्त झालेले लॉजिट्स हे देखील दर्शवतात की मॉडेलसाठी नेमके तेच टोकन्स जारी करण्याची शक्यता किती आहे. हा गुणधर्म स्पेक्युलेटिव्हेशन सक्षम करतो: जर इनपुट प्रिफिक्सपासून सुरू करून लहान मॉडेलद्वारे टोकन्सचा क्रम तयार केला गेला, तर टारगेट मॉडेलशी तो किती चांगल्या प्रकारे जुळतो हे निर्धारित करण्यासाठी तो मोठ्या मॉडेलमधून चालवला जाऊ शकतो. प्रत्येक उमेदवाराच्या प्रिफिक्सला संभाव्यतेसह गुणले जाते आणि स्वीकृती उंबरठ्यापेक्षा (acceptance threshold) सर्वात लांब प्रिफिक्स निवडले जाते. बोनस म्हणून, टारगेट मॉडेल देखील विनामूल्य एक त्यानंतरचे टोकन प्रदान करते: जर ड्राफ्ट मॉडेल n टोकन्स जनरेट करत असेल, तर एका चरणात n + 1 पर्यंत टोकन्स उत्सर्जित केले जाऊ शकतात.
इन्फरन्सच्या वेळी, स्पेक्युलेटिव्ह सॅम्पलिंग प्रक्रिया अंदाजे 4 टप्प्यांमध्ये विभागली जाऊ शकते:
प्रीफिल: केव्ही (KV) कॅश एन्ट्रीज भरण्यासाठी इनपुट अनुक्रमवर टारगेट आणि ड्राफ्ट दोन्ही मॉडेल्स चालवली पाहिजेत. मेदुसा (Medusa) सारख्या काही योजना अंदाजासाठी साध्या डेंस लेअर्स वापरत असताना, या पोस्टमध्ये आम्ही ट्रान्सफॉर्मर-आधारित ड्राफ्ट्सवर लक्ष केंद्रित करतो ज्यांना स्वतःच्या केव्ही कॅशेची आवश्यकता असते.
ड्राफ्ट जनरेशन: निश्चित टोकन्सची संख्या तयार करण्यासाठी ड्राफ्ट मॉडेल पुनरावृत्ती करते. ड्राफ्ट सिक्वेन्स लिनियर असू शकते किंवा मॉडेल दिलेल्या खोलीपर्यंत (EAGLE, Medusa) ट्री-सारख्या संरचनेचा शोध घेऊ शकते. येथे, आम्ही लिनियर सिक्वेन्सेसवर लक्ष केंद्रित करतो.
स्वीकृती (Acceptance): टारगेट मॉडेल ड्राफ्ट सिक्वेन्सवर चालते, प्रत्येक ड्राफ्ट टोकनशी संबंधित लॉजिट्स तयार करते. सर्वात लांब स्वीकार्य सिक्वेन्सची लांबी निर्धारित केली जाते.
टारगेट जनरेशन: टारगेटने लॉजिट्स जनरेट केल्यामुळे, न जुळणाऱ्या स्थितीवर किंवा सिक्वेन्सच्या शेवटी लॉजिट्स नंतरच्या टोकनशी संबंधित असतात. सिक्वेन्स संपवून, टारगेटमधून मजबूत टोकन प्रदान करण्यासाठी या लॉजिट्सचे सॅम्पलिंग केले जाऊ शकते.
स्पेक्युलेटिव्ह डिकोडिंग लागू करण्यासाठी विविध पद्धती अस्तित्वात आहेत. या पोस्टमध्ये, आम्ही इन-हाउस 1B मॉडेलचा वापर करून Sonar मॉडेल्सचा वेग वाढवण्यासाठी वापरलेल्या योजनांवर, तसेच DeepSeek च्या स्केलवर मॉडेल्सचा वेग वाढवण्यासाठी आम्ही तयार करत असलेल्या प्रेडिक्शन मेकॅनिझमवर लक्ष केंद्रित करू.
टारगेट-ड्राफ्ट
कॅंडिडेट सिक्वेन्स जनरेट करण्यासाठी टारगेट मॉडेलशी ड्राफ्ट मॉडेल म्हणून विद्यमान लहान LLM जोडून स्पेक्युलेटिव्ह डिकोडिंग साध्य केले जाऊ शकते. प्रॉडक्शनमध्ये, आम्ही टारगेट समान डेटासेटवर फाईन-ट्यून केलेल्या Llama-1B मॉडेलचा वापर करून Sonar चा वेग वाढवला आहे. या दृष्टिकोनामुळे सुरवातीपासून ड्राफ्ट प्रशिक्षित करण्याची आवश्यकता भासली नाही, तरीही लहान मॉडेल अजूनही महत्त्वपूर्ण केव्ही कॅशे क्षमता वापरते आणि किंचित प्रीफिल ओव्हरहेड सादर करते, ज्यामुळे TTFT वाढते.
या योजनेअंतर्गत, डिकोडर केवळ डिकोड-ओनली बॅचेसवर स्पेक्युलेट करतो, प्रीफिल दरम्यान किंवा मिश्र प्रीफिल-डिकोड बॅचेसवर मानक सॅम्पलिंगद्वारे टोकन्स जनरेट करतो. प्रीफिल टप्प्यात, ड्राफ्टच्या केव्ही कॅशेमध्ये नवीन-जनरेट केलेले टोकन देखील प्रीफिल करण्यासाठी टारगेट लॉजिट्सचे त्वरित सॅम्पलिंग केले जाते. ड्राफ्टचे अजून सॅम्पलिंग केले जात नाही, परंतु ते तयार केलेले लॉजिट्स डिकोड टप्प्यात पुढे नेले जातात.
डिकोडमध्ये, ड्राफ्ट मॉडेल पुढे सरकते, प्रत्येक टप्प्यावर शीर्ष टोकनचे सॅम्पलिंग करते. इच्छित ड्राफ्टची लांबी गाठल्यानंतर, सॅम्पलर ज्याच्या आधारे स्वीकारलेली सिक्वेन्स लांबी ओळखतो ते लॉजिट्स तयार करण्यासाठी टोकन्स टारगेट मॉडेलमधून चालवले जातात. ड्राफ्ट आणि टारगेटमधील पूर्ण संभाव्यता वितरणांची तुलना करून स्वीकृती निर्धारित केली जाते. टारगेट नेहमी स्वीकारलेल्या ड्राफ्ट सिक्वेन्सच्या मागे लॉजिट्सचा एक संच आउटपुट करत असल्याने, अतिरिक्त आउटपुट तयार करण्यासाठी त्याचे सॅम्पलिंग केले जाते. ड्राफ्ट मॉडेलने ते स्वीकारलेले टोकन अजून पाहिले नसल्यामुळे, पुढील डिकोड चरणाच्या तयारीसाठी त्याच्या संबंधित केव्ही कॅशे एन्ट्रीज भरण्यासाठी ते पुन्हा चालवले जाते, ज्यामुळे लॉजिट्स पुन्हा पुढे नेले जातात.
EAGLE
EAGLE ही स्पेक्युलेटिव्ह डिकोडिंग योजना आहे जी संभाव्य ड्राफ्ट टोकन्सच्या ट्री-सारख्या ट्रॅव्हलर्सद्वारे जनरेट केलेल्या एकाधिक ड्राफ्ट सिक्वेन्सचा शोध घेते. लिनियर सिक्वेन्समध्ये सर्वोच्च स्कोअरिंग टोकनचे अनुसरण करण्याऐवजी प्रत्येक नोडवरील टॉप-के उमेदवारांचा विचार करून, एकामागून एक ड्राफ्ट टोकन्सच्या अंमलबजावणीचा वापर करून निश्चित (EAGLE) किंवा डायनॅमिकली-आकाराचे (EAGLE-2) ट्री शोधले जाते. त्यानंतर सिक्वेन्सना स्कोअर दिला जातो आणि टारगेटमधून एक अतिरिक्त टोकन जोडून सुरू ठेवण्यासाठी सर्वात लांब योग्य सिक्वेन्स निवडली जाते.
अधिक अचूक अंदाज साध्य करण्यासाठी, EAGLE ड्राफ्ट मॉडेल केवळ टोकन्सच्या आधारावरच अंदाज लावत नाही, तर टारगेट मॉडेलच्या टारगेट वैशिष्ट्यांचा (शेवटची लेयर लपलेली राज्ये) वापर करून देखील अंदाज लावते. EAGLE चा गैरफायदा म्हणजे सानुकूल, लहान ड्राफ्ट मॉडेल्सना प्रशिक्षित करण्याची आवश्यकता जी कमी लेटेंसी बजेटमध्ये योग्य उमेदवार तयार करण्यासाठी sufficiently अचूक असतात. साधारणपणे, ड्राफ्ट मॉडेल हे मूळ मॉडेलच्या डिकोडर लेयरसारखीच एक ट्रान्सफॉर्मर लेयर असते, जी त्याच्या एम्बेडिंग्स आणि lm_head प्रोजेक्शन्सशी जोडून टारगेटशी घट्ट जोडलेली असते. यासाठी कमी केव्ही कॅशे क्षमतेची आवश्यकता असल्याने, EAGLE कडे कमी मेमरी फूटप्रिंट असते.
टारगेट मॉडेलमधील ट्री-सारख्या सिक्वेन्सची पडताळणी करण्यासाठी, सानुकूल अटेंशन मास्क वापरले जावे लागतात. दुर्दैवाने, संपूर्ण सिक्वेन्ससाठी सानुकूल अटेंशन मास्क वापरल्याने वास्तविक इनपुट लांबीसाठी अटेंशन लक्षणीयरीत्या मंद होते (५०% पर्यंत), ज्यामुळे स्पेक्युलेटिव्हेशनद्वारे साध्य होणारा वेग काही प्रमाणात कमी होतो. या कारणामुळे आम्ही अजून पूर्ण ट्री एक्सप्लोरेशन प्रॉडक्शनमध्ये तैनात केलेले नाही, त्याऐवजी DeepSeek-V3 टेक्निकल रिपोर्टमध्ये प्रस्तुत केलेल्या MTP-सारख्या योजनांद्वारे सिंगल-टोकन प्रेडिक्शनच्या विशेष प्रकरणावर लक्ष केंद्रित केले आहे.
MTP
अंदाजासाठी टोकन्ससह लपलेली राज्ये (hidden states) वापरल्या जाण्याव्यतिरिक्त, ही योजना ड्राफ्ट-टारगेट डिकोडिंग सारखीच आहे. नियमित ड्राफ्ट-टारगेट स्पेक्युलेटिव्हेशनच्या तुलनेत प्रीफिल आणि डिकोड या दोन्ही टप्प्यांमध्ये थोडे अधिक काम करावे लागेल. ड्राफ्ट मॉडेल टोकन्स आणि लपलेली राज्ये दोन्ही वापरते: टोकन t_{i+1} हे टोकन t_i शी संबंधित लॉजिट्स L_i मधून सॅम्पल केले जाते, जे बदलेत लपलेली राज्ये H_i मधून प्राप्त होतात. परिणामी, इनपुट टोकन बफर टारगेटद्वारे आउटपुट केलेल्या लपलेल्या राज्यांच्या व्हेक्टरच्या सापेक्ष डावीकडे एक पाउस (step) सरकवले जाणे आवश्यक आहे. खालील आकृती प्रशिक्षणासाठी वापरलेले पत्रव्यवहार, तसेच इन्फरन्स दरम्यानचा शिफ्टचिन्हित करते.
डिकोडिंग प्रवाह ड्राफ्ट-टारगेट डिकोडिंगसारखाच आहे, ज्यामध्ये लपलेली राज्ये आणि लॉजिट्स दोन्ही पुढे नेले जातात. आमची अंमलबजावणी सर्व संबंधित सॅम्पलिंग आणि लॉजिट प्रोसेसिंग लॉजिट्स सामायिक करते, केवळ मॉडेल फॉरवर्ड इनव्होकेशनचे विशेषीकरण करते. जेव्हा एकाधिक टोकन्सचा अंदाज लावला जातो, तेव्हा ड्राफ्ट मॉडेल अंदाजासाठी ड्राफ्ट लपलेल्या राज्यांचा वापर करते, तसेच स्वतःच्या वैशिष्ट्यांच्या आधारावर केव्ही कॅशे एन्ट्रीज भरते. लांब पल्ल्यात, यामुळे अचूकता कमी होऊ शकते. त्यानंतर, टारगेट प्रेडिक्शनसाठी केव्ही कॅशे एन्ट्री भरण्यासाठी ड्राफ्ट मॉडेल चालवताना, आम्ही इनपुट म्हणून अधिक अचूक टारगेट लपलेली राज्ये घेऊन संपूर्ण सिक्वेन्सवर ते चालवतो. हे ड्राफ्ट मॉडेल्स लहान असल्यामुळे, अतिरिक्त टोकन्स प्रोसेस करण्याचा अतिरिक्त खर्च नगण्य असतो.
MTP हेड्सचे प्रशिक्षण
MTP चा फायदा घेण्यासाठी, आम्ही 8xH100 डिव्हाइसेससह एका नोडवर चालणाऱ्या, Perplexity च्या डेटासेटवर आमच्या फाईन-ट्यून केलेल्या मॉडेल्सशी जोडलेले MTP हेड्स प्रशिक्षित करण्यासाठी आवश्यक असलेले इन्फ्रास्ट्रक्चर तयार केले आहे. सुमारे एका दिवसात, आम्ही Llama-1B ते Llama-70B आणि DeepSeek V2-Lite पर्यंतच्या मॉडेल्ससाठी हेड्स तयार करू शकतो. मोठ्या मॉडेल्ससाठी, आम्ही फाईन-ट्यूनिंग प्रक्रियेदरम्यान तयार केलेल्या MTP हेड्सवर अवलंबून असतो.
MTP प्रशिक्षणाचे लक्ष्य टारगेटच्या लपलेल्या राज्यांतून आणि पुढील टोकन लॉजिट्स आणि टारगेटच्या लपलेल्या राज्यांतून एक्सट्रापोलेट केलेल्या ड्राफ्ट लपलेल्या राज्यांशी आणि लॉजिट्सशी जुळवून घेणे हे आहे. लपलेल्या राज्यांसाठी इन्फरन्स महाग असल्याने, प्रशिक्षणादरम्यान वापरण्यासाठी आम्ही टारगेट मॉडेलच्या आमच्या इन्फरन्स-ऑप्टिमाइझ केलेल्या अंमलबजावणीचा वापर करून ते प्री-कम्प्युट करतो. तथापि, इन्फरन्स MTP अंमलबजावणीची पडताळणी करण्यासाठी आणि परिणामांमध्ये अडथळा आणू नये म्हणून परिमाण किंवा ऑप्टिमायझेशनमुळे संख्यात्मक फरक पडत नाही याची खात्री करण्यासाठी, व्हॅलिडेशन लॉस आणि अचूकता अंदाजासाठी आम्ही टारगेट आणि ड्राफ्ट दोन्ही मॉडेल्सची इन्फरन्स अंमलबजावणी पूर्णपणे पुन्हा वापरतो.
मूळ पेपरमध्ये वापरलेल्या ShareGPT डेटासेटवरून मोठ्या नमुन्यांपर्यंत स्केल करताना, आम्हाला लक्षात आले की EAGLE पेपरमध्ये रेखांकित केलेली आणि लागू केलेली MTP हेड आर्किटेक्चर 70B-आकाराच्या मॉडेल्ससाठी प्रशिक्षित करण्यात अपयशी ठरली. ShareGPT मध्ये मोठ्या संख्येने लहान सिक्वेन्स होते, त्याच्या विपरीत आम्ही किंचित कमी संख्येने परंतु मोठ्या प्रमाणावर लांब प्रॉम्प्ट्सवर प्रशिक्षण देतो. मूळ EAGLE हेड्सची रचना विशिष्ट ट्रान्सफॉर्मरपेक्षा किंचित वेगळी असल्याने, आम्ही काढून टाकलेले काही RMS नॉर्मलायझेशन लेअर्स पुन्हा जोडले. यामुळे केवळ प्रशिक्षणाला अभिसरण (converge) करण्याची परवानगी मिळाली नाही, तर यामुळे काही टक्के पॉइंट्सनी हेड्सची अचूकता देखील वाढली.
लेयर नॉर्म्स केवळ प्रशिक्षणाला सुलभ करतात असे नाही, तर नॉर्म्स पुन्हा जोडणे देखील गणितीयदृष्ट्या सहज समजू शकते. MTP हेड्स टारगेट मॉडेलचे एम्बेडिंग्स आणि लॉजिट प्रोजेक्शन पुन्हा वापरतात, कारण ते आकारात मोठे असू शकतात (Llama 70B साठी सुमारे 2 GB). प्रशिक्षणादरम्यान, हे फ्रोजन केले जातात आणि अशी अपेक्षा असते की MTP लेयर मूळ मॉडेलच्या प्रोजेक्शन लेयरने प्रशिक्षणादरम्यान जे शिकले त्याच वेक्टर स्पेसमध्ये अंदाज एम्बेड करायला शिकते. नॉर्म्स काढून टाकल्याने, एकाच MLP कडून नॉर्म्सनंतरच्या MLP सारखेच कार्य शिकण्याची अपेक्षा केली जाते, ज्यामुळे ड्राफ्ट आणि टारगेट मॉडेल्सच्या लपलेल्या राज्यांमधील जुळणीत अडथळा येतो.
स्पेक्युलेटिव्ह डिकोडिंगसह इन्फरन्स
इन्फरन्स इंजिनमध्ये, इनपुट सिक्वेन्ससाठी टोकन्स जनरेट करण्यासाठी, त्यांना प्रथम वाजवी आकाराच्या बॅचेसमध्ये गटबद्ध करणे आवश्यक आहे, त्यानंतर पुढील टोकन्ससाठी KV कॅशेमध्ये पेज वाटप केले जाणे आवश्यक आहे. इनपुट टोकन्स आणि KV पेज माहिती नंतर मॉडेल चालवणाऱ्या सर्व समांतर रँक्सना प्रसारित केलेल्या बफरमध्ये पॅक केली जाते. शेवटी, मेटाडेटा GPU मेमरीमध्ये कॉपी केला जातो आणि ज्यामधूनपुढील टोकन सॅम्पल केले जाते ते लॉजिट्स तयार करण्यासाठी मॉडेल कार्यान्वित केले जाते.
काही अंमलबजावणीच्या विपरीत जे त्यांच्यामधील विनंत्यांचे ऑर्केस्ट्रेट करणारे रॅपरद्वारे ड्राफ्ट आणि टारगेट इन्फरन्स सर्व्हरला सैलपणे जोडतात, आमची टारगेट-ड्राफ्ट जोडी घट्ट जोडलेली असते आणि एकत्रितपणे जनरेशन पार पाडते. सर्व प्रकारच्या स्पेक्युलेटिव्ह डिकोडिंगसाठी मॉडेल्स दरम्यान बॅच शेड्युलिंग आणि KV पेज वाटप सामायिक केले जाते: हे मॉडेलला सर्वसमावेशक इन्फरन्स सर्व्हरशी जोडणारे लॉजिक एकरूप करते, कारण ते सर्व समान इंटरफेस उघड करतात.
Perplexity मधील इन्फरन्स रनटाईम FlashInferभोवती आकारला आहे, जे अटेंशन कर्नल कॉन्फिगर आणि शेड्यूल करण्यासाठी तयार करणे आवश्यक असलेला मेटाडेटा निर्धारित करते. बॅच तयार करणाऱ्या काही इनपुट सिक्वेन्स दिलेल्या, प्रीफिल, डिकोड किंवा पडताळणीसाठी, मध्यवर्ती बफर वाटप करण्यासाठी आणि अटेंशनमध्ये वापरलेले काही स्थिर बफर भरण्यासाठी CPU-साइड कार्य केले जाणे आवश्यक आहे. हे कार्य बॅच शेड्युलिंग आणि KV पेज वाटपाच्या खर्चाव्यतिरिक्त आहे, ज्यामुळे लेटन्सी देखील होते जी GPU वापरा जास्तीत जास्त करण्यासाठी लपवली जाणे आवश्यक आहे.
स्पेक्युलेटिव्हेशनशिवाय इन्फरन्ससाठी आम्ही CPU-साइड आणि GPU-side कार्य पूर्णपणे समांतर केले असताना, आम्हाला असे आढळले की स्पेक्युलेटिव्ह डिकोडिंगसाठी CPU-GPU संतुलन अधिक क्लिष्ट आहे. स्वीकारलेल्या टोकन्सची संख्या त्यानंतरच्या रनसाठी सिक्वेन्स लांबी निर्धारित करते, ज्यामुळे टाळण्यास कठीण असलेले GPU-to-CPU सिंक्रोनायझेशन पॉइंट निर्माण होते, या तथ्यावरून मुख्य आव्हान उद्भवते. CPU कामाची लेटेंसी सर्वोत्तम लपवण्यासाठी आम्ही वेगवेगळ्या शेड्युलिंग योजनांचा प्रयोग केला.
ड्राफ्ट-टारगेट शेड्यूल
टारगेट मॉडेलपेक्षा लहान असूनही, जेव्हा संपूर्ण LLM ड्राफ्ट म्हणून वापरला जातो, तेव्हा तो अजूनही GPU वर लक्षणीय लेटेंसी निर्माण करतो, ज्यामुळे महागडी CPU ऑपरेशन्स लपवण्यासाठी काही हेडरुम मिळते. लहान मॉडेल्सना टेन्सर पॅरॅलिझमचा फायदा होत नसल्यामुळे, टारगेट आणि ड्राफ्ट ज्या रँक्सवर शार्ड केलेले आहेत त्यांच्या संख्येत तफावत आहे. आमच्या अंमलबजावणीमध्ये, ड्राफ्ट मॉडेल फक्त TP गटाच्या लीडर रँकवर चालते.
पूर्वी सांगितल्याप्रमाणे, डिकोड चरण पुढील रनमध्ये लॉजिट्स पुढे नेतो. यामुळे आम्हाला ड्राफ्ट मॉडेलच्या एका अंमलबजावणीला CPU-side बॅच शेड्युलिंग कार्याशी आच्छादित (overlap) करण्याची अनुमती मिळते. बॅच एकत्र ठेवल्यानंतर, सॅम्पलर आणि ड्राफ्टचे वारंवार कॉल ड्राफ्ट टोकन्स तयार करतात. समांतरपणे, पडताळणीसाठी बॅच टारगेट मॉडेलसाठी एकत्र ठेवला जातो आणि समांतर कामगारांशी समक्रमित केला जातो. स्वीकृत सिक्वेन्स लांबी निर्धारित करण्यासाठी टारगेट लॉजिट्स सत्यापित आणि सॅम्पल केले जातात. या टप्प्यावर, त्यानंतरच्या सिक्वेन्स लांबी निर्धारित करण्यासाठी GPU-to-CPU सिंक्रोनायझेशन आवश्यक आहे. ड्राफ्ट मॉडेल केवळ लीडर नोडवर चालत असल्याने, त्याची बॅच अनुक्रमे सेट अप केली जाते आणि टारगेटने तयार केलेले अतिरिक्त टोकन त्याच्या KV कॅशे एन्ट्रीज भरण्यासाठी त्याची अंमलबजावणी सुरू केली जाते. सध्याच्या रनमध्ये या ड्राफ्ट रन द्वारे उत्पादित लॉजिट्सचा वापर त्यानंतरच्या रनमधील पहिला ड्राफ्ट टोकन सॅम्पल करण्यासाठी केला जाईल. सर्वांत महत्त्वाचे म्हणजे, ड्राफ्ट चालू असताना, पुढील बॅच शेड्यूल केली जाऊ शकते.
सिंगल टोकनसाठी MTP शेड्यूल
रनटाईम अद्याप Eagle-शैलीतील ड्राफ्ट ट्री एक्सप्लोरेशन प्रदान करत नसला तरी, एका ट्रान्सफॉर्मर डिकोडर लेयरच्या आकाराच्या मॉडेलद्वारे उत्पादित ड्राफ्ट टोकन्सच्या लिनियर सिक्वेन्सचा विचार करून, आम्ही या योजनेचे एक विशेष प्रकरण लागू केले. DeepSeek R1 च्या ओपन-सोर्स वजनाचा वापर करून ड्राफ्ट प्रेडिक्शनसाठी ही योजना वापरली जाऊ शकते. सिंगल टोकनचा अंदाज लावण्याचे उप-प्रकरण मनोरंजक आहे, कारण मोठे MTP लेअर्स त्यांच्या ओव्हरहेडला न्याय देण्यासाठी sufficiently उच्च स्वीकृती दर गाठतात.
MTP शेड्युलिंग काहीसे अधिक क्लिष्ट आहे, कारण ड्राफ्ट मॉडेल खूप वेगवान आहे, ज्यामुळे कमी CPU-side लेटेंसी लपते. याव्यतिरिक्त, ड्राफ्ट टारगेट मॉडेल सोबत शार्ड केला जातो, ज्यासाठी बॅच माहितीसाठी सामायिक मेमरी हस्तांतरण आवश्यक असते. मागील योजनेप्रमाणेच, बॅच माहिती हस्तांतरित करून आणि कॅरी-ओवर लॉजिट्समधून पहिले टोकन सॅम्पल करून रन सुरू होते. पुढे, टोकन्स सत्यापित करण्यासाठी टारगेट चालवले जाते, 2 * D टोकन्स प्रोसेस केले जातात, जिथे D डिकोड बॅच आकार आहे. InfiniBand सारख्या संथ इंटरकनेक्ट्सवर मिक्सचर-ऑफ-एक्सपर्ट्स (MoE) मॉडेल्समधील मायक्रो-बॅचिंगसाठी हे आदर्श आहे, कारण बॅच समान रीतीने दोन भागांमध्ये विभागली जाते. लॉजिट्स पडताळणीसाठी सॅम्पलरमध्ये पास केले जातात, तर टारगेटची लपलेली राज्ये पुढील ड्राफ्ट रनमध्ये पुढे जातात.
GPU वर अतिरिक्त कामाचे मर्यादित प्रमाण करून, आम्ही ड्राफ्ट सिक्वेन्स स्वीकारल्यानंतर CPU-to-GPU सिंक्रोनायझेशन टाळतो. टारगेटचे इनपुट टोकन्स सरकवल्यानंतर, एक कर्नल पुढील टारगेट टोकन्सना त्यांच्या संबंधित स्थानांवर प्लग करतो. त्यानंतर टारगेट सारख्याच बॅच माहितीसह ड्राफ्ट पुन्हा चालवला जातो, KV कॅशे एन्ट्रीज भरतो आणि पुढील रनसाठी लॉजिट्स आणि लपलेली राज्ये तयार करतो, जे टोकन्स स्वीकारले गेले नाहीत अशा टोकन्सवर काही अनावश्यक काम करतो. अशा परिस्थितीमध्ये, ड्राफ्ट मॉडेलच्या लहान आकारामुळे न वापरलेल्या कामाची लेटेंसी क्वचितच मोजता येते. ड्राफ्ट रनच्या समांतर, GPU कार्य समाप्त होण्याची प्रतीक्षा न करता, CPU वर सिक्वेन्स लांबी निर्धारित केली जाते आणि पुढील बॅचचे शेड्युलिंग सुरू केले जाते.
ड्राफ्ट लेयरमधील अतिरिक्त कामाचा ओव्हरहेड लक्ष वेधून घेत नाही, तथापि MLP लेअर्स अधिक समस्याप्रधान आहेत. टोकन्सच्या संख्येच्या बाजूने मॅट्रिक्स मल्टिप्लिकेशन इन्स्ट्रक्शन्स 64 च्या सीमेवर पॅड करत असल्याने, जर दुप्पट करण्यासाठी लक्षणीयरीत्या अधिक ब्लॉग्जची आवश्यकता नसेल, तर ओव्हरहेड लपवला जातो. लांब ड्राफ्ट सिक्वेन्ससाठी ओव्हरहेड अधिक महाग असतो आणि नियमित ड्राफ्ट-टारगेट मॉडेल्ससाठी वापरलेली योजना अधिक चांगली काम करते.
संदर्भ
स्पेक्युलेटिव्ह डिकोडिंगद्वारे ट्रान्सफॉर्मर्सवरून जलद इन्फरन्स
EAGLE: स्पेक्युलेटिव्ह सॅम्पलिंगला वैशिष्ट्य अनिश्चिततेचा पुनर्विचार करणे आवश्यक आहे
EAGLE-2: डायनॅमिक ड्राफ्ट ट्रीसह भाषा मॉडेल्सचे जलद इन्फरन्स
EAGLE-3: प्रशिक्षण-वेळ चाचणीद्वारे लार्ज लँग्वेज मॉडेल्सचे इन्फरन्स प्रवेग वाढवणे
Medusa: एकाधिक डिकोडिंग हेड्ससह साधी LLM इन्फरन्स प्रवेग फ्रेमवर्क
FlashInfer: LLM इन्फरन्स सर्व्हिंगसाठी कार्यक्षम आणि सानुकूल करण्यायोग्य अटेंशन इंजिन
उद्धरण
@online{perplexity2025AcceleratingSonarThroughSpeculation,
author = {{Perplexity} and Nandor Licker and Erin McKnight},
title = {{Accelerating Sonar through speculation}},
date = {2025-06-10},
url = {https://perplexity.coolkeypoint.com/hub/blog/accelerating-sonar-through-speculation}
}