मी Speculative Decoding चे बेंचमार्किंग केले — a = 3.5 पुरेसे नव्हते
Speculative Decoding (SD) एका साध्या गणिती नियमावर अवलंबून आहे: a > 1 + α + β
acceptance length (a) हे 1 अधिक compute ratio (α) आणि verification overhead (β) पेक्षा जास्त असणे आवश्यक आहे. जर असे झाले, तर SD यशस्वी होतो. अन्यथा, तो अपयशी ठरतो.
मी या सिद्धांताची एका प्रत्यक्ष मशीनवर चाचणी केली. मी 64GB RAM सह 12th Gen Intel CPU वापरला. मी एका लहान Qwen2.5-0.5B draft model ला एका मोठ्या Qwen2.5-1.5B target model सोबत जोडले.
निकाल आश्चर्यकारक होते. SD हे raw generation पेक्षा 49% ते 62% संथ होते.
कामाच्या स्वरूपानुसार acceptance length (a) मध्ये कसा बदल झाला ते खालीलप्रमाणे आहे:
• JSON (Structured): a = 3.50. draft model ने फॉरमॅटचे अचूक भाकीत केले. • Code (Semi-structured): a = 3.00. चांगले होते, पण नेमिंग पॅटर्नमध्ये (naming patterns) तफावत होती. • Story (Creative): a = 2.11. draft model ला शब्दांच्या निवडीमध्ये अडचण येत होती.
"a" ची किंमत जास्त असूनही, CPU वर SD अपयशी ठरला. का?
सर्वात मोठी समस्या 'zero-accept rate' ही होती. 15% ते 30% फेऱ्यांमध्ये (rounds) शून्य टोकन्स स्वीकारले गेले.
या फेऱ्यांमध्ये, draft model काम करते, target model त्याची पडताळणी करते, पण तुम्हाला काहीही नवीन मिळत नाही. एक टोकन मिळवण्यासाठी तुम्हाला दोन वेळा रन करावे लागते. यामुळे समान आउटपुटसाठी SD ची किंमत 2x ने वाढते.
यावरून हे स्पष्ट होते की SD हे GPU साठी केलेले ऑप्टिमायझेशन आहे.
GPU वर, draft model जवळजवळ मोफत असते. compute ratio (α) अत्यंत कमी असतो. CPU वर, draft model मेमरी बँडविड्थसाठी (memory bandwidth) स्पर्धा करते. ते मोफत नसते. त्यामुळे CPU वर ही असमानता (inequality) कोलमडते.
जर तुम्ही CPU वर SD वापरत असाल, तर तसे करू नका. आकडेवारी अनुकूल नाही.
तुमच्या deployments साठी महत्त्वाचे मुद्दे:
- स्वतःचे "a" मूल्य मोजा. विक्रेत्यांच्या दाव्यांवर विश्वास ठेवू नका.
- तुमच्या डेटाचे कामाच्या प्रकारानुसार विभाजन करा. Code आणि chat चे acceptance rates वेगवेगळे असतात.
- zero-accept rate वर लक्ष ठेवा. जास्त तफावत (variance) तुमची p99 latency खराब करते.
- SD चा वापर GPUs वर करा जिथे draft model चा खर्च किमान असतो.
सर्वोत्तम ऑप्टिमायझेशन म्हणजे ते कधी बंद करायचे हे माहित असणे.
Source: https://dev.to/zxpmail/i-benchmarked-speculative-decoding-a-35-wasnt-enough-1geb
Optional learning community: https://t.me/GyaanSetuAi
