ਮੈਂ 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% ਤੱਕ ਹੌਲੀ ਸੀ।

ਇੱਥੇ ਦੇਖੋ ਕਿ ਕੰਮ (task) ਦੇ ਅਨੁਸਾਰ 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% ਰවුන්ਡਾਂ ਵਿੱਚ ਜ਼ੀਰੋ (zero) tokens ਸਵੀਕਾਰ ਕੀਤੇ ਗਏ।

ਇਹਨਾਂ ਰੌਂਡਾਂ ਵਿੱਚ, draft model ਕੰਮ ਕਰਦਾ ਹੈ, target model ਵੈਰੀਫਾਈ ਕਰਦਾ ਹੈ, ਅਤੇ ਤੁਹਾਨੂੰ ਕੁਝ ਵੀ ਨਵਾਂ ਨਹੀਂ ਮਿਲਦਾ। ਤੁਸੀਂ ਇੱਕ ਟੋਕਨ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਦੋ ਰਨਾਂ ਦੀ ਕੀਮਤ ਅਦਾ ਕੀਤੀ। ਇਹ ਇੱਕੋ ਜਿਹੇ ਆਉਟਪੁੱਟ ਲਈ SD ਦੀ ਲਾਗਤ ਨੂੰ 2 ਗੁਣਾ ਵਧਾ ਦਿੰਦਾ ਹੈ।

ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ SD ਇੱਕ GPU optimization ਕਿਉਂ ਹੈ।

GPU 'ਤੇ, draft model ਲਗਭਗ ਮੁਫ਼ਤ ਹੁੰਦਾ ਹੈ। Compute ratio (α) ਬਹੁਤ ਘੱਟ ਹੁੰਦਾ ਹੈ। CPU 'ਤੇ, draft model memory bandwidth ਲਈ ਮੁਕਾਬਲਾ ਕਰਦਾ ਹੈ। ਇਹ ਮੁਫ਼ਤ ਨਹੀਂ ਹੈ। CPU 'ਤੇ ਇਹ ਅਸਮਾਨਤਾ (inequality) ਟੁੱਟ ਜਾਂਦੀ ਹੈ।

ਜੇਕਰ ਤੁਸੀਂ CPU 'ਤੇ SD ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਅਜਿਹਾ ਨਾ ਕਰੋ। ਅੰਕੜੇ ਸਹੀ ਨਹੀਂ ਬੈਠਦੇ।

ਤੁਹਾਡੇ ਡਿਪਲਾਈਮੈਂਟਸ (deployments) ਲਈ ਮੁੱਖ ਗੱਲਾਂ:

  • ਆਪਣੀ "a" value ਨੂੰ ਖੁਦ ਮਾਪੋ। ਵੈਂਡਰਾਂ (vendor) ਦੇ ਦਾਅਵਿਆਂ 'ਤੇ ਭਰੋਸਾ ਨਾ ਕਰੋ।
  • ਆਪਣੇ ਡੇਟਾ ਨੂੰ task type ਦੇ ਅਨੁਸਾਰ ਵੰਡੋ। Code ਅਤੇ chat ਦੀ acceptance rate ਵੱਖ-ਵੱਖ ਹੁੰਦੀ ਹੈ।
  • Zero-accept rate 'ਤੇ ਨਜ਼ਰ ਰੱਖੋ। ਉੱਚ ਵੈਰੀਐਂਸ (high variance) ਤੁਹਾਡੀ p99 latency ਨੂੰ ਖਰਾਬ ਕਰ ਦਿੰਦਾ ਹੈ।
  • SD ਦੀ ਵਰਤੋਂ GPU 'ਤੇ ਕਰੋ ਜਿੱਥੇ draft model ਦੀ ਲਾਗਤ ਨਿਗੁਣੀ ਹੋਵੇ।

ਸਭ ਤੋਂ ਵਧੀਆ ਆਪਟੀਮਾਈਜ਼ੇਸ਼ਨ ਇਹ ਜਾਣਨਾ ਹੈ ਕਿ ਇਸਨੂੰ ਕਦੋਂ ਬੰਦ ਕਰਨਾ ਹੈ।

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

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