నేను 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 డ్రాఫ్ట్ మోడల్‌ను, ఒక పెద్ద Qwen2.5-1.5B టార్గెట్ మోడల్‌తో జత చేశాను.

ఫలితాలు ఆశ్చర్యకరంగా ఉన్నాయి. SD, సాధారణ జనరేషన్ (raw generation) కంటే 49% నుండి 62% వరకు నెమ్మదిగా ఉంది.

టాస్క్ ఆధారంగా అక్సెప్టెన్స్ లెంగ్త్ (a) ఎలా మారుతుందో ఇక్కడ చూడండి:

• JSON (Structured): a = 3.50. డ్రాఫ్ట్ మోడల్ ఫార్మాట్‌ను బాగా అంచనా వేసింది. • Code (Semi-structured): a = 3.00. బాగుంది, కానీ నేమింగ్ ప్యాటర్న్స్ (naming patterns) మారుతూ ఉన్నాయి. • Story (Creative): a = 2.11. డ్రాఫ్ట్ మోడల్ పదాల ఎంపికలో ఇబ్బంది పడింది.

"a" ఎక్కువగా ఉన్నప్పటికీ, CPUపై SD విఫలమైంది. ఎందుకు?

అతిపెద్ద సమస్య 'జీరో-అక్సెప్ట్ రేట్' (zero-accept rate). 15% నుండి 30% రౌండ్లలో ఒక్క టోకెన్ కూడా అక్సెప్ట్ కాలేదు.

ఈ రౌండ్లలో, డ్రాఫ్ట్ మోడల్ పనిచేస్తుంది, టార్గెట్ మోడల్ వెరిఫై చేస్తుంది, కానీ మీకు కొత్తగా ఏమీ లభించదు. ఒక టోకెన్ కోసం మీరు రెండు సార్లు రన్ చేసినంత ఖర్చు చేశారు. దీనివల్ల అదే అవుట్‌పుట్ కోసం SD ఖర్చు 2 రెట్లు పెరుగుతుంది.

దీనివల్ల SD అనేది ఒక GPU ఆప్టిమైజేషన్ అని స్పష్టమవుతోంది.

GPUపై, డ్రాఫ్ట్ మోడల్ దాదాపు ఉచితం (free). కంప్యూట్ రేషియో (α) చాలా తక్కువగా ఉంటుంది. కానీ CPUపై, డ్రాఫ్ట్ మోడల్ మెమరీ బ్యాండ్‌విడ్త్ (memory bandwidth) కోసం పోటీ పడుతుంది. అది ఉచితం కాదు. దీనివల్ల CPUపై ఆ అసమానత (inequality) కుప్పకూలిపోతుంది.

మీరు CPUపై SDని ఉపయోగిస్తుంటే, చేయకండి. గణాంకాలు అనుకూలించవు.

మీ డిప్లాయ్‌మెంట్స్ (deployments) కోసం ముఖ్యమైన అంశాలు:

  • మీ స్వంత "a" విలువను కొలవండి. వెండర్ల (vendor) క్లెయిమ్స్‌ను నమ్మకండి.
  • మీ డేటాను టాస్క్ రకాన్ని బట్టి విభజించండి. కోడ్ మరియు చాట్‌లకు వేర్వేరు అక్సెప్టెన్స్ రేట్లు ఉంటాయి.
  • జీరో-అక్సెప్ట్ రేట్‌ను గమనించండి. ఎక్కువ వేరియెన్స్ (variance) మీ p99 లేటెన్సీని (latency) దెబ్బతీస్తుంది.
  • డ్రాఫ్ట్ మోడల్ ఖర్చు కనిష్టంగా ఉండే GPUలపై మాత్రమే SDని ఉపయోగించండి.

దాన్ని ఎప్పుడు ఆపివేయాలి అని తెలుసుకోవడమే ఉత్తమమైన ఆప్టిమైజేషన్.

Source: https://dev.to/zxpmail/i-benchmarked-speculative-decoding-a-35-wasnt-enough-1geb

Optional learning community: https://t.me/GyaanSetuAi