J'ai testé les performances du Speculative Decoding — a = 3,5 n'était pas suffisant
Le Speculative Decoding (SD) repose sur une règle mathématique simple : a > 1 + α + β
La longueur d'acceptation (a) doit être supérieure à 1 plus le ratio de calcul (α) et le surcoût de vérification (β). Si c'est le cas, le SD l'emporte. Sinon, il échoue.
J'ai testé cette théorie sur une machine réelle. J'ai utilisé un processeur Intel de 12e génération avec 64 Go de RAM. J'ai couplé un petit modèle draft Qwen2.5-0.5B avec un modèle cible plus large Qwen2.5-1.5B.
Les résultats ont été surprenants. Le SD était de 49 % à 62 % plus lent que la génération brute.
Voici comment la longueur d'acceptation (a) variait selon la tâche :
• JSON (structuré) : a = 3,50. Le modèle draft a bien prédit le format. • Code (semi-structuré) : a = 3,00. Bon, mais les modèles de nommage variaient. • Histoire (créatif) : a = 2,11. Le modèle draft a eu du mal avec le choix des mots.
Même lorsque « a » était élevé, le SD a échoué sur le CPU. Pourquoi ?
Le problème majeur était le taux d'acceptation zéro. Entre 15 % et 30 % des cycles n'ont accepté aucun token.
Dans ces cycles, le modèle draft travaille, le modèle cible vérifie, et vous n'obtenez rien de nouveau. Vous avez payé pour deux exécutions pour n'obtenir qu'un seul token. Cela rend le SD deux fois plus coûteux pour un même résultat.
Cela souligne pourquoi le SD est une optimisation pour GPU.
Sur un GPU, le modèle draft est presque gratuit. Le ratio de calcul (α) est minuscule. Sur un CPU, le modèle draft entre en compétition pour la bande passante mémoire. Il n'est pas gratuit. L'inégalité s'effondre sur CPU.
Si vous utilisez le SD sur un CPU, ne le faites pas. Les chiffres ne sont pas favorables.
Points clés à retenir pour vos déploiements :
- Mesurez votre propre valeur « a ». Ne faites pas confiance aux affirmations des fournisseurs.
- Segmentez vos données par type de tâche. Le code et le chat ont des taux d'acceptation différents.
- Surveillez le taux d'acceptation zéro. Une variance élevée ruine votre latence p99.
- Utilisez le SD sur des GPU où le coût du modèle draft est minimal.
La meilleure optimisation consiste à savoir quand le désactiver.
Source : https://dev.to/zxpmail/i-benchmarked-speculative-decoding-a-35-wasnt-enough-1geb
Communauté d'apprentissage optionnelle : https://t.me/GyaanSetuAi
