Accélérer les modèles de langue avec le décodage spéculatif
Améliorer les temps de réponse pour les grands modèles de langage en utilisant une nouvelle approche adaptative.
― 12 min lire
Table des matières
- L'importance de la vitesse dans les LLMs
- Défis avec le décodage spéculatif
- Spéculation adaptative pour différentes charges
- Qu'est-ce que le goodput ?
- Performance à travers différentes tâches
- Le fonctionnement du décodage spéculatif
- Avantages et compromis
- Batching continu pour améliorer l'efficacité
- Évaluation de la latence et de la performance
- Résultats des expériences
- Optimisation du goodput pour une utilisation dans le monde réel
- Aller de l'avant avec le décodage spéculatif
- Conclusion
- Source originale
Réduire le temps qu'il faut pour obtenir des réponses des grands Modèles de langage (LLMs) est super important pour plein d'applis comme les chatbots et les assistants virtuels. Une méthode appelée Décodage spéculatif (SD) se démarque comme un bon moyen pour accélérer les choses. Au lieu de laisser le LLM créer tous les mots directement, le décodage spéculatif utilise des modèles plus rapides pour deviner ce que les Sorties pourraient être. Le LLM vérifie ensuite ces devinettes pour s'assurer qu'elles sont de bonne qualité.
Cependant, utiliser le décodage spéculatif dans des systèmes réels peut être compliqué. Dans certains cas, ça ne va pas plus vite quand le nombre de Demandes est élevé, ou si les devinettes ne sont pas précises. Au lieu de ça, ça peut rendre le temps de réponse plus long. Un autre défi, c'est qu'il n'y a pas de longueur standard pour les devinettes qui fonctionne dans différentes conditions.
Pour s'attaquer à ces problèmes, on a créé un système dynamique qui peut ajuster la longueur des devinettes en fonction d'une nouvelle mesure appelée goodput. Le goodput aide à identifier comment le système performe en mesurant les devinettes acceptées et la charge actuelle. On a découvert qu'utiliser ce système peut réduire le temps de demande moyen jusqu'à 3,2 fois par rapport aux méthodes de décodage traditionnelles à travers différents setups.
L'importance de la vitesse dans les LLMs
Quand on déploie des LLMs dans des services en ligne comme des moteurs de recherche ou des chatbots, la vitesse est cruciale. Le processus de génération des LLMs prend souvent du temps parce que chaque mot dépend des précédents, ce qui entraîne un rythme lent. Le décodage spéculatif essaie de réduire ce délai en utilisant des modèles plus légers et plus rapides pour deviner plusieurs sorties en même temps. Ça permet au modèle principal de vérifier ces devinettes toutes en même temps, au lieu de générer un mot à la fois.
Le décodage spéculatif peut réduire le lag pour deux raisons principales. D'abord, utiliser un modèle léger pour créer des devinettes initiales est beaucoup plus rapide que d'attendre que le modèle principal génère chaque mot. Ensuite, vérifier ces devinettes prend moins de temps que de générer un seul mot, ce qui pourrait aboutir à plusieurs mots créés en même temps si les devinettes sont justes.
Défis avec le décodage spéculatif
Bien que le décodage spéculatif montre du potentiel pour accélérer des demandes uniques, l'incorporer dans des systèmes qui gèrent beaucoup de demandes en même temps pose des défis. Les applis du monde réel regroupent souvent plusieurs demandes pour mieux utiliser les ressources GPU. Ici, le décodage spéculatif peut devenir inefficace, et dans certaines situations, ça pourrait même augmenter le temps de réponse.
Ce ralentissement se produit principalement à cause du travail supplémentaire nécessaire pour faire tourner les modèles proxy plus rapides et vérifier les devinettes qui pourraient ne pas être acceptées. Que cet effort supplémentaire aide à réduire le lag dépend de deux facteurs principaux : la précision des devinettes et la charge à laquelle le système est soumis.
Quand la plupart des devinettes sont acceptées, le décodage spéculatif peut offrir un gain de vitesse notable. Mais des taux d'acceptation bas peuvent mener à des efforts gaspillés. Dans ces situations, le modèle principal peut finir par faire la majeure partie du travail de toute façon, ce qui ralentirait les choses.
À mesure que le système approche de sa limite en gérant de nombreuses demandes, il devient crucial d'allouer les ressources efficacement. Dans des situations de forte demande, il est logique de se concentrer sur la génération traditionnelle plutôt que de deviner trop. De cette façon, les ressources sont utilisées efficacement, minimisant le calcul gaspillé.
Spéculation adaptative pour différentes charges
Idéalement, le décodage spéculatif devrait s'adapter automatiquement à l'état du système, un peu comme les services de streaming vidéo ajustent la qualité en fonction de la vitesse internet du spectateur. Quand les demandes sont faibles, le système peut se permettre de faire des devinettes larges, utilisant plus de puissance de calcul. Mais quand la demande est élevée, le système devrait limiter les devinettes pour économiser des ressources.
Malgré son potentiel, le décodage spéculatif n'a pas été appliqué efficacement dans des systèmes réels. Les études précédentes l'ont principalement testé avec une demande unique, et les travaux récents ont examiné des lots plus importants, mais généralement sur des modèles plus petits ou dans des environnements contrôlés.
Notre travail vise à intégrer le décodage spéculatif dans un système de service entièrement opérationnel appelé vLLM. En se concentrant sur la façon d'équilibrer les coûts de deviner contre la qualité, on a introduit le goodput comme un composant vital. Le goodput mesure combien de tokens le système peut créer par seconde, ne tenant compte que des tokens acceptés et vérifiés par le modèle principal.
Qu'est-ce que le goodput ?
Le goodput est essentiel pour comprendre l'efficacité du décodage spéculatif. Alors que le débit (throughput) reflète le nombre de tokens générés au fil du temps, le goodput regarde spécifiquement le taux de tokens acceptés. Cette différence est importante pour déterminer à quel point le système fonctionne bien et jusqu'où le décodage spéculatif peut être poussé.
Le goodput dépend de deux facteurs principaux : la précision des devinettes et la charge du système. Sous une forte charge, le goodput peut rendre la spéculation moins gaspilleuse. Par exemple, pendant les périodes de demande maximale, le goodput peut aider à arrêter complètement les devinettes pour s'assurer que les ressources ne soient pas gaspillées.
Quand les demandes sont plus faciles à prédire, le goodput permet au système d'augmenter sa plage de devinettes. De cette façon, il tire parti de la prévisibilité de certaines demandes, menant à une meilleure performance.
Pour appliquer le goodput efficacement, on doit estimer sans mesures directes. En prédisant la longueur des devinettes acceptées pour toutes les demandes simultanément, on peut choisir des longueurs appropriées basées sur le goodput. Un modèle simple permet d'estimer le temps d'exécution des lots, ce qui nous permet d'approcher le goodput.
En utilisant le goodput, on a développé un cadre dynamique de décodage spéculatif qui ajuste les longueurs de devinettes selon le goodput estimé. Cette approche flexible peut accueillir diverses méthodes de décodage spéculatif, comme celles utilisant des modèles préliminaires ou d'autres techniques comme la recherche de prompts.
Performance à travers différentes tâches
Pour toutes les méthodes de décodage spéculatif et les ensembles de données, notre système vise à assurer une performance améliorée sans perdre en qualité. L'objectif global est de réduire le lag d'une manière qui soit bénéfique pour les applis dans le monde réel.
Le système dynamique que l'on a construit intègre le décodage spéculatif dans un setup en ligne qui peut gérer le batching continu. En définissant le goodput et en l'employant dans la prise de décision, on vise à trouver la meilleure longueur pour les devinettes adaptées aux conditions actuelles du système.
Les tests effectués avec cinq modèles différents et diverses tâches ont montré une réduction allant jusqu'à 3,2 fois du temps de réponse moyen par rapport aux méthodes de décodage traditionnelles. Ce boost de performance est crucial pour rendre le décodage spéculatif viable dans des applications réelles.
Le fonctionnement du décodage spéculatif
Quand les demandes sont gérées, le décodage spéculatif permet au système de générer de nombreuses sorties potentielles en parallèle. À chaque étape, un modèle préliminaire léger propose une gamme de sorties candidates. Le modèle principal évalue ces sorties d'un coup.
Une seule étape peut mener à plusieurs sorties pour chaque demande, ce qui est un changement significatif. Par exemple, avec un modèle préliminaire suggérant plusieurs mots potentiels, le modèle principal peut vérifier ces devinettes plus efficacement, produisant des résultats plus rapidement que les méthodes traditionnelles.
Avantages et compromis
Le décodage spéculatif a deux avantages clés. D'abord, il ne modifie pas la façon dont le LLM principal génère des sorties ; il conserve la même qualité de sortie que les méthodes traditionnelles. Ensuite, son efficacité dépend largement de la précision et de l'efficacité du modèle préliminaire.
Historiquement, la recherche a cherché à améliorer l'exactitude du décodage spéculatif. Cela peut se faire grâce à des modèles qui utilisent des LLMs plus petits comme modèles préliminaires ou d'autres méthodes qui s'appuient sur les aspects du modèle principal.
Batching continu pour améliorer l'efficacité
Pour gérer efficacement plusieurs demandes en même temps, le batching continu aide à améliorer l'utilisation des GPU en traitant les demandes en temps réel. Au lieu de regrouper les demandes au départ, le batching continu permet de traiter les demandes complètes tout en en ajoutant de nouvelles.
Le décodage spéculatif peut optimiser ce processus en permettant la génération de plusieurs mots par demande dans chaque lot. En plaçant les sorties proposées dans un seul tour de vérification, ça peut améliorer la vitesse de manière significative.
Cependant, le décodage spéculatif seul ne peut pas toujours mener à une meilleure efficacité. À mesure que les taux de demande augmentent, le ralentissement qui en résulte souligne l'importance d'équilibrer le nombre de sorties proposées avec la capacité du système.
Évaluation de la latence et de la performance
On a effectué des évaluations approfondies de l'efficacité du décodage spéculatif dans différents scénarios. Nos analyses ont montré que le décodage spéculatif est le plus bénéfique lorsque les charges du système sont faibles. Cependant, sous des charges plus lourdes, cela peut parfois entraîner des temps de réponse plus longs que simplement traiter les demandes sans spéculation.
Le compromis entre la longueur des propositions de devinettes et le temps de réponse pratique crée un acte d'équilibre. Des longueurs de propositions plus élevées signifient potentiellement des réponses plus rapides, mais peuvent également entraîner un gaspillage de puissance de calcul.
Résultats des expériences
À travers diverses conditions, on a constaté que le décodage spéculatif est le plus efficace avec des ressources de calcul abondantes. Les modèles plus grands ont eu du mal sous des volumes de demandes élevés en raison des demandes de calcul accrues, ce qui est crucial à considérer pour l'implémentation dans des environnements de production.
La capacité de notre système à s'adapter à différentes demandes et conditions joue un rôle énorme dans son succès. En ajustant pour maintenir l'efficacité du système, l'objectif reste de garantir qu'il performe systématiquement mieux que les méthodes traditionnelles dans divers scénarios.
Optimisation du goodput pour une utilisation dans le monde réel
Le goodput mesure combien de tokens sont générés avec précision par unité de temps. Cela permet aux systèmes de s'ajuster dynamiquement aux règles de la charge environnementale actuelle. Sa force réside dans la direction de la spéculation basée sur les conditions de traitement en temps réel.
En termes pratiques, un goodput optimal peut maintenir la performance du système sous diverses charges. En testant à travers différents setups, on s'assure que notre système peut gérer des scénarios très variés, des taux de demande faibles aux demandes maximales, sans sacrifier la qualité du service.
Aller de l'avant avec le décodage spéculatif
L'avenir du décodage spéculatif semble prometteur avec des adaptations faites pour des applications réelles. En mettant en œuvre des méthodes adaptatives, on s'attend à maintenir la performance tout en réduisant les temps d'inférence de manière significative.
La capacité à utiliser des modèles de manière flexible-même en s'intégrant avec le décodage en arbre-renforce encore la place du décodage spéculatif dans le service des grands modèles de langage. La recherche et le développement continus vers des modèles plus efficaces amélioreront sans aucun doute les capacités de ce cadre.
Conclusion
En résumé, optimiser l'inférence pour les grands modèles de langage à travers le décodage spéculatif ouvre des possibilités excitantes. En utilisant un cadre dynamique informé par le goodput, on peut réduire significativement les temps de réponse tout en maintenant la qualité, ce qui en fait un outil essentiel pour gérer des plateformes en ligne à grande échelle. L'intégration continue de ces techniques avancées ouvrira la voie à de futurs développements dans les applications d'IA.
Titre: Optimizing Speculative Decoding for Serving Large Language Models Using Goodput
Résumé: Reducing the inference latency of large language models (LLMs) is crucial, and speculative decoding (SD) stands out as one of the most effective techniques. Rather than letting the LLM generate all tokens directly, speculative decoding employs effective proxies to predict potential outputs, which are then verified by the LLM without compromising the generation quality. Yet, deploying SD in real online LLM serving systems (with continuous batching) does not always yield improvement -- under higher request rates or low speculation accuracy, it paradoxically increases latency. Furthermore, there is no best speculation length work for all workloads under different system loads. Based on the observations, we develop a dynamic framework SmartSpec. SmartSpec dynamically determines the best speculation length for each request (from 0, i.e., no speculation, to many tokens) -- hence the associated speculative execution costs -- based on a new metric called goodput, which characterizes the current observed load of the entire system and the speculation accuracy. We show that SmartSpec consistently reduces average request latency by up to 3.2x compared to non-speculative decoding baselines across different sizes of target models, draft models, request rates, and datasets. Moreover, SmartSpec can be applied to different styles of speculative decoding, including traditional, model-based approaches as well as model-free methods like prompt lookup and tree-style decoding.
Auteurs: Xiaoxuan Liu, Cade Daniel, Langxiang Hu, Woosuk Kwon, Zhuohan Li, Xiangxi Mo, Alvin Cheung, Zhijie Deng, Ion Stoica, Hao Zhang
Dernière mise à jour: 2024-06-25 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2406.14066
Source PDF: https://arxiv.org/pdf/2406.14066
Licence: https://creativecommons.org/publicdomain/zero/1.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.