ನಾನು 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% ರಷ್ಟು ನಿಧಾನವಾಗಿತ್ತು.

ಕಾರ್ಯದ (task) ಆಧಾರದ ಮೇಲೆ ಅಕ್ಸೆಪ್ಟೆನ್ಸ್ ಉದ್ದ (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% ರಷ್ಟು ಸುತ್ತುಗಳಲ್ಲಿ (rounds) ಶೂನ್ಯ ಟೋಕನ್‌ಗಳನ್ನು ಅಕ್ಸೆಪ್ಟ್ ಮಾಡಲಾಯಿತು.

ಈ ಸುತ್ತುಗಳಲ್ಲಿ, ಡ್ರಾಫ್ಟ್ ಮಾಡೆಲ್ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಟಾರ್ಗೆಟ್ ಮಾಡೆಲ್ ಅದನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ, ಆದರೆ ನಿಮಗೆ ಹೊಸದಾಗಿ ಏನೂ ಸಿಗುವುದಿಲ್ಲ. ಒಂದು ಟೋಕನ್ ಪಡೆಯಲು ನೀವು ಎರಡು ಬಾರಿ ರನ್ ಮಾಡಲು ಪಾವತಿಸಿದಂತೆ. ಇದು ಒಂದೇ ರೀತಿಯ ಔಟ್‌ಪುಟ್‌ಗಾಗಿ SD ವೆಚ್ಚವನ್ನು 2 ಪಟ್ಟು ಹೆಚ್ಚಿಸುತ್ತದೆ.

ಇದು SD ಏಕೆ GPU ಆಪ್ಟಿಮೈಸೇಶನ್ ಎಂಬುದನ್ನು ಎತ್ತಿ ತೋರಿಸುತ್ತದೆ.

GPU ಮೇಲೆ, ಡ್ರಾಫ್ಟ್ ಮಾಡೆಲ್ ಬಹುತೇಕ ಉಚಿತವಾಗಿರುತ್ತದೆ. ಕಂಪ್ಯೂಟ್ ರೇಶಿಯೋ (α) ಬಹಳ ಕಡಿಮೆ ಇರುತ್ತದೆ. ಆದರೆ CPU ಮೇಲೆ, ಡ್ರಾಫ್ಟ್ ಮಾಡೆಲ್ ಮೆಮೊರಿ ಬ್ಯಾಂಡ್‌ವಿಡ್ತ್ (memory bandwidth) ಗಾಗಿ ಸ್ಪರ್ಧಿಸುತ್ತದೆ. ಅದು ಉಚಿತವಲ್ಲ. ಹೀಗಾಗಿ CPU ಮೇಲೆ ಈ ಅಸಮಾನತೆ (inequality) ಕುಸಿದು ಬೀಳುತ್ತದೆ.

ನೀವು CPU ಮೇಲೆ SD ಬಳಸುತ್ತಿದ್ದರೆ, ಅದನ್ನು ಮಾಡಬೇಡಿ. ಅಂಕಿಅಂಶಗಳು ಹೊಂದಾಣಿಕೆಯಾಗುವುದಿಲ್ಲ.

ನಿಮ್ಮ ನಿಯೋಜನೆಗಳಿಗಾಗಿ (deployments) ಪ್ರಮುಖ ಅಂಶಗಳು:

  • ನಿಮ್ಮದೇ ಆದ "a" ಮೌಲ್ಯವನ್ನು ಅಳೆಯಿರಿ. ಮಾರಾಟಗಾರರ (vendor) ಹೇಳಿಕೆಗಳನ್ನು ನಂಬಬೇಡಿ.
  • ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಕಾರ್ಯದ ಪ್ರಕಾರ ವಿಂಗಡಿಸಿ. Code ಮತ್ತು chat ವಿಭಿನ್ನ ಅಕ್ಸೆಪ್ಟೆನ್ಸ್ ರೇಟ್‌ಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ.
  • ಜೀರೋ-ಅಕ್ಸೆಪ್ಟ್ ರೇಟ್ ಅನ್ನು ಗಮನಿಸಿ. ಹೆಚ್ಚಿನ ವ್ಯತ್ಯಾಸವು (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