मैंने Speculative Decoding का बेंचमार्क किया — a = 3.5 काफी नहीं था
Speculative Decoding (SD) एक सरल गणितीय नियम पर आधारित है: a > 1 + α + β
एक्सेप्टेंस लेंथ (a) को 1 प्लस कंप्यूट रेशियो (α) और वेरिफिकेशन ओवरहेड (β) से अधिक होना चाहिए। यदि ऐसा होता है, तो SD सफल होता है। अन्यथा, यह विफल हो जाता है।
मैंने एक वास्तविक मशीन पर इस सिद्धांत का परीक्षण किया। मैंने 64GB RAM वाले 12th Gen Intel CPU का उपयोग किया। मैंने एक छोटे Qwen2.5-0.5B ड्राफ्ट मॉडल को एक बड़े Qwen2.5-1.5B टारगेट मॉडल के साथ जोड़ा।
परिणाम आश्चर्यजनक थे। SD, रॉ जनरेशन (raw generation) की तुलना में 49% से 62% धीमा था।
यहाँ बताया गया है कि कार्य (task) के अनुसार एक्सेप्टेंस लेंथ (a) कैसे भिन्न हुई:
• JSON (Structured): a = 3.50. ड्राफ्ट मॉडल ने फॉर्मेट का सही अनुमान लगाया। • Code (Semi-structured): a = 3.00. अच्छा था, लेकिन नेमिंग पैटर्न अलग-अलग थे। • Story (Creative): a = 2.11. ड्राफ्ट मॉडल को शब्दों के चयन में कठिनाई हुई।
"a" अधिक होने पर भी, CPU पर SD विफल रहा। क्यों?
सबसे बड़ी समस्या 'जीरो-एक्सेप्ट रेट' (zero-accept rate) थी। 15% से 30% राउंड्स में शून्य टोकन स्वीकार किए गए।
इन राउंड्स में, ड्राफ्ट मॉडल काम करता है, टारगेट मॉडल वेरिफिकेशन करता है, और आपको कुछ भी नया नहीं मिलता। आपने एक टोकन पाने के लिए दो रन का भुगतान किया। यह समान आउटपुट के लिए SD की लागत को 2 गुना बढ़ा देता है।
यह इस बात पर प्रकाश डालता है कि SD एक GPU ऑप्टिमाइज़ेशन क्यों है।
GPU पर, ड्राफ्ट मॉडल लगभग मुफ्त होता है। कंप्यूट रेशियो (α) बहुत कम होता है। CPU पर, ड्राफ्ट मॉडल मेमोरी बैंडविड्थ के लिए प्रतिस्पर्धा करता है। यह मुफ्त नहीं है। CPU पर यह असमानता (inequality) विफल हो जाती है।
यदि आप CPU पर SD का उपयोग करते हैं, तो ऐसा न करें। आंकड़े काम नहीं करते।
आपके डिप्लॉयमेंट के लिए मुख्य बातें:
- अपने स्वयं के "a" मान को मापें। वेंडर के दावों पर भरोसा न करें।
- अपने डेटा को टास्क टाइप के आधार पर विभाजित करें। कोड और चैट के एक्सेप्टेंस रेट अलग-अलग होते हैं।
- जीरो-एक्सेप्ट रेट पर नज़र रखें। उच्च भिन्नता (high variance) आपकी p99 लेटेंसी को खराब कर देती है।
- SD का उपयोग GPU पर करें जहाँ ड्राफ्ट मॉडल की लागत न्यूनतम हो।
सबसे अच्छा ऑप्टिमाइज़ेशन यह जानना है कि इसे कब बंद करना है।
स्रोत: https://dev.to/zxpmail/i-benchmarked-speculative-decoding-a-35-wasnt-enough-1geb
वैकल्पिक लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi
